Skip to content

Instantly share code, notes, and snippets.

@PaulTaykalo
Created January 22, 2013 12:25
Show Gist options
  • Save PaulTaykalo/4594257 to your computer and use it in GitHub Desktop.
Save PaulTaykalo/4594257 to your computer and use it in GitHub Desktop.
Cedar RakeFile
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