vendor 0.0.4 → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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|
|