blob: 331bd254aee24ac7b13ac0c2e0452478e7f6737e [file] [log] [blame]
# Set up coverage analysis
#-----------------------------------------------------------------------------#
# if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new("1.9")
# if ENV['CI'] || ENV['GENERATE_COVERAGE']
# require 'simplecov'
# require 'coveralls'
#
# if ENV['CI']
# SimpleCov.formatter = Coveralls::SimpleCov::Formatter
# elsif ENV['GENERATE_COVERAGE']
# SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
# end
# SimpleCov.start do
# add_filter "/spec_helper/"
# end
# end
# end
# Set up
#-----------------------------------------------------------------------------#
require 'rubygems'
require 'bundler/setup'
require 'bacon'
require 'mocha-on-bacon'
require 'pretty_bacon'
require 'pathname'
require 'active_support/core_ext/string/strip'
require 'active_support/core_ext/object/deep_dup'
ROOT = Pathname.new(File.expand_path('../../', __FILE__))
$:.unshift((ROOT + 'lib').to_s)
$:.unshift((ROOT + 'spec').to_s)
require 'cocoapods'
require 'claide'
# require 'awesome_print'
require 'spec_helper/command' # Allows to run Pod commands and returns their output.
require 'spec_helper/fixture' # Provides access to the fixtures and unpacks them if needed.
require 'spec_helper/temporary_repos' # Allows to create and modify temporary spec repositories.
require 'spec_helper/temporary_cache' # Allows to create temporary cache directory.
require 'spec_helper/user_interface' # Redirects UI to UI.output & UI.warnings.
require 'spec_helper/pre_flight' # Cleans the temporary directory, the config & the UI.output before every test.
require 'spec_helper/webmock' # Cleans up mocks after each spec
#-----------------------------------------------------------------------------#
# README!
#
# Override {Specification#source} to return sources from fixtures and limit
# network connections.
#
module Pod
class Specification
alias_method :original_source, :source
def source
fixture = SpecHelper.fixture("integration/#{name}")
result = super
if fixture.exist?
# puts "Using fixture [#{name}]"
result[:git] = fixture.to_s
end
result
end
end
end
#-----------------------------------------------------------------------------#
ENV['SKIP_SETUP'] = 'true'
if ENV['SKIP_XCODEBUILD'].nil? && Pod::Executable.which('xcodebuild').nil?
ENV['SKIP_XCODEBUILD'] = 'true'
end
Bacon.summary_at_exit
module Bacon
class Context
include Pod::Config::Mixin
include SpecHelper::Fixture
include SpecHelper::Command
def skip_xcodebuild?
ENV['SKIP_XCODEBUILD']
end
def temporary_directory
SpecHelper.temporary_directory
end
end
end
Mocha::Configuration.prevent(:stubbing_non_existent_method)
module SpecHelper
def self.temporary_directory
ROOT + 'tmp'
end
end
def temporary_sandbox
Pod::Sandbox.new(temporary_directory + 'Pods')
end
def fixture_spec(name)
file = SpecHelper::Fixture.fixture(name)
Pod::Specification.from_file(file)
end
def fixture_file_accessor(spec_or_name, platform = Pod::Platform.ios)
spec = spec_or_name.is_a?(Pod::Specification) ? spec_or_name : fixture_spec(spec_or_name)
path_list = Pod::Sandbox::PathList.new(spec.defined_in_file.dirname)
Pod::Sandbox::FileAccessor.new(path_list, spec.consumer(platform))
end
def fixture_target_definition(name = 'Pods', platform = Pod::Platform.ios)
platform_hash = { platform.symbolic_name => platform.deployment_target }
parent = Pod::Podfile.new
Pod::Podfile::TargetDefinition.new(name, parent,
'abstract' => false,
'name' => name,
'platform' => platform_hash)
end
def fixture_pod_target(spec_or_name, target_definitions = [])
spec = spec_or_name.is_a?(Pod::Specification) ? spec_or_name : fixture_spec(spec_or_name)
fixture_pod_target_with_specs([spec], target_definitions)
end
def fixture_pod_target_with_specs(specs, target_definitions = [])
target_definitions << fixture_target_definition if target_definitions.empty?
target_definitions.each { |td| specs.each { |spec| td.store_pod(spec.name) } }
Pod::PodTarget.new(specs, target_definitions, config.sandbox).tap do |pod_target|
specs.each do |spec|
pod_target.file_accessors << fixture_file_accessor(spec, pod_target.platform)
consumer = spec.consumer(pod_target.platform)
pod_target.spec_consumers << consumer
end
end
end
def fixture_aggregate_target(pod_targets = [], target_definition = nil)
target_definition ||= pod_targets.flat_map(&:target_definitions).first || fixture_target_definition
target = Pod::AggregateTarget.new(target_definition, config.sandbox)
target.client_root = config.sandbox.root.dirname
target.pod_targets = pod_targets
target
end
#-----------------------------------------------------------------------------#
SpecHelper::Fixture.fixture('banana-lib') # ensure it exists
SpecHelper::Fixture.fixture('orange-framework')