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|
|