buildr-dependency-extensions 0.2
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/buildr-dependency-extensions.gemspec +30 -0
- data/lib/buildr-dependency-extensions.rb +9 -0
- data/lib/buildr-dependency-extensions/artifact.rb +9 -0
- data/lib/buildr-dependency-extensions/dependency_caching.rb +48 -0
- data/lib/buildr-dependency-extensions/helper.rb +80 -0
- data/lib/buildr-dependency-extensions/pom-generator.rb +80 -0
- data/lib/buildr-dependency-extensions/pom.rb +32 -0
- data/lib/buildr-dependency-extensions/resolver.rb +44 -0
- data/lib/buildr-dependency-extensions/transitive-buildr.rb +125 -0
- data/lib/buildr-dependency-extensions/version.rb +3 -0
- data/spec/compile_dependencies_spec.rb +60 -0
- data/spec/dependency_caching_spec.rb +135 -0
- data/spec/helper_spec.rb +53 -0
- data/spec/issues/issue_0_spec.rb +54 -0
- data/spec/issues/issue_2_spec.rb +29 -0
- data/spec/maven_dependency_mechanism_spec.rb +55 -0
- data/spec/pom_generator_spec.rb +187 -0
- data/spec/runtime_dependencies_spec.rb +140 -0
- data/spec/test_dependencies_spec.rb +114 -0
- data/spec/version_spec.rb +29 -0
- metadata +149 -0
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'buildr'
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib/buildr-dependency-extensions'))
|
4
|
+
require File.expand_path(File.join('spec', 'spec_helpers'), Gem::GemPathSearcher.new.find('buildr').full_gem_path)
|
5
|
+
|
6
|
+
describe 'Runtime dependencies' do
|
7
|
+
before(:each) do
|
8
|
+
write artifact('foo:bar:jar:1.0').pom.to_s, <<-XML
|
9
|
+
<project>
|
10
|
+
<artifactId>bar</artifactId>
|
11
|
+
<groupId>foo</groupId>
|
12
|
+
</project>
|
13
|
+
XML
|
14
|
+
|
15
|
+
write artifact('foo:bar:jar:1.1').pom.to_s, <<-XML
|
16
|
+
<project>
|
17
|
+
<artifactId>bar</artifactId>
|
18
|
+
<groupId>foo</groupId>
|
19
|
+
</project>
|
20
|
+
XML
|
21
|
+
|
22
|
+
write artifact('foo:foobar:jar:1.0').pom.to_s, <<-XML
|
23
|
+
<project>
|
24
|
+
<artifactId>foobar</artifactId>
|
25
|
+
<groupId>foo</groupId>
|
26
|
+
</project>
|
27
|
+
XML
|
28
|
+
|
29
|
+
write artifact('transitive:dependencies:jar:1.0').pom.to_s, <<-XML
|
30
|
+
<project>
|
31
|
+
<artifactId>transitive</artifactId>
|
32
|
+
<groupId>dependencies</groupId>
|
33
|
+
|
34
|
+
<dependencies>
|
35
|
+
<dependency>
|
36
|
+
<groupId>foo</groupId>
|
37
|
+
<artifactId>foobar</artifactId>
|
38
|
+
<version>1.0</version>
|
39
|
+
<!-- scope is compile by default -->
|
40
|
+
<!-- <scope>compile</scope> -->
|
41
|
+
</dependency>
|
42
|
+
<dependency>
|
43
|
+
<groupId>foo</groupId>
|
44
|
+
<artifactId>bar</artifactId>
|
45
|
+
<version>1.0</version>
|
46
|
+
<scope>runtime</scope>
|
47
|
+
</dependency>
|
48
|
+
</dependencies>
|
49
|
+
</project>
|
50
|
+
XML
|
51
|
+
end
|
52
|
+
|
53
|
+
describe 'duplicate artifact removal' do
|
54
|
+
it 'should remove duplicate artifacts' do
|
55
|
+
define "TestProject" do
|
56
|
+
extend TransitiveDependencies
|
57
|
+
project.version = '1.0'
|
58
|
+
project.transitive_scopes = [:run]
|
59
|
+
|
60
|
+
run.with 'foo:bar:jar:1.0'
|
61
|
+
run.with 'foo:bar:jar:1.1'
|
62
|
+
end
|
63
|
+
|
64
|
+
expected_runtime_dependencies = [artifact('foo:bar:jar:1.1')]
|
65
|
+
actual_runtime_dependencies = project('TestProject').run.classpath
|
66
|
+
actual_runtime_dependencies.should == expected_runtime_dependencies
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe 'maven dependency mechanism' do
|
71
|
+
it 'should add this project compile dependencies to the runtime dependencies' do
|
72
|
+
define "TestProject" do
|
73
|
+
extend TransitiveDependencies
|
74
|
+
project.version = '1.0'
|
75
|
+
|
76
|
+
compile.with 'foo:foobar:jar:1.0'
|
77
|
+
end
|
78
|
+
|
79
|
+
expected_dependencies = [artifact('foo:foobar:jar:1.0')]
|
80
|
+
project('TestProject').run.classpath.should ==(expected_dependencies)
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'transitively adds compile dependencies and runtime dependencies of this project runtime dependencies to the runtime dependencies' do
|
84
|
+
define "TestProject" do
|
85
|
+
extend TransitiveDependencies
|
86
|
+
project.version = '1.0'
|
87
|
+
|
88
|
+
project.transitive_scopes = [:compile, :run]
|
89
|
+
|
90
|
+
run.with 'transitive:dependencies:jar:1.0'
|
91
|
+
end
|
92
|
+
|
93
|
+
expected_dependencies = [artifact('foo:foobar:jar:1.0'), artifact('foo:bar:jar:1.0'), artifact('transitive:dependencies:jar:1.0')]
|
94
|
+
project('TestProject').run.classpath.should ==(expected_dependencies)
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'transitively adds runtime dependencies of this project compile dependencies to the runtime dependencies' do
|
98
|
+
define "TestProject" do
|
99
|
+
extend TransitiveDependencies
|
100
|
+
project.version = '1.0'
|
101
|
+
|
102
|
+
project.transitive_scopes = [:compile, :run]
|
103
|
+
|
104
|
+
compile.with 'transitive:dependencies:jar:1.0'
|
105
|
+
end
|
106
|
+
|
107
|
+
expected_dependencies = [artifact('foo:foobar:jar:1.0'), artifact('foo:bar:jar:1.0'), artifact('transitive:dependencies:jar:1.0')]
|
108
|
+
project('TestProject').run.classpath.should ==(expected_dependencies)
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'does not include dependencies contained in the artifact excludes' do
|
112
|
+
define "TestProject" do
|
113
|
+
extend TransitiveDependencies
|
114
|
+
project.version = '1.0'
|
115
|
+
|
116
|
+
project.transitive_scopes = [:run]
|
117
|
+
|
118
|
+
run.with artifact('transitive:dependencies:jar:1.0').excludes(artifact('foo:bar:jar:1.0'), artifact('foo:foobar:jar:1.0'))
|
119
|
+
end
|
120
|
+
|
121
|
+
expected_dependencies = [artifact('transitive:dependencies:jar:1.0')]
|
122
|
+
project('TestProject').run.classpath.should ==(expected_dependencies)
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'should not fail when the compile task depends on one or more file tasks' do
|
126
|
+
define "TestProject" do
|
127
|
+
extend TransitiveDependencies
|
128
|
+
project.version = '1.0'
|
129
|
+
|
130
|
+
file _(:target, :classes) do
|
131
|
+
end
|
132
|
+
compile.with file(_(:foo, :bar))
|
133
|
+
run.with 'foo:bar:jar:1.1'
|
134
|
+
end
|
135
|
+
|
136
|
+
expected_runtime_dependencies = [artifact('foo:bar:jar:1.1'), file(project('TestProject').path_to(:foo, :bar))]
|
137
|
+
project('TestProject').run.classpath.should ==(expected_runtime_dependencies)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'buildr'
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib/buildr-dependency-extensions'))
|
4
|
+
require File.expand_path(File.join('spec', 'spec_helpers'), Gem::GemPathSearcher.new.find('buildr').full_gem_path)
|
5
|
+
|
6
|
+
describe 'Test dependencies' do
|
7
|
+
before(:each) do
|
8
|
+
write artifact('foo:bar:jar:1.0').pom.to_s, <<-XML
|
9
|
+
<project>
|
10
|
+
<artifactId>bar</artifactId>
|
11
|
+
<groupId>foo</groupId>
|
12
|
+
</project>
|
13
|
+
XML
|
14
|
+
|
15
|
+
write artifact('foo:bar:jar:1.1').pom.to_s, <<-XML
|
16
|
+
<project>
|
17
|
+
<artifactId>bar</artifactId>
|
18
|
+
<groupId>foo</groupId>
|
19
|
+
</project>
|
20
|
+
XML
|
21
|
+
|
22
|
+
write artifact('foo:foobar:jar:1.0').pom.to_s, <<-XML
|
23
|
+
<project>
|
24
|
+
<artifactId>foobar</artifactId>
|
25
|
+
<groupId>foo</groupId>
|
26
|
+
</project>
|
27
|
+
XML
|
28
|
+
write artifact('transitive:dependencies:jar:1.0').pom.to_s, <<-XML
|
29
|
+
<project>
|
30
|
+
<artifactId>transitive</artifactId>
|
31
|
+
<groupId>dependencies</groupId>
|
32
|
+
|
33
|
+
<dependencies>
|
34
|
+
<dependency>
|
35
|
+
<groupId>foo</groupId>
|
36
|
+
<artifactId>foobar</artifactId>
|
37
|
+
<version>1.0</version>
|
38
|
+
<scope>compile</scope>
|
39
|
+
</dependency>
|
40
|
+
<dependency>
|
41
|
+
<groupId>foo</groupId>
|
42
|
+
<artifactId>bar</artifactId>
|
43
|
+
<version>1.0</version>
|
44
|
+
<scope>runtime</scope>
|
45
|
+
</dependency>
|
46
|
+
</dependencies>
|
47
|
+
</project>
|
48
|
+
XML
|
49
|
+
end
|
50
|
+
|
51
|
+
describe 'duplicate artifact removal' do
|
52
|
+
it 'should not have duplicate artifacts' do
|
53
|
+
define "TestProject" do
|
54
|
+
extend TransitiveDependencies
|
55
|
+
project.version = '1.0'
|
56
|
+
project.transitive_scopes = [:test]
|
57
|
+
|
58
|
+
test.with 'foo:bar:jar:1.0'
|
59
|
+
test.with 'foo:bar:jar:1.1'
|
60
|
+
end
|
61
|
+
|
62
|
+
expected_test_dependencies = [artifact('foo:bar:jar:1.1')]
|
63
|
+
project('TestProject').test.dependencies.should == expected_test_dependencies
|
64
|
+
project('TestProject').test.compile.dependencies.should == expected_test_dependencies
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe 'maven describe mechanism' do
|
69
|
+
it 'adds compile dependencies of this project to the test dependencies' do
|
70
|
+
define "TestProject" do
|
71
|
+
extend TransitiveDependencies
|
72
|
+
project.version = '1.0'
|
73
|
+
project.transitive_scopes = [:compile, :test]
|
74
|
+
|
75
|
+
compile.with 'foo:foobar:jar:1.0'
|
76
|
+
test.with 'foo:bar:jar:1.1'
|
77
|
+
end
|
78
|
+
|
79
|
+
expected_test_dependencies = [artifact('foo:bar:jar:1.1'), artifact('foo:foobar:jar:1.0')]
|
80
|
+
project('TestProject').test.classpath.should == expected_test_dependencies
|
81
|
+
project('TestProject').test.compile.classpath.should == expected_test_dependencies
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'transitively adds compile dependencies and runtime dependencies of this project test dependencies to the test dependencies' do
|
85
|
+
define "TestProject" do
|
86
|
+
extend TransitiveDependencies
|
87
|
+
project.version = '1.0'
|
88
|
+
project.transitive_scopes = [:test]
|
89
|
+
|
90
|
+
test.with 'transitive:dependencies:jar:1.0'
|
91
|
+
end
|
92
|
+
|
93
|
+
expected_test_dependencies = [artifact('foo:foobar:jar:1.0'), artifact('foo:bar:jar:1.0'), artifact('transitive:dependencies:jar:1.0')]
|
94
|
+
project('TestProject').test.classpath.should ==(expected_test_dependencies)
|
95
|
+
project('TestProject').test.compile.classpath.should ==(expected_test_dependencies)
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should not fail when the compile task depends on one or more file tasks' do
|
99
|
+
define "TestProject" do
|
100
|
+
extend TransitiveDependencies
|
101
|
+
project.version = '1.0'
|
102
|
+
|
103
|
+
file _(:target, :classes) do
|
104
|
+
end
|
105
|
+
compile.with file(_(:foo, :bar))
|
106
|
+
test.with 'foo:bar:jar:1.1'
|
107
|
+
end
|
108
|
+
|
109
|
+
expected_test_dependencies = [artifact('foo:bar:jar:1.1'), file(project('TestProject').path_to(:foo, :bar))]
|
110
|
+
project('TestProject').test.classpath.should ==(expected_test_dependencies)
|
111
|
+
project('TestProject').test.compile.classpath.should ==(expected_test_dependencies)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'buildr'
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib/buildr-dependency-extensions'))
|
4
|
+
|
5
|
+
module BuildrDependencyExtensions
|
6
|
+
|
7
|
+
describe Version do
|
8
|
+
it 'should sort versions correctly' do
|
9
|
+
version1 = Version.new '1.2.3'
|
10
|
+
version2 = Version.new '1.2.4'
|
11
|
+
version1.should be < version2
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should redefine equality as expected' do
|
15
|
+
version1 = Version.new '1.2.3'
|
16
|
+
version2 = Version.new '1.2.3'
|
17
|
+
|
18
|
+
version1.should == version2
|
19
|
+
version1.should eql(version2)
|
20
|
+
version1.hash.should == version2.hash
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should return the string that was used to initialize it when to_s is called' do
|
24
|
+
version = Version.new '1.2.3'
|
25
|
+
version.to_s.should == '1.2.3'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: buildr-dependency-extensions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: "0.2"
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- John Shahid
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-05-24 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rake
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - "="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.8.7
|
24
|
+
type: :runtime
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: buildr
|
28
|
+
prerelease: false
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.4.5
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: xml-simple
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.0.12
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rspec-expectations
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - "="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 2.1.0
|
57
|
+
type: :runtime
|
58
|
+
version_requirements: *id004
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: rspec-mocks
|
61
|
+
prerelease: false
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - "="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 2.1.0
|
68
|
+
type: :runtime
|
69
|
+
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rspec-core
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - "="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 2.1.0
|
79
|
+
type: :runtime
|
80
|
+
version_requirements: *id006
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rspec
|
83
|
+
prerelease: false
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - "="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 2.1.0
|
90
|
+
type: :runtime
|
91
|
+
version_requirements: *id007
|
92
|
+
description:
|
93
|
+
email: jvshahid@gmail.com
|
94
|
+
executables: []
|
95
|
+
|
96
|
+
extensions: []
|
97
|
+
|
98
|
+
extra_rdoc_files: []
|
99
|
+
|
100
|
+
files:
|
101
|
+
- lib/buildr-dependency-extensions.rb
|
102
|
+
- lib/buildr-dependency-extensions/artifact.rb
|
103
|
+
- lib/buildr-dependency-extensions/dependency_caching.rb
|
104
|
+
- lib/buildr-dependency-extensions/pom.rb
|
105
|
+
- lib/buildr-dependency-extensions/pom-generator.rb
|
106
|
+
- lib/buildr-dependency-extensions/version.rb
|
107
|
+
- lib/buildr-dependency-extensions/resolver.rb
|
108
|
+
- lib/buildr-dependency-extensions/helper.rb
|
109
|
+
- lib/buildr-dependency-extensions/transitive-buildr.rb
|
110
|
+
- spec/helper_spec.rb
|
111
|
+
- spec/runtime_dependencies_spec.rb
|
112
|
+
- spec/test_dependencies_spec.rb
|
113
|
+
- spec/dependency_caching_spec.rb
|
114
|
+
- spec/issues/issue_0_spec.rb
|
115
|
+
- spec/issues/issue_2_spec.rb
|
116
|
+
- spec/version_spec.rb
|
117
|
+
- spec/compile_dependencies_spec.rb
|
118
|
+
- spec/pom_generator_spec.rb
|
119
|
+
- spec/maven_dependency_mechanism_spec.rb
|
120
|
+
- buildr-dependency-extensions.gemspec
|
121
|
+
homepage: https://github.com/jvshahid/transitive-buildr
|
122
|
+
licenses: []
|
123
|
+
|
124
|
+
post_install_message:
|
125
|
+
rdoc_options: []
|
126
|
+
|
127
|
+
require_paths:
|
128
|
+
- lib
|
129
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: "0"
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: "0"
|
141
|
+
requirements: []
|
142
|
+
|
143
|
+
rubyforge_project:
|
144
|
+
rubygems_version: 1.8.3
|
145
|
+
signing_key:
|
146
|
+
specification_version: 3
|
147
|
+
summary: A Buildr extension that enables transitive dependency resolution by default
|
148
|
+
test_files: []
|
149
|
+
|