vendor 0.0.4 → 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +22 -0
 - data/Gemfile.lock +9 -1
 - data/Guardfile +12 -0
 - data/LICENSE +2 -0
 - data/Readme.markdown +39 -23
 - data/TODO.md +26 -0
 - data/VERSION +1 -0
 - data/lib/vendor.rb +6 -0
 - data/lib/vendor/api.rb +61 -7
 - data/lib/vendor/cli/app.rb +4 -4
 - data/lib/vendor/cli/console.rb +7 -0
 - data/lib/vendor/spec.rb +98 -0
 - data/lib/vendor/templates/Vendorfile +3 -1
 - data/lib/vendor/templates/vendorspec +15 -10
 - data/lib/vendor/vendor_file.rb +5 -4
 - data/lib/vendor/vendor_file/dependency_graph.rb +135 -0
 - data/lib/vendor/vendor_file/dsl.rb +2 -0
 - data/lib/vendor/vendor_file/library/base.rb +178 -29
 - data/lib/vendor/vendor_file/library/git.rb +5 -1
 - data/lib/vendor/vendor_file/library/local.rb +11 -1
 - data/lib/vendor/vendor_file/library/remote.rb +134 -2
 - data/lib/vendor/vendor_file/loader.rb +13 -11
 - data/lib/vendor/vendor_spec/builder.rb +4 -7
 - data/lib/vendor/version.rb +172 -1
 - data/lib/vendor/xcode/project.rb +213 -4
 - data/lib/vendor/xcode/proxy.rb +1 -0
 - data/lib/vendor/xcode/proxy/pbx_frameworks_build_phase.rb +6 -0
 - data/lib/vendor/xcode/proxy/pbx_reference_proxy.rb +7 -0
 - data/lib/vendor/xcode/proxy/pbx_resources_build_phase.rb +8 -0
 - data/lib/vendor/xcode/proxy/pbx_shell_script_build_phase.rb +8 -0
 - data/lib/vendor/xcode/proxy/pbx_sources_build_phase.rb +6 -0
 - data/spec/lib/vendor/api_spec.rb +54 -0
 - data/spec/lib/vendor/spec_spec.rb +121 -0
 - data/spec/lib/vendor/vendor_file/dependency_graph_spec.rb +129 -0
 - data/spec/lib/vendor/vendor_file/library/base_spec.rb +174 -14
 - data/spec/lib/vendor/vendor_file/library/remote_spec.rb +154 -4
 - data/spec/lib/vendor/vendor_file/loader_spec.rb +4 -2
 - data/spec/lib/vendor/vendor_spec/builder_spec.rb +2 -2
 - data/spec/lib/vendor/version_spec.rb +168 -0
 - data/spec/lib/vendor/xcode/project_spec.rb +175 -4
 - data/spec/lib/vendor_spec.rb +15 -0
 - data/spec/spec_helper.rb +3 -2
 - data/spec/support/api_stubs.rb +57 -0
 - data/spec/support/resources/cache/base/{DKBenchmark-Manifest → DKBenchmark-0.1-Manifest}/data/DKBenchmark.h +0 -0
 - data/spec/support/resources/cache/base/{DKBenchmark-Manifest → DKBenchmark-0.1-Manifest}/data/DKBenchmark.m +0 -0
 - data/spec/support/resources/cache/base/DKBenchmark-0.1-Manifest/vendor.json +1 -0
 - data/spec/support/resources/cache/base/{DKBenchmark-Vendorspec → DKBenchmark-0.1-Nothing}/DKBenchmark.h +0 -0
 - data/spec/support/resources/cache/base/{DKBenchmark-Vendorspec → DKBenchmark-0.1-Nothing}/DKBenchmark.m +0 -0
 - data/spec/support/resources/cache/base/DKBenchmark-0.1-Nothing/DKBenchmark.vendorspec +16 -0
 - data/spec/support/resources/cache/base/DKBenchmark-0.1-Vendorspec/DKBenchmark.h +18 -0
 - data/spec/support/resources/cache/base/DKBenchmark-0.1-Vendorspec/DKBenchmark.m +73 -0
 - data/spec/support/resources/cache/base/DKBenchmark-0.1-Vendorspec/DKBenchmark.vendorspec +24 -0
 - data/spec/support/resources/projects/MultipleTargets/MultipleTargets.xcodeproj/project.pbxproj +624 -0
 - data/spec/support/resources/projects/RestKitProject/RestKitProject.xcodeproj/project.pbxproj +479 -0
 - data/spec/support/resources/projects/UtilityApplication/UtilityApplication.xcodeproj/project.pbxproj +16 -7
 - data/spec/support/resources/vendors/DKBenchmark/DKBenchmark.vendorspec +24 -8
 - data/spec/support/resources/vendors/DKBenchmarkUnsafe/DKBenchmark.vendorspec +17 -8
 - data/vendor.gemspec +4 -2
 - metadata +93 -39
 - data/lib/vendor/vendor_spec/dsl.rb +0 -39
 - data/lib/vendor/vendor_spec/loader.rb +0 -23
 - data/spec/lib/vendor/vendor_spec/dsl_spec.rb +0 -67
 - data/spec/lib/vendor/vendor_spec/loader_spec.rb +0 -41
 - data/spec/support/resources/cache/base/DKBenchmark-Manifest/vendor.json +0 -1
 - data/spec/support/resources/cache/base/DKBenchmark-Vendorspec/DKBenchmark.vendorspec +0 -11
 
    
        data/lib/vendor/xcode/proxy.rb
    CHANGED
    
    | 
         @@ -17,6 +17,7 @@ module Vendor 
     | 
|
| 
       17 
17 
     | 
    
         
             
                  autoload :PBXTargetDependency,       "vendor/xcode/proxy/pbx_target_dependency"
         
     | 
| 
       18 
18 
     | 
    
         
             
                  autoload :PBXVariantGroup,           "vendor/xcode/proxy/pbx_variant_group"
         
     | 
| 
       19 
19 
     | 
    
         
             
                  autoload :PBXShellScriptBuildPhase,  "vendor/xcode/proxy/pbx_shell_script_build_phase"
         
     | 
| 
      
 20 
     | 
    
         
            +
                  autoload :PBXReferenceProxy,         "vendor/xcode/proxy/pbx_reference_proxy"
         
     | 
| 
       20 
21 
     | 
    
         
             
                  autoload :XCBuildConfiguration,      "vendor/xcode/proxy/xc_build_configuration"
         
     | 
| 
       21 
22 
     | 
    
         
             
                  autoload :XCConfigurationList,       "vendor/xcode/proxy/xc_configuration_list"
         
     | 
| 
       22 
23 
     | 
    
         
             
                  autoload :XCVersionGroup,            "vendor/xcode/proxy/xc_version_group"
         
     | 
    
        data/spec/lib/vendor/api_spec.rb
    CHANGED
    
    | 
         @@ -22,4 +22,58 @@ describe Vendor::API do 
     | 
|
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
              end
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
              context "#meta" do
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                it "should download information about the vendor in JSON format" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  json = Vendor::API.meta("DKBenchmark")
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                  json["name"].should == "DKBenchmark"
         
     | 
| 
      
 31 
     | 
    
         
            +
                  json["description"].should == "Easy benchmarking in Objective-C using blocks"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  json["release"].should == "0.2"
         
     | 
| 
      
 33 
     | 
    
         
            +
                  json["versions"].first[0].should == "0.3.alpha1"
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                it "should download information with vendors that had odd names" do
         
     | 
| 
      
 37 
     | 
    
         
            +
                  json = Vendor::API.meta("DKBenchmark!! With Some Crazy #Number Name!")
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  json["name"].should == "DKBenchmark!! With Some Crazy #Number Name!"
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                it "should raise an error if the server returns a non 200" do
         
     | 
| 
      
 43 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 44 
     | 
    
         
            +
                    Vendor::API.meta("WithAnError")
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end.should raise_error(Vendor::API::Error, "Could not complete request. Server returned a status code of 500")
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                it "should raise an error if the vendor cannot be found" do
         
     | 
| 
      
 49 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 50 
     | 
    
         
            +
                    Vendor::API.meta("DoesNotExist")
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end.should raise_error(Vendor::API::Error, "Could not find a valid vendor 'DoesNotExist'")
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              context "#download" do
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                it "should return a file with the downloaded contents" do
         
     | 
| 
      
 59 
     | 
    
         
            +
                  file = Vendor::API.download("DKBenchmark", "0.1")
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                  file.should be_kind_of(File)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  File.read(file.path).should == File.read(File.join(PACKAGED_VENDOR_PATH, "DKBenchmark-0.1.vendor"))
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                it "should raise an error if the server returns a non 200" do
         
     | 
| 
      
 66 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 67 
     | 
    
         
            +
                    Vendor::API.download("LibWithError", "0.1")
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end.should raise_error(Vendor::API::Error, "Could not complete request. Server returned a status code of 500")
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                it "should raise an error if the vendor cannot be found" do
         
     | 
| 
      
 72 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 73 
     | 
    
         
            +
                    Vendor::API.download("DKBenchmark", "0.does.not.exist")
         
     | 
| 
      
 74 
     | 
    
         
            +
                  end.should raise_error(Vendor::API::Error, "Could not find a valid version for 'DKBenchmark' that matches '0.does.not.exist'")
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
              end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
       25 
79 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,121 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Vendor::Spec do
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              let! (:spec) { Vendor::Spec.new }
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              context "#load" do
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                let(:spec_file) { File.join(VENDOR_RESOURCE_PATH, "DKBenchmark", "DKBenchmark.vendorspec") }
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                it "should return the loaded spec" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  Vendor::Spec.load(spec_file).should be_kind_of(Vendor::Spec)
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                it "should switch back in and out of the current directory using Dir.chdir while evaling the spec" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  current_dir = Dir.pwd
         
     | 
| 
      
 17 
     | 
    
         
            +
                  Dir.should_receive(:chdir).with(File.join(VENDOR_RESOURCE_PATH, "DKBenchmark")).ordered
         
     | 
| 
      
 18 
     | 
    
         
            +
                  Dir.should_receive(:chdir).with(current_dir).ordered
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  Vendor::Spec.load(spec_file).should be_kind_of(Vendor::Spec)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              context '#validate' do
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  spec.name = "Vendor"
         
     | 
| 
      
 29 
     | 
    
         
            +
                  spec.files = "Something"
         
     | 
| 
      
 30 
     | 
    
         
            +
                  spec.email = "foo@bar.com"
         
     | 
| 
      
 31 
     | 
    
         
            +
                  spec.version = "0.1"
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                it 'should thorw an error if no name is defined' do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 36 
     | 
    
         
            +
                    spec.name = nil
         
     | 
| 
      
 37 
     | 
    
         
            +
                    spec.validate!
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end.should raise_error("Specification is missing the `name` option")
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                it 'should thorw an error if no email is defined' do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 43 
     | 
    
         
            +
                    spec.email = nil
         
     | 
| 
      
 44 
     | 
    
         
            +
                    spec.validate!
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end.should raise_error("Specification is missing the `email` option")
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                it 'should thorw an error if no version is defined' do
         
     | 
| 
      
 49 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 50 
     | 
    
         
            +
                    spec.version = nil
         
     | 
| 
      
 51 
     | 
    
         
            +
                    spec.validate!
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end.should raise_error("Specification is missing the `version` option")
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                it 'should thorw an error if no files are defined' do
         
     | 
| 
      
 56 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 57 
     | 
    
         
            +
                    spec.files = nil
         
     | 
| 
      
 58 
     | 
    
         
            +
                    spec.validate!
         
     | 
| 
      
 59 
     | 
    
         
            +
                  end.should raise_error("Specification is missing the `files` option")
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
              context "#framework" do
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                it "should add the framework to the frameworks property" do
         
     | 
| 
      
 67 
     | 
    
         
            +
                  spec.framework "Foundation.framework"
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                  spec.frameworks.should == [ "Foundation.framework" ]
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
              context "#build_setting" do
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                it "should set a build setting" do
         
     | 
| 
      
 77 
     | 
    
         
            +
                  spec.build_setting "SOMETHING", "else"
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                  spec.build_settings.should == [ [ "SOMETHING", "else" ] ]
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                it "should allow you to remap names with a symbol" do
         
     | 
| 
      
 83 
     | 
    
         
            +
                  spec.build_setting :other_linker_flags, "-ObjC"
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                  spec.build_settings.should == [ [ "OTHER_LDFLAGS", "-ObjC" ] ]
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                it "should raise an error if a mapping for the symbol doesn't exist" do
         
     | 
| 
      
 89 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 90 
     | 
    
         
            +
                    spec.build_setting :blah, "-ObjC"
         
     | 
| 
      
 91 
     | 
    
         
            +
                  end.should raise_error(StandardError)
         
     | 
| 
      
 92 
     | 
    
         
            +
                end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                it "should turn the value to YES if you pass true" do
         
     | 
| 
      
 95 
     | 
    
         
            +
                  spec.build_setting :other_linker_flags, true
         
     | 
| 
      
 96 
     | 
    
         
            +
                  spec.build_setting :other_linker_flags, false
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                  spec.build_settings.should == [ [ "OTHER_LDFLAGS", "YES" ], [ "OTHER_LDFLAGS", "NO" ] ]
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
              end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
              context '#to_json' do
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                it 'should return the vendor spec as a JSON string' do
         
     | 
| 
      
 106 
     | 
    
         
            +
                  spec.name = "foo"
         
     | 
| 
      
 107 
     | 
    
         
            +
                  spec.framework "Foundation.framework"
         
     | 
| 
      
 108 
     | 
    
         
            +
                  spec.build_setting :other_linker_flags, true
         
     | 
| 
      
 109 
     | 
    
         
            +
                  spec.dependency "JSONKit", "0.5"
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                  json = JSON.parse(spec.to_json)
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                  json["name"].should == "foo"
         
     | 
| 
      
 114 
     | 
    
         
            +
                  json["dependencies"].should == [ [ "JSONKit", "0.5" ] ]
         
     | 
| 
      
 115 
     | 
    
         
            +
                  json["frameworks"].should == [ "Foundation.framework" ]
         
     | 
| 
      
 116 
     | 
    
         
            +
                  json["build_settings"].should == [ [ "OTHER_LDFLAGS", "YES" ] ]
         
     | 
| 
      
 117 
     | 
    
         
            +
                end
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
              end
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,129 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Vendor::VendorFile::DependencyGraph do
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              let(:graph)             { Vendor::VendorFile::DependencyGraph.new }
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              let(:asihttprequest)    { Vendor::VendorFile::Library::Remote.new(:name => "ASIHTTPRequest", :version => "0.5") }
         
     | 
| 
      
 8 
     | 
    
         
            +
              let(:dksupport)         { Vendor::VendorFile::Library::Local.new(:name => "DKSupport", :version => "0.2") }
         
     | 
| 
      
 9 
     | 
    
         
            +
              let(:dkapirequest)      { Vendor::VendorFile::Library::Remote.new(:name => "DKAPIRequest", :version => "0.3") }
         
     | 
| 
      
 10 
     | 
    
         
            +
              let(:dkcoredata)        { Vendor::VendorFile::Library::Remote.new(:name => "DKCoreData", :version => "~> 1.5") }
         
     | 
| 
      
 11 
     | 
    
         
            +
              let(:dkcoredata_local)  { Vendor::VendorFile::Library::Local.new(:name => "DKCoreData", :version => "1.5.3") }
         
     | 
| 
      
 12 
     | 
    
         
            +
              let(:dkrest)            { Vendor::VendorFile::Library::Remote.new(:name => "DKRest", :version => "~> 0.1") }
         
     | 
| 
      
 13 
     | 
    
         
            +
              let(:versionless_git)   { Vendor::VendorFile::Library::Git.new(:name => "VersionlessGit") }
         
     | 
| 
      
 14 
     | 
    
         
            +
              let(:versionless_local) { Vendor::VendorFile::Library::Local.new(:name => "VersionlessLocal") }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              let(:dkbenchmark1)      { Vendor::VendorFile::Library::Remote.new(:name => "DKBenchmark", :version => "~> 0.1") }
         
     | 
| 
      
 17 
     | 
    
         
            +
              let(:dkbenchmark2)      { Vendor::VendorFile::Library::Remote.new(:name => "DKBenchmark", :version => "<= 0.1") }
         
     | 
| 
      
 18 
     | 
    
         
            +
              let(:dkbenchmark3)      { Vendor::VendorFile::Library::Remote.new(:name => "DKBenchmark", :version => "<= 0.0.1") }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              before :each do
         
     | 
| 
      
 21 
     | 
    
         
            +
                asihttprequest.parent = dkapirequest
         
     | 
| 
      
 22 
     | 
    
         
            +
                asihttprequest.stub!(:dependencies).and_return([ dkapirequest, dkbenchmark1 ])
         
     | 
| 
      
 23 
     | 
    
         
            +
                dksupport.stub!(:dependencies).and_return([ dkapirequest ])
         
     | 
| 
      
 24 
     | 
    
         
            +
                dkapirequest.stub!(:dependencies).and_return([ asihttprequest, dkbenchmark2 ])
         
     | 
| 
      
 25 
     | 
    
         
            +
                dkcoredata.stub!(:dependencies).and_return([ dksupport, dkbenchmark3 ])
         
     | 
| 
      
 26 
     | 
    
         
            +
                dkrest.stub!(:dependencies).and_return([ dksupport, dkapirequest, dkcoredata ])
         
     | 
| 
      
 27 
     | 
    
         
            +
                dkcoredata_local.stub!(:dependencies).and_return([ ])
         
     | 
| 
      
 28 
     | 
    
         
            +
                versionless_git.stub!(:dependencies).and_return([ ])
         
     | 
| 
      
 29 
     | 
    
         
            +
                versionless_local.stub!(:dependencies).and_return([ ])
         
     | 
| 
      
 30 
     | 
    
         
            +
                dkbenchmark1.stub!(:dependencies).and_return([ ])
         
     | 
| 
      
 31 
     | 
    
         
            +
                dkbenchmark2.stub!(:dependencies).and_return([ ])
         
     | 
| 
      
 32 
     | 
    
         
            +
                dkbenchmark3.stub!(:dependencies).and_return([ ])
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              context 'with a valid graph' do
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 38 
     | 
    
         
            +
                  graph.libraries = [ dkrest, versionless_local, versionless_git, dkcoredata_local ]
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                context "#version_conflicts?" do
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  it "should return false" do
         
     | 
| 
      
 44 
     | 
    
         
            +
                    graph.version_conflicts?.should be_false
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  it "should poplate the list libraries_to_install property" do
         
     | 
| 
      
 48 
     | 
    
         
            +
                    graph.libraries_to_install.should be_nil
         
     | 
| 
      
 49 
     | 
    
         
            +
                    graph.version_conflicts?
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                    libraries_to_install = graph.libraries_to_install
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                    libraries_to_install.first[0].name.should == "ASIHTTPRequest"
         
     | 
| 
      
 54 
     | 
    
         
            +
                    libraries_to_install.first[0].version.should == "0.5"
         
     | 
| 
      
 55 
     | 
    
         
            +
                    libraries_to_install.first[1].should == [ :all ]
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                    all = libraries_to_install.map { |x| x[0].name }
         
     | 
| 
      
 58 
     | 
    
         
            +
                    all.should == ["ASIHTTPRequest", "DKAPIRequest", "DKBenchmark", "DKCoreData", "DKRest", "DKSupport", "VersionlessGit", "VersionlessLocal"]
         
     | 
| 
      
 59 
     | 
    
         
            +
                  end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                context "#dependency_graph" do
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 66 
     | 
    
         
            +
                    @graph, @map = graph.dependency_graph
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                  it "should return a graph" do
         
     | 
| 
      
 70 
     | 
    
         
            +
                    @graph.should == [
         
     | 
| 
      
 71 
     | 
    
         
            +
                      ["DKRest ~> 0.1", [
         
     | 
| 
      
 72 
     | 
    
         
            +
                        ["DKSupport 0.2", [
         
     | 
| 
      
 73 
     | 
    
         
            +
                          ["DKAPIRequest 0.3", [
         
     | 
| 
      
 74 
     | 
    
         
            +
                            ["ASIHTTPRequest 0.5", [
         
     | 
| 
      
 75 
     | 
    
         
            +
                                ["DKBenchmark ~> 0.1", []]
         
     | 
| 
      
 76 
     | 
    
         
            +
                              ]
         
     | 
| 
      
 77 
     | 
    
         
            +
                            ],
         
     | 
| 
      
 78 
     | 
    
         
            +
                            ["DKBenchmark <= 0.1", []]
         
     | 
| 
      
 79 
     | 
    
         
            +
                          ]]
         
     | 
| 
      
 80 
     | 
    
         
            +
                        ]],
         
     | 
| 
      
 81 
     | 
    
         
            +
                        ["DKCoreData ~> 1.5", [
         
     | 
| 
      
 82 
     | 
    
         
            +
                          ["DKBenchmark <= 0.0.1", []]
         
     | 
| 
      
 83 
     | 
    
         
            +
                        ]]
         
     | 
| 
      
 84 
     | 
    
         
            +
                      ]],
         
     | 
| 
      
 85 
     | 
    
         
            +
                      ["VersionlessLocal", []],
         
     | 
| 
      
 86 
     | 
    
         
            +
                      ["VersionlessGit", []],
         
     | 
| 
      
 87 
     | 
    
         
            +
                      ["DKCoreData 1.5.3", []],
         
     | 
| 
      
 88 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                  it "should return a map" do
         
     | 
| 
      
 92 
     | 
    
         
            +
                    @map.keys.sort.should == ["ASIHTTPRequest", "DKAPIRequest", "DKBenchmark", "DKCoreData", "DKRest", "DKSupport", "VersionlessGit", "VersionlessLocal"]
         
     | 
| 
      
 93 
     | 
    
         
            +
                  end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                  it "should return each version present in the map" do
         
     | 
| 
      
 96 
     | 
    
         
            +
                    @map["ASIHTTPRequest"].map(&:version).should == [ "0.5" ]
         
     | 
| 
      
 97 
     | 
    
         
            +
                    @map["DKAPIRequest"].map(&:version).should == [ "0.3" ]
         
     | 
| 
      
 98 
     | 
    
         
            +
                    @map["DKCoreData"].map(&:version).should == [ "1.5", "1.5.3" ]
         
     | 
| 
      
 99 
     | 
    
         
            +
                    @map["DKRest"].map(&:version).should == [ "0.1" ]
         
     | 
| 
      
 100 
     | 
    
         
            +
                    @map["DKSupport"].map(&:version).should == [ "0.2" ]
         
     | 
| 
      
 101 
     | 
    
         
            +
                  end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
              end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
              context 'with an invalid graph' do
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                let(:new_asihttprequest)  { Vendor::VendorFile::Library::Remote.new(:name => "ASIHTTPRequest", :version => "0.6") }
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 112 
     | 
    
         
            +
                  new_asihttprequest.stub!(:dependencies).and_return([ dkapirequest ])
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                  graph.libraries = [ dkrest, new_asihttprequest ]
         
     | 
| 
      
 115 
     | 
    
         
            +
                end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                it "should raise an error and exit" do
         
     | 
| 
      
 118 
     | 
    
         
            +
                  Vendor.ui.should_receive(:error).with("Multiple versions detected for ASIHTTPRequest (0.6, 0.5)").once.ordered
         
     | 
| 
      
 119 
     | 
    
         
            +
                  Vendor.ui.should_receive(:error).with("  ASIHTTPRequest 0.5 is required by DKAPIRequest 0.3").once.ordered
         
     | 
| 
      
 120 
     | 
    
         
            +
                  Vendor.ui.should_receive(:error).with("  ASIHTTPRequest 0.6 is required in the Vendorfile").once.ordered
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
                  expect do
         
     | 
| 
      
 123 
     | 
    
         
            +
                    graph.version_conflicts?
         
     | 
| 
      
 124 
     | 
    
         
            +
                  end.should raise_error(SystemExit)
         
     | 
| 
      
 125 
     | 
    
         
            +
                end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
              end
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -2,14 +2,15 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe Vendor::VendorFile::Library::Base do
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
              let(: 
     | 
| 
      
 5 
     | 
    
         
            +
              let(:temp_path) { TempProject.create(File.join(PROJECT_RESOURCE_PATH, "MultipleTargets")) }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:project) { Vendor::XCode::Project.new(File.join(temp_path, "MultipleTargets.xcodeproj")) }
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
              let(: 
     | 
| 
       8 
     | 
    
         
            -
              let(:project) { Vendor::XCode::Project.new(File.join(temp_path, "UtilityApplication.xcodeproj")) }
         
     | 
| 
      
 8 
     | 
    
         
            +
              let(:lib) { Vendor::VendorFile::Library::Base.new(:name => "ExampleLib") }
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
              let(:lib_with_no_manifest_or_vendorspec) { Vendor::VendorFile::Library::Base.new(:name => "BingMapsIOS", :require => "MapControl") }
         
     | 
| 
       11 
     | 
    
         
            -
              let(:lib_with_manifest) { Vendor::VendorFile::Library::Base.new(:name => "DKBenchmark-Manifest") }
         
     | 
| 
       12 
     | 
    
         
            -
              let(:lib_with_vendorspec) { Vendor::VendorFile::Library::Base.new(:name => "DKBenchmark-Vendorspec") }
         
     | 
| 
      
 10 
     | 
    
         
            +
              let(:lib_with_no_manifest_or_vendorspec) { Vendor::VendorFile::Library::Base.new(:name => "BingMapsIOS", :require => "MapControl", :target => "MultipleTargets") }
         
     | 
| 
      
 11 
     | 
    
         
            +
              let(:lib_with_manifest) { Vendor::VendorFile::Library::Base.new(:name => "DKBenchmark-0.1-Manifest", :targets => [ "MultipleTargets", "Specs" ]) }
         
     | 
| 
      
 12 
     | 
    
         
            +
              let(:lib_with_vendorspec) { Vendor::VendorFile::Library::Base.new(:name => "DKBenchmark-0.1-Vendorspec", :target => "MultipleTargets") }
         
     | 
| 
      
 13 
     | 
    
         
            +
              let(:lib_with_nothing) { Vendor::VendorFile::Library::Base.new(:name => "DKBenchmark-0.1-Nothing", :target => "MultipleTargets") }
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
15 
     | 
    
         
             
              it "should have a name attribute" do
         
     | 
| 
       15 
16 
     | 
    
         
             
                lib.name = "lib"
         
     | 
| 
         @@ -27,24 +28,24 @@ describe Vendor::VendorFile::Library::Base do 
     | 
|
| 
       27 
28 
     | 
    
         | 
| 
       28 
29 
     | 
    
         
             
                before :each do
         
     | 
| 
       29 
30 
     | 
    
         
             
                  Vendor.stub(:library_path).and_return CACHED_VENDOR_RESOURCE_PATH
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  lib_with_manifest.install project
         
     | 
| 
       32 
31 
     | 
    
         
             
                end
         
     | 
| 
       33 
32 
     | 
    
         | 
| 
       34 
33 
     | 
    
         
             
                context "with an existing installation" do
         
     | 
| 
       35 
34 
     | 
    
         | 
| 
       36 
35 
     | 
    
         
             
                  before :each do
         
     | 
| 
      
 36 
     | 
    
         
            +
                    lib_with_manifest.install project
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       37 
38 
     | 
    
         
             
                    # Install it again
         
     | 
| 
       38 
39 
     | 
    
         
             
                    lib_with_manifest.install project
         
     | 
| 
       39 
40 
     | 
    
         
             
                  end
         
     | 
| 
       40 
41 
     | 
    
         | 
| 
       41 
42 
     | 
    
         
             
                  it "should add the group to the project" do
         
     | 
| 
       42 
     | 
    
         
            -
                    group = project.find_group("Vendor/DKBenchmark-Manifest")
         
     | 
| 
      
 43 
     | 
    
         
            +
                    group = project.find_group("Vendor/DKBenchmark-0.1-Manifest")
         
     | 
| 
       43 
44 
     | 
    
         
             
                    group.should_not be_nil
         
     | 
| 
       44 
45 
     | 
    
         
             
                  end
         
     | 
| 
       45 
46 
     | 
    
         | 
| 
       46 
47 
     | 
    
         
             
                  it "should add the files to the project" do
         
     | 
| 
       47 
     | 
    
         
            -
                    children = project.find_group("Vendor/DKBenchmark-Manifest").children
         
     | 
| 
      
 48 
     | 
    
         
            +
                    children = project.find_group("Vendor/DKBenchmark-0.1-Manifest").children
         
     | 
| 
       48 
49 
     | 
    
         
             
                    children.length.should == 2
         
     | 
| 
       49 
50 
     | 
    
         
             
                  end
         
     | 
| 
       50 
51 
     | 
    
         | 
| 
         @@ -52,13 +53,18 @@ describe Vendor::VendorFile::Library::Base do 
     | 
|
| 
       52 
53 
     | 
    
         | 
| 
       53 
54 
     | 
    
         
             
                context "with a fresh installation" do
         
     | 
| 
       54 
55 
     | 
    
         | 
| 
      
 56 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 57 
     | 
    
         
            +
                    # Install it again
         
     | 
| 
      
 58 
     | 
    
         
            +
                    lib_with_manifest.install project
         
     | 
| 
      
 59 
     | 
    
         
            +
                  end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       55 
61 
     | 
    
         
             
                  it "should add the group to the project" do
         
     | 
| 
       56 
     | 
    
         
            -
                    group = project.find_group("Vendor/DKBenchmark-Manifest")
         
     | 
| 
      
 62 
     | 
    
         
            +
                    group = project.find_group("Vendor/DKBenchmark-0.1-Manifest")
         
     | 
| 
       57 
63 
     | 
    
         
             
                    group.should_not be_nil
         
     | 
| 
       58 
64 
     | 
    
         
             
                  end
         
     | 
| 
       59 
65 
     | 
    
         | 
| 
       60 
66 
     | 
    
         
             
                  it "should add the files to the project" do
         
     | 
| 
       61 
     | 
    
         
            -
                    children = project.find_group("Vendor/DKBenchmark-Manifest").children
         
     | 
| 
      
 67 
     | 
    
         
            +
                    children = project.find_group("Vendor/DKBenchmark-0.1-Manifest").children
         
     | 
| 
       62 
68 
     | 
    
         
             
                    children.length.should == 2
         
     | 
| 
       63 
69 
     | 
    
         
             
                  end
         
     | 
| 
       64 
70 
     | 
    
         | 
| 
         @@ -74,6 +80,160 @@ describe Vendor::VendorFile::Library::Base do 
     | 
|
| 
       74 
80 
     | 
    
         | 
| 
       75 
81 
     | 
    
         
             
              end
         
     | 
| 
       76 
82 
     | 
    
         | 
| 
      
 83 
     | 
    
         
            +
              describe "#dependencies" do
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 86 
     | 
    
         
            +
                  Vendor.stub(:library_path).and_return CACHED_VENDOR_RESOURCE_PATH
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                context "with no manifest or vendorspec" do
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                  it "should return no dependencies" do
         
     | 
| 
      
 92 
     | 
    
         
            +
                    lib_with_no_manifest_or_vendorspec.dependencies.should be_empty
         
     | 
| 
      
 93 
     | 
    
         
            +
                  end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                context "with a vendorspec" do
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                  let(:dependencies) { lib_with_vendorspec.dependencies }
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                  it "should return the correct dependencies" do
         
     | 
| 
      
 102 
     | 
    
         
            +
                    dependencies[0].name.should == "JSONKit"
         
     | 
| 
      
 103 
     | 
    
         
            +
                    dependencies[0].version.should == "0.5"
         
     | 
| 
      
 104 
     | 
    
         
            +
                    dependencies[0].parent.should == lib_with_vendorspec
         
     | 
| 
      
 105 
     | 
    
         
            +
                    dependencies[0].targets.should == [ "MultipleTargets" ]
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                    dependencies[1].name.should == "ASIHTTPRequest"
         
     | 
| 
      
 108 
     | 
    
         
            +
                    dependencies[1].equality.should == "~>"
         
     | 
| 
      
 109 
     | 
    
         
            +
                    dependencies[1].version.should == "4.2"
         
     | 
| 
      
 110 
     | 
    
         
            +
                    dependencies[1].targets.should == [ "MultipleTargets" ]
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                    dependencies[2].name.should == "AFINetworking"
         
     | 
| 
      
 113 
     | 
    
         
            +
                    dependencies[2].equality.should == "<="
         
     | 
| 
      
 114 
     | 
    
         
            +
                    dependencies[2].version.should == "2.5.a"
         
     | 
| 
      
 115 
     | 
    
         
            +
                    dependencies[2].parent.should == lib_with_vendorspec
         
     | 
| 
      
 116 
     | 
    
         
            +
                    dependencies[2].targets.should == [ "MultipleTargets" ]
         
     | 
| 
      
 117 
     | 
    
         
            +
                  end
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                end
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                context "with a manifest" do
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
                  let(:dependencies) { lib_with_manifest.dependencies }
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                  it "should return the correct dependencies" do
         
     | 
| 
      
 126 
     | 
    
         
            +
                    dependencies[0].name.should == "JSONKit"
         
     | 
| 
      
 127 
     | 
    
         
            +
                    dependencies[0].version.should == "0.3"
         
     | 
| 
      
 128 
     | 
    
         
            +
                    dependencies[0].parent.should == lib_with_manifest
         
     | 
| 
      
 129 
     | 
    
         
            +
                    dependencies[0].targets.should == [ "MultipleTargets", "Specs" ]
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                    dependencies[1].name.should == "ASIHTTPRequest"
         
     | 
| 
      
 132 
     | 
    
         
            +
                    dependencies[1].equality.should == "~>"
         
     | 
| 
      
 133 
     | 
    
         
            +
                    dependencies[1].version.should == "4.3"
         
     | 
| 
      
 134 
     | 
    
         
            +
                    dependencies[1].parent.should == lib_with_manifest
         
     | 
| 
      
 135 
     | 
    
         
            +
                    dependencies[1].targets.should == [ "MultipleTargets", "Specs" ]
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
                    dependencies[2].name.should == "AFINetworking"
         
     | 
| 
      
 138 
     | 
    
         
            +
                    dependencies[2].equality.should == "<="
         
     | 
| 
      
 139 
     | 
    
         
            +
                    dependencies[2].version.should == "2.5.b"
         
     | 
| 
      
 140 
     | 
    
         
            +
                    dependencies[2].parent.should == lib_with_manifest
         
     | 
| 
      
 141 
     | 
    
         
            +
                    dependencies[2].targets.should == [ "MultipleTargets", "Specs" ]
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
                  end
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                end
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                context "with no dependencies" do
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
                  it "should return an empty array" do
         
     | 
| 
      
 150 
     | 
    
         
            +
                    lib_with_nothing.dependencies.should == []
         
     | 
| 
      
 151 
     | 
    
         
            +
                  end
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
                end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
              end
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
              describe "#frameworks" do
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 160 
     | 
    
         
            +
                  Vendor.stub(:library_path).and_return CACHED_VENDOR_RESOURCE_PATH
         
     | 
| 
      
 161 
     | 
    
         
            +
                end
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
                context "with no manifest or vendorspec" do
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
                  it "should have no frameworks" do
         
     | 
| 
      
 166 
     | 
    
         
            +
                    lib_with_no_manifest_or_vendorspec.frameworks.should be_empty
         
     | 
| 
      
 167 
     | 
    
         
            +
                  end
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
                end
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
                context "with a vendorspec" do
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
      
 173 
     | 
    
         
            +
                  it "should have frameworks" do
         
     | 
| 
      
 174 
     | 
    
         
            +
                    lib_with_vendorspec.frameworks.should == [ "Foundation.framework" ]
         
     | 
| 
      
 175 
     | 
    
         
            +
                  end
         
     | 
| 
      
 176 
     | 
    
         
            +
             
     | 
| 
      
 177 
     | 
    
         
            +
                end
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                context "with a manifest" do
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
      
 181 
     | 
    
         
            +
                  it "should have frameworks" do
         
     | 
| 
      
 182 
     | 
    
         
            +
                    lib_with_manifest.frameworks.should == [ "CoreData.framework" ]
         
     | 
| 
      
 183 
     | 
    
         
            +
                  end
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
                end
         
     | 
| 
      
 186 
     | 
    
         
            +
             
     | 
| 
      
 187 
     | 
    
         
            +
                context "with no frameworks" do
         
     | 
| 
      
 188 
     | 
    
         
            +
             
     | 
| 
      
 189 
     | 
    
         
            +
                  it "should return an empty array" do
         
     | 
| 
      
 190 
     | 
    
         
            +
                    lib_with_nothing.frameworks.should == []
         
     | 
| 
      
 191 
     | 
    
         
            +
                  end
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     | 
| 
      
 193 
     | 
    
         
            +
                end
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
              end
         
     | 
| 
      
 196 
     | 
    
         
            +
             
     | 
| 
      
 197 
     | 
    
         
            +
              describe "#build_settings" do
         
     | 
| 
      
 198 
     | 
    
         
            +
             
     | 
| 
      
 199 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 200 
     | 
    
         
            +
                  Vendor.stub(:library_path).and_return CACHED_VENDOR_RESOURCE_PATH
         
     | 
| 
      
 201 
     | 
    
         
            +
                end
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
      
 203 
     | 
    
         
            +
                context "with no manifest or vendorspec" do
         
     | 
| 
      
 204 
     | 
    
         
            +
             
     | 
| 
      
 205 
     | 
    
         
            +
                  it "should have no build_settings" do
         
     | 
| 
      
 206 
     | 
    
         
            +
                    lib_with_no_manifest_or_vendorspec.build_settings.should be_empty
         
     | 
| 
      
 207 
     | 
    
         
            +
                  end
         
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
      
 209 
     | 
    
         
            +
                end
         
     | 
| 
      
 210 
     | 
    
         
            +
             
     | 
| 
      
 211 
     | 
    
         
            +
                context "with a vendorspec" do
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
                  it "should have build_settings" do
         
     | 
| 
      
 214 
     | 
    
         
            +
                    lib_with_vendorspec.build_settings.should == [ [ "OTHER_LDFLAGS", "-ObjC" ] ]
         
     | 
| 
      
 215 
     | 
    
         
            +
                  end
         
     | 
| 
      
 216 
     | 
    
         
            +
             
     | 
| 
      
 217 
     | 
    
         
            +
                end
         
     | 
| 
      
 218 
     | 
    
         
            +
             
     | 
| 
      
 219 
     | 
    
         
            +
                context "with a manifest" do
         
     | 
| 
      
 220 
     | 
    
         
            +
             
     | 
| 
      
 221 
     | 
    
         
            +
                  it "should have build_settings" do
         
     | 
| 
      
 222 
     | 
    
         
            +
                    lib_with_manifest.build_settings.should == [ [ "CLANG_WARN_OBJCPP_ARC_ABI", "NO" ] ]
         
     | 
| 
      
 223 
     | 
    
         
            +
                  end
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
                end
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
                context "with no build settings" do
         
     | 
| 
      
 228 
     | 
    
         
            +
             
     | 
| 
      
 229 
     | 
    
         
            +
                  it "should return an empty array" do
         
     | 
| 
      
 230 
     | 
    
         
            +
                    lib_with_nothing.build_settings.should == []
         
     | 
| 
      
 231 
     | 
    
         
            +
                  end
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
      
 233 
     | 
    
         
            +
                end
         
     | 
| 
      
 234 
     | 
    
         
            +
             
     | 
| 
      
 235 
     | 
    
         
            +
              end
         
     | 
| 
      
 236 
     | 
    
         
            +
             
     | 
| 
       77 
237 
     | 
    
         
             
              describe "#files" do
         
     | 
| 
       78 
238 
     | 
    
         | 
| 
       79 
239 
     | 
    
         
             
                before :each do
         
     | 
| 
         @@ -124,7 +284,7 @@ describe Vendor::VendorFile::Library::Base do 
     | 
|
| 
       124 
284 
     | 
    
         
             
                  end
         
     | 
| 
       125 
285 
     | 
    
         | 
| 
       126 
286 
     | 
    
         
             
                  it "should return files in the correct location" do
         
     | 
| 
       127 
     | 
    
         
            -
                    path = File.join(CACHED_VENDOR_RESOURCE_PATH, "base/DKBenchmark-Vendorspec/")
         
     | 
| 
      
 287 
     | 
    
         
            +
                    path = File.join(CACHED_VENDOR_RESOURCE_PATH, "base/DKBenchmark-0.1-Vendorspec/")
         
     | 
| 
       128 
288 
     | 
    
         
             
                    regex_path = /^#{path}.+$/
         
     | 
| 
       129 
289 
     | 
    
         | 
| 
       130 
290 
     | 
    
         
             
                    files.each do |file|
         
     | 
| 
         @@ -152,7 +312,7 @@ describe Vendor::VendorFile::Library::Base do 
     | 
|
| 
       152 
312 
     | 
    
         
             
                  end
         
     | 
| 
       153 
313 
     | 
    
         | 
| 
       154 
314 
     | 
    
         
             
                  it "should return files in the correct location" do
         
     | 
| 
       155 
     | 
    
         
            -
                    path = File.join(CACHED_VENDOR_RESOURCE_PATH, "base/DKBenchmark-Manifest/data/")
         
     | 
| 
      
 315 
     | 
    
         
            +
                    path = File.join(CACHED_VENDOR_RESOURCE_PATH, "base/DKBenchmark-0.1-Manifest/data/")
         
     | 
| 
       156 
316 
     | 
    
         
             
                    regex_path = /^#{path}.+$/
         
     | 
| 
       157 
317 
     | 
    
         | 
| 
       158 
318 
     | 
    
         
             
                    files.each do |file|
         
     |