require File.expand_path('../../../spec_helper', __FILE__) module Pod describe GDBuilder do describe 'In general' do before do @spec = Specification.from_file('spec/fixtures/Builder.podspec') @static_sandbox_dir = temporary_directory + 'Pods' @installer = stub('Installer', :pod_targets => []) @builder = GDBuilder.new(Platform.new(:ios), @installer, nil, @static_sandbox_dir, nil, @spec, nil, nil, nil, nil, nil, nil) end it 'copies the license file if it exists' do path = @static_sandbox_dir + 'Builder/LICENSE.md' path.dirname.mkpath File.open(path, 'w') { |f| f.puts 'Permission is granted...' } @spec.stubs(:license).returns({ :file => 'LICENSE.md'}) FileUtils.expects(:cp).with(path, '.') @builder.send(:copy_license) FileUtils.rm_rf(path.dirname) end end describe 'Xcodebuild command' do describe 'compiler flags' do before do @spec = Specification.from_file('spec/fixtures/Builder.podspec') @installer = stub('Installer', :pod_targets => []) end it "includes proper compiler flags for iOS" do @builder = GDBuilder.new(Platform.new(:ios), @installer, nil, nil, nil, @spec, nil, nil, nil, nil, nil, nil) @builder.expects(:xcodebuild).with("GCC_PREPROCESSOR_DEFINITIONS='$(inherited) PodsDummy_Pods_Builder=PodsDummy_PodGd_Builder' -DBASE_FLAG -DIOS_FLAG", "ARCHS='x86_64 i386 arm64 armv7 armv7s' OTHER_CFLAGS='-fembed-bitcode -Qunused-arguments'").returns(nil) @builder.send(:compile) end it "includes proper compiler flags for OSX" do @builder = GDBuilder.new(Platform.new(:osx), @installer, nil, nil, nil, @spec, nil, nil, nil, nil, nil, nil) @builder.expects(:xcodebuild).with("GCC_PREPROCESSOR_DEFINITIONS='$(inherited) PodsDummy_Pods_Builder=PodsDummy_PodGd_Builder' -DBASE_FLAG -DOSX_FLAG", nil).returns(nil) @builder.send(:compile) end end describe 'on build failure' do before do @spec = Specification.from_file('spec/fixtures/Builder.podspec') @installer = stub('Installer', :pod_targets => []) @builder = GDBuilder.new(Platform.new(:ios), @installer, nil, nil, nil, @spec, nil, nil, nil, nil, nil, nil) end it 'dumps report and terminates' do UI::BuildFailedReport.expects(:report).returns(nil) should.raise SystemExit do # TODO: check that it dumps report @builder.send(:compile) end end end end end end