Created
January 22, 2013 12:25
-
-
Save PaulTaykalo/4594257 to your computer and use it in GitHub Desktop.
Cedar RakeFile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PROJECT_NAME = "CedarExample" | |
CONFIGURATION = "Release" | |
WORKSPACE_NAME = "CedarExample" | |
SCHEME_NAME = "CedarExampleTests" | |
SPECS_TARGET_NAME = "CedarExampleTests" | |
SDK_VERSION = "6.0" | |
#-================------------------------------------------------------------------------------------------ | |
PROJECT_ROOT = File.dirname(__FILE__) | |
BUILD_DIR = File.join(PROJECT_ROOT, "cintegration", "output") | |
def sdk_dir | |
"#{xcode_developer_dir}/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator#{SDK_VERSION}.sdk" | |
end | |
# Xcode 4.3 stores its /Developer inside /Applications/Xcode.app, Xcode 4.2 stored it in /Developer | |
def xcode_developer_dir | |
`xcode-select -print-path`.strip | |
end | |
def build_dir(effective_platform_name) | |
File.join(BUILD_DIR, CONFIGURATION + effective_platform_name) | |
end | |
def system_or_exit(cmd, stdout = nil) | |
puts "Executing #{cmd}" | |
cmd += " >#{stdout}" if stdout | |
system(cmd) or raise "******** Build failed ********" | |
end | |
def with_env_vars(env_vars) | |
old_values = {} | |
env_vars.each do |key,new_value| | |
old_values[key] = ENV[key] | |
ENV[key] = new_value | |
end | |
yield | |
env_vars.each_key do |key| | |
ENV[key] = old_values[key] | |
end | |
end | |
def output_file(target) | |
output_dir = if ENV['IS_CI_BOX'] | |
ENV['CC_BUILD_ARTIFACTS'] | |
else | |
FileUtils.mkdir_p(BUILD_DIR) unless File.exists?(BUILD_DIR) | |
BUILD_DIR | |
end | |
output_file = File.join(output_dir, "#{target}.output") | |
puts "Output: #{output_file}" | |
output_file | |
end | |
def kill_simulator | |
system %Q[killall -m -KILL "gdb"] | |
system %Q[killall -m -KILL "otest"] | |
system %Q[killall -m -KILL "iPhone Simulator"] | |
end | |
task :default => [:unittests] | |
desc "Clean all targets" | |
task :clean do | |
system_or_exit "rm -rf #{BUILD_DIR}/*", output_file("clean") | |
end | |
desc "Build UI specs" | |
task :build_unittests do | |
kill_simulator | |
system_or_exit "xcodebuild -workspace #{WORKSPACE_NAME}.xcworkspace -scheme #{SCHEME_NAME} -configuration #{CONFIGURATION} -sdk iphonesimulator6.0 build SYMROOT=#{BUILD_DIR} GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS CEDAR_KNOWS_SOMETHING_ABOUT_FAILING_ON_IOS6_SIMULATOR=1'", output_file("uispecs") | |
end | |
require 'tmpdir' | |
desc "Run UI specs" | |
task :unittests => :build_unittests do | |
env_vars = { | |
"DYLD_ROOT_PATH" => sdk_dir, | |
"IPHONE_SIMULATOR_ROOT" => sdk_dir, | |
"CFFIXED_USER_HOME" => Dir.tmpdir, | |
"CEDAR_HEADLESS_SPECS" => "1", | |
"CEDAR_REPORTER_CLASS" => "CDRColorizedReporter,CDRJUnitXMLReporter", | |
"DYLD_FALLBACK_LIBRARY_PATH" => sdk_dir, | |
"CEDAR_JUNIT_XML_FILE" => "#{File.join(BUILD_DIR, "tests-output.xml")}", | |
} | |
puts "env_vars #{env_vars}" | |
with_env_vars(env_vars) do | |
system_or_exit "#{File.join(build_dir("-iphonesimulator"), "#{SPECS_TARGET_NAME}.app", SPECS_TARGET_NAME)} -RegisterForSystemEvents"; | |
#system_or_exit "lldb -- #{File.join(build_dir("-iphonesimulator"), "#{SPECS_TARGET_NAME}.app", SPECS_TARGET_NAME)} -RegisterForSystemEvents"; | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment