class XCTasks::TestTask

Attributes

config[R]
destination[R]
namespace_name[R]
prepare_dependency[R]
subtasks[R]

Public Class Methods

new(namespace_name = :test) { |self| ... } click to toggle source
# File lib/xctasks/test_task.rb, line 304
def initialize(namespace_name = :test)
  @namespace_name = namespace_name
  @config = Configuration.new
  @subtasks = []
  @destination
  @namespace_name = namespace_name.kind_of?(Hash) ? namespace_name.keys.first : namespace_name
  @prepare_dependency = namespace_name.kind_of?(Hash) ? namespace_name.values.first : nil

  yield self if block_given?
  raise ConfigurationError, "A workspace or project must be configured" unless workspace || project
  raise ConfigurationError, "At least one subtask must be configured" if subtasks.empty?
  define_rake_tasks
end

Public Instance Methods

define_rake_tasks() click to toggle source
# File lib/xctasks/test_task.rb, line 349
def define_rake_tasks
  namespace self.namespace_name do
    task (prepare_dependency ? { prepare: prepare_dependency} : :prepare ) do
      if workspace
        fail "No such workspace: #{workspace}" unless File.exists?(workspace)
      else
        fail "No such project: #{project}" unless File.exists?(project)
      end

      fail "Invalid schemes directory: #{schemes_dir}" unless schemes_dir.nil? || File.exists?(schemes_dir)
      File.truncate(output_log, 0) if output_log && File.exists?(output_log)
      if schemes_dir
        FileUtils::Verbose.mkdir_p "#{workspace || project}/xcshareddata/xcschemes"
        FileUtils::Verbose.cp Dir.glob("#{schemes_dir}/*.xcscheme"), "#{workspace || project}/xcshareddata/xcschemes"
      end
      subtasks.each { |subtask| subtask.prepare }
    end

    subtasks.each { |subtask| subtask.define_rake_tasks }
  end

  subtask_names = subtasks.map { |subtask| subtask.name }
  desc "Run all tests (#{subtask_names.join(', ')})"
  task namespace_name => subtask_names.map { |subtask_name| "#{namespace_name}:#{subtask_name}" } do
    XCTasks::TestReport.instance.report
  end
end
subtask(name_options) { |subtask| ... } click to toggle source
# File lib/xctasks/test_task.rb, line 326
def subtask(name_options)
  subtask = Subtask.new(name_options, config)
  yield subtask if block_given?
  if @destination
    subtask.destination @destination
  end
  @subtasks << subtask
end
subtasks=(subtasks) click to toggle source
# File lib/xctasks/test_task.rb, line 318
def subtasks=(subtasks)
  if subtasks.kind_of?(Hash)
    subtasks.each { |name, scheme| subtask(name => scheme) }
  else
    raise ArgumentError, "Cannot assign subtasks from a #{subtasks.class}"
  end
end