buildr-dependency-extensions 0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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,60 @@
|
|
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 'Compile 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:foobar:jar:1.0').pom.to_s, <<-XML
|
16
|
+
<project>
|
17
|
+
<artifactId>foobar</artifactId>
|
18
|
+
<groupId>foo</groupId>
|
19
|
+
</project>
|
20
|
+
XML
|
21
|
+
|
22
|
+
write artifact('transitive:dependencies:jar:1.0').pom.to_s, <<-XML
|
23
|
+
<project>
|
24
|
+
<artifactId>transitive</artifactId>
|
25
|
+
<groupId>dependencies</groupId>
|
26
|
+
|
27
|
+
<dependencies>
|
28
|
+
<dependency>
|
29
|
+
<groupId>foo</groupId>
|
30
|
+
<artifactId>foobar</artifactId>
|
31
|
+
<version>1.0</version>
|
32
|
+
<scope>compile</scope>
|
33
|
+
</dependency>
|
34
|
+
<dependency>
|
35
|
+
<groupId>foo</groupId>
|
36
|
+
<artifactId>bar</artifactId>
|
37
|
+
<version>1.0</version>
|
38
|
+
<scope>runtime</scope>
|
39
|
+
</dependency>
|
40
|
+
</dependencies>
|
41
|
+
</project>
|
42
|
+
XML
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'maven dependency mechanism' do
|
46
|
+
it 'transitively adds compile dependencies and runtime dependencies of this project runtime dependencies to the runtime dependencies' do
|
47
|
+
define "TestProject" do
|
48
|
+
extend TransitiveDependencies
|
49
|
+
project.version = '1.0'
|
50
|
+
|
51
|
+
project.transitive_scopes = [:compile]
|
52
|
+
|
53
|
+
compile.with 'transitive:dependencies:jar:1.0'
|
54
|
+
end
|
55
|
+
|
56
|
+
expected_dependencies = [artifact('foo:foobar:jar:1.0'), artifact('transitive:dependencies:jar:1.0')]
|
57
|
+
project('TestProject').compile.dependencies.should ==(expected_dependencies)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,135 @@
|
|
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 BuildrDependencyExtensions::DependencyCaching 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
|
+
end
|
15
|
+
|
16
|
+
after(:each) do
|
17
|
+
FileUtils.rm_f(project('TestProject').path_to('dependency.cache'))
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'reads and write the runtime dependencies to and from a dependency cache file' do
|
21
|
+
define "TestProject" do
|
22
|
+
end
|
23
|
+
|
24
|
+
project = project('TestProject')
|
25
|
+
project.run.with(artifact('foo:bar:jar:1.1'))
|
26
|
+
|
27
|
+
dependency_caching = DependencyCaching.new(project)
|
28
|
+
|
29
|
+
dependency_caching.write_cache
|
30
|
+
|
31
|
+
project.run.classpath = []
|
32
|
+
|
33
|
+
dependency_cache = dependency_caching.read_cache
|
34
|
+
|
35
|
+
dependency_cache['runtime'].should ==([artifact('foo:bar:jar:1.1')])
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'reads and write the compile dependencies to and from a dependency cache file' do
|
39
|
+
define "TestProject" do
|
40
|
+
end
|
41
|
+
|
42
|
+
project = project('TestProject')
|
43
|
+
project.compile.with(artifact('foo:bar:jar:1.1'))
|
44
|
+
|
45
|
+
dependency_caching = DependencyCaching.new(project)
|
46
|
+
|
47
|
+
dependency_caching.write_cache
|
48
|
+
|
49
|
+
project.compile.dependencies = []
|
50
|
+
|
51
|
+
dependency_cache = dependency_caching.read_cache
|
52
|
+
|
53
|
+
dependency_cache['compile'].should ==([artifact('foo:bar:jar:1.1')])
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'reads and write the test dependencies to and from a dependency cache file' do
|
57
|
+
define "TestProject" do
|
58
|
+
end
|
59
|
+
|
60
|
+
project = project('TestProject')
|
61
|
+
project.test.with(artifact('foo:bar:jar:1.1'))
|
62
|
+
|
63
|
+
dependency_caching = DependencyCaching.new(project)
|
64
|
+
|
65
|
+
dependency_caching.write_cache
|
66
|
+
|
67
|
+
project.test.dependencies = project.test.compile.dependencies = []
|
68
|
+
|
69
|
+
dependency_cache = dependency_caching.read_cache
|
70
|
+
|
71
|
+
dependency_cache['test'].should ==([artifact('foo:bar:jar:1.1')])
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'return nil if no dependency cache file exist' do
|
75
|
+
define "TestProject" do
|
76
|
+
end
|
77
|
+
|
78
|
+
project = project('TestProject')
|
79
|
+
|
80
|
+
dependency_caching = DependencyCaching.new(project)
|
81
|
+
|
82
|
+
dependency_caching.read_cache.should ==(nil)
|
83
|
+
end
|
84
|
+
|
85
|
+
describe('cache_dependencies property') do
|
86
|
+
it 'causes the plugin to save the dependency cache file if it does not exist when set to true' do
|
87
|
+
dependency_caching_mock = stub('dependency_caching_mock')
|
88
|
+
dependency_caching_mock.should_receive(:read_cache).and_return(nil)
|
89
|
+
dependency_caching_mock.should_receive(:write_cache)
|
90
|
+
DependencyCaching.stub!(:new).and_return(dependency_caching_mock)
|
91
|
+
DependencyCaching.should_receive(:new).and_return(dependency_caching_mock)
|
92
|
+
|
93
|
+
define "TestProject" do
|
94
|
+
extend TransitiveDependencies
|
95
|
+
|
96
|
+
project.transitive_scopes = [:compile]
|
97
|
+
project.cache_dependencies = true
|
98
|
+
|
99
|
+
compile.with artifact('foo:bar:jar:1.0')
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'causes the plugin to load the dependency cache file if it exists when set to true' do
|
104
|
+
dependency_caching_mock = stub('dependency_caching_mock')
|
105
|
+
dependency_caching_mock.should_receive(:read_cache).and_return({'compile' => [artifact('foo:bar:jar:1.0')]})
|
106
|
+
dependency_caching_mock.should_not_receive(:write_cache)
|
107
|
+
DependencyCaching.stub!(:new).and_return(dependency_caching_mock)
|
108
|
+
DependencyCaching.should_receive(:new).and_return(dependency_caching_mock)
|
109
|
+
|
110
|
+
define "TestProject" do
|
111
|
+
extend TransitiveDependencies
|
112
|
+
|
113
|
+
project.transitive_scopes = [:compile]
|
114
|
+
project.cache_dependencies = true
|
115
|
+
end
|
116
|
+
|
117
|
+
project('TestProject').compile.dependencies.should ==([artifact('foo:bar:jar:1.0')])
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'does not load the dependency cache file when set to false' do
|
121
|
+
dependency_caching_mock = stub('dependency_caching_mock')
|
122
|
+
dependency_caching_mock.should_receive(:read_cache).and_return({'compile' => [artifact('foo:bar:jar:1.0')]})
|
123
|
+
dependency_caching_mock.should_receive(:write_cache)
|
124
|
+
DependencyCaching.should_receive(:new).and_return(dependency_caching_mock)
|
125
|
+
|
126
|
+
define "TestProject" do
|
127
|
+
extend TransitiveDependencies
|
128
|
+
|
129
|
+
project.transitive_scopes = [:compile]
|
130
|
+
end
|
131
|
+
|
132
|
+
project('TestProject').compile.dependencies.should ==([])
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
data/spec/helper_spec.rb
ADDED
@@ -0,0 +1,53 @@
|
|
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 HelperFunctions do
|
8
|
+
describe 'get_unique_group_artifact' do
|
9
|
+
it 'should return a set of artifacts with version set to 0 given a set of artifacts' do
|
10
|
+
original_set = ['foo:bar:jar:1.0', 'bar:foo:jar:2.0']
|
11
|
+
actual_set = HelperFunctions.get_unique_group_artifact original_set
|
12
|
+
expected_set = ['foo:bar:jar:0', 'bar:foo:jar:0']
|
13
|
+
actual_set.should == expected_set
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should return a array of unique artifacts given a set of artifacts' do
|
17
|
+
original_set = ['foo:bar:jar:1.0', 'foo:bar:jar:2.0']
|
18
|
+
actual_set = HelperFunctions.get_unique_group_artifact original_set
|
19
|
+
expected_set = ['foo:bar:jar:0']
|
20
|
+
actual_set.should == expected_set
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'get_all_versions' do
|
26
|
+
it 'should return all versions in descending order given an artifact and a set of artifacts' do
|
27
|
+
artifact = 'foo:bar:jar:0'
|
28
|
+
original_set = ['foo:bar:jar:1.0', 'foo:bar:jar:2.0']
|
29
|
+
actual_versions = HelperFunctions.get_all_versions artifact, original_set
|
30
|
+
expected_versions = [Version.new('2.0'), Version.new('1.0')]
|
31
|
+
actual_versions.should == expected_versions
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should return one version only if given an artifact and a set of artifacts with one occurence of the given artifact' do
|
35
|
+
artifact = 'foo:foobar:jar:0'
|
36
|
+
original_set = ['foo:bar:jar:1.0', 'foo:bar:jar:2.0', 'foo:foobar:jar:1.0']
|
37
|
+
actual_versions = HelperFunctions.get_all_versions artifact, original_set
|
38
|
+
expected_versions = [Version.new('1.0')]
|
39
|
+
actual_versions.should == expected_versions
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should not return repeated versions' do
|
43
|
+
artifact = 'foo:bar:jar:0'
|
44
|
+
original_set = ['foo:bar:jar:1.0', 'foo:bar:jar:1.0']
|
45
|
+
actual_versions = HelperFunctions.get_all_versions artifact, original_set
|
46
|
+
expected_versions = [Version.new('1.0')]
|
47
|
+
actual_versions.should == expected_versions
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,54 @@
|
|
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 'Issue 1, mockito 1.8.1-rc1 is chosen instead of 1.8.5' do
|
7
|
+
before(:each) do
|
8
|
+
write artifact('foo:bar:jar:1.2').pom.to_s, <<-XML
|
9
|
+
<project>
|
10
|
+
<artifactId>bar</artifactId>
|
11
|
+
<groupId>fuu</groupId>
|
12
|
+
|
13
|
+
<dependencies>
|
14
|
+
<dependency>
|
15
|
+
<groupId>org.mockito</groupId>
|
16
|
+
<artifactId>mockito</artifactId>
|
17
|
+
<version>1.8.1-rc1</version>
|
18
|
+
<scope>test</scope>
|
19
|
+
</dependency>
|
20
|
+
</dependencies>
|
21
|
+
</project>
|
22
|
+
XML
|
23
|
+
|
24
|
+
write artifact('org.mockito:mockito:jar:1.8.5').pom.to_s, <<-XML
|
25
|
+
<project>
|
26
|
+
<artifactId>mockito</artifactId>
|
27
|
+
<groupId>org.mockito</groupId>
|
28
|
+
</project>
|
29
|
+
XML
|
30
|
+
|
31
|
+
write artifact('org.mockito:mockito:jar:1.8.1-rc1').pom.to_s, <<-XML
|
32
|
+
<project>
|
33
|
+
<artifactId>mockito</artifactId>
|
34
|
+
<groupId>org.mockito</groupId>
|
35
|
+
</project>
|
36
|
+
XML
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should not use mockito 1.8.5 instead of 1.8.1-rc1' do
|
41
|
+
define "Issue1Project" do
|
42
|
+
extend TransitiveDependencies
|
43
|
+
project.version = '1.0'
|
44
|
+
project.transitive_scopes = [:compile, :test]
|
45
|
+
|
46
|
+
compile.with 'foo:bar:jar:1.2'
|
47
|
+
test.with 'org.mockito:mockito:jar:1.8.5'
|
48
|
+
end
|
49
|
+
|
50
|
+
expected_test_dependencies = [artifact('org.mockito:mockito:jar:1.8.5'), artifact('foo:bar:jar:1.2')]
|
51
|
+
actual_test_dependencies = project('Issue1Project').test.dependencies
|
52
|
+
actual_test_dependencies.should == expected_test_dependencies
|
53
|
+
end
|
54
|
+
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
|
+
require File.expand_path(File.join('spec', 'spec_helpers'), Gem::GemPathSearcher.new.find('buildr').full_gem_path)
|
5
|
+
|
6
|
+
describe 'dependency resolution with jar dependencies' do
|
7
|
+
it 'throws exception: undefined method depth= for JarTask' do
|
8
|
+
define "TestProject" do
|
9
|
+
project.version = '1.0'
|
10
|
+
extend TransitiveDependencies
|
11
|
+
project.transitive_scopes = [:compile]
|
12
|
+
|
13
|
+
define 'bar' do
|
14
|
+
extend TransitiveDependencies
|
15
|
+
project.transitive_scopes = [:compile]
|
16
|
+
package :jar
|
17
|
+
end
|
18
|
+
|
19
|
+
define 'baz' do
|
20
|
+
extend TransitiveDependencies
|
21
|
+
project.transitive_scopes = [:compile]
|
22
|
+
compile.with project("bar")
|
23
|
+
package :jar
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
project('TestProject:baz').compile.dependencies[0].depth
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib/buildr-dependency-extensions'))
|
3
|
+
require File.expand_path(File.join('spec', 'spec_helpers'), Gem::GemPathSearcher.new.find('buildr').full_gem_path)
|
4
|
+
|
5
|
+
describe 'Maven' do
|
6
|
+
before(:each) do
|
7
|
+
write artifact('foo:bar:jar:2.0').pom.to_s, <<-XML
|
8
|
+
<project>
|
9
|
+
<artifactId>bar</artifactId>
|
10
|
+
<groupId>foo</groupId>
|
11
|
+
</project>
|
12
|
+
XML
|
13
|
+
|
14
|
+
write artifact('foo:bar:jar:2.1').pom.to_s, <<-XML
|
15
|
+
<project>
|
16
|
+
<artifactId>bar</artifactId>
|
17
|
+
<groupId>foo</groupId>
|
18
|
+
</project>
|
19
|
+
XML
|
20
|
+
|
21
|
+
write artifact('transitive:dependencies:jar:2.0').pom.to_s, <<-XML
|
22
|
+
<project>
|
23
|
+
<artifactId>transitive</artifactId>
|
24
|
+
<groupId>dependencies</groupId>
|
25
|
+
|
26
|
+
<dependencies>
|
27
|
+
<dependency>
|
28
|
+
<groupId>foo</groupId>
|
29
|
+
<artifactId>bar</artifactId>
|
30
|
+
<version>2.1</version>
|
31
|
+
<scope>runtime</scope>
|
32
|
+
</dependency>
|
33
|
+
</dependencies>
|
34
|
+
</project>
|
35
|
+
XML
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'version conflict resolver' do
|
39
|
+
it 'uses the depth of the dependency to resolve version conflicts' do
|
40
|
+
define "TestProject" do
|
41
|
+
extend TransitiveDependencies
|
42
|
+
project.version = '1.0'
|
43
|
+
|
44
|
+
project.transitive_scopes = [:run]
|
45
|
+
|
46
|
+
run.with 'foo:bar:jar:2.0'
|
47
|
+
run.with 'transitive:dependencies:jar:2.0'
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
expected_dependencies = [artifact('foo:bar:jar:2.0'), artifact('transitive:dependencies:jar:2.0')]
|
52
|
+
project('TestProject').run.classpath.should ==(expected_dependencies)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'buildr'
|
3
|
+
require 'xmlsimple'
|
4
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib/buildr-dependency-extensions'))
|
5
|
+
|
6
|
+
|
7
|
+
describe BuildrDependencyExtensions::PomGenerator do
|
8
|
+
before(:each) do
|
9
|
+
write artifact('foo:bar:jar:1.0').pom.to_s, <<-XML
|
10
|
+
<project>
|
11
|
+
<artifactId>bar</artifactId>
|
12
|
+
<groupId>foo</groupId>
|
13
|
+
</project>
|
14
|
+
XML
|
15
|
+
|
16
|
+
write artifact('foo:bar:jar:1.1').pom.to_s, <<-XML
|
17
|
+
<project>
|
18
|
+
<artifactId>bar</artifactId>
|
19
|
+
<groupId>foo</groupId>
|
20
|
+
</project>
|
21
|
+
XML
|
22
|
+
|
23
|
+
write artifact('foo:foobar:jar:1.0').pom.to_s, <<-XML
|
24
|
+
<project>
|
25
|
+
<artifactId>foobar</artifactId>
|
26
|
+
<groupId>foo</groupId>
|
27
|
+
</project>
|
28
|
+
XML
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should not add any dependencies if PomGenerator isn't included" do
|
32
|
+
define "TestProject" do
|
33
|
+
extend TransitiveDependencies
|
34
|
+
|
35
|
+
project.version = '1.0-SNAPSHOT'
|
36
|
+
project.group = 'foo.bar'
|
37
|
+
compile.with 'foo:bar:jar:1.0'
|
38
|
+
end
|
39
|
+
|
40
|
+
pom = project('TestProject').package(:jar).pom
|
41
|
+
pom.invoke
|
42
|
+
generated_pom_hash = XmlSimple.xml_in(File.open(pom.to_s).read, {'ForceArray' => false})
|
43
|
+
expected_pom_hash = {
|
44
|
+
'modelVersion' => '4.0.0',
|
45
|
+
'groupId' => 'foo.bar',
|
46
|
+
'artifactId' => 'TestProject',
|
47
|
+
'version' => '1.0-SNAPSHOT'
|
48
|
+
}
|
49
|
+
generated_pom_hash.should eql expected_pom_hash
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should add all compile dependencies with compile scope' do
|
53
|
+
define "TestProject" do
|
54
|
+
extend PomGenerator
|
55
|
+
|
56
|
+
project.version = '1.0-SNAPSHOT'
|
57
|
+
project.group = 'foo.bar'
|
58
|
+
compile.with 'foo:bar:jar:1.0'
|
59
|
+
end
|
60
|
+
|
61
|
+
pom = project('TestProject').package(:jar).pom
|
62
|
+
pom.invoke
|
63
|
+
generated_pom_hash = XmlSimple.xml_in(File.open(pom.to_s).read, {'ForceArray' => ['dependencies']})
|
64
|
+
expected_pom_hash = {
|
65
|
+
'modelVersion' => '4.0.0',
|
66
|
+
'groupId' => 'foo.bar',
|
67
|
+
'artifactId' => 'TestProject',
|
68
|
+
'version' => '1.0-SNAPSHOT',
|
69
|
+
'dependencies' =>
|
70
|
+
[{ 'dependency' => {
|
71
|
+
'groupId' => 'foo',
|
72
|
+
'artifactId' => 'bar',
|
73
|
+
'version' => '1.0',
|
74
|
+
'scope' => 'compile',
|
75
|
+
'type' => 'jar'
|
76
|
+
}
|
77
|
+
}]
|
78
|
+
}
|
79
|
+
generated_pom_hash.should eql expected_pom_hash
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should add all runtime dependencies with runtime scope' do
|
83
|
+
define "TestProject" do
|
84
|
+
extend PomGenerator
|
85
|
+
|
86
|
+
project.version = '1.0-SNAPSHOT'
|
87
|
+
project.group = 'foo.bar'
|
88
|
+
run.with ['foo:bar:jar:1.0', 'foo:foobar:jar:1.0']
|
89
|
+
end
|
90
|
+
|
91
|
+
pom = project('TestProject').package(:jar).pom
|
92
|
+
pom.invoke
|
93
|
+
generated_pom_hash = XmlSimple.xml_in(File.open(pom.to_s).read, {'ForceArray' => ['dependency', 'plugin']})
|
94
|
+
expected_pom_hash = {
|
95
|
+
'modelVersion' => '4.0.0',
|
96
|
+
'groupId' => 'foo.bar',
|
97
|
+
'artifactId' => 'TestProject',
|
98
|
+
'version' => '1.0-SNAPSHOT',
|
99
|
+
'dependencies' => { 'dependency' =>
|
100
|
+
[{
|
101
|
+
'groupId' => 'foo',
|
102
|
+
'artifactId' => 'bar',
|
103
|
+
'version' => '1.0',
|
104
|
+
'scope' => 'runtime',
|
105
|
+
'type' => 'jar'
|
106
|
+
},
|
107
|
+
{
|
108
|
+
'groupId' => 'foo',
|
109
|
+
'artifactId' => 'foobar',
|
110
|
+
'version' => '1.0',
|
111
|
+
'scope' => 'runtime',
|
112
|
+
'type' => 'jar'
|
113
|
+
}]
|
114
|
+
}
|
115
|
+
}
|
116
|
+
generated_pom_hash.should eql expected_pom_hash
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'should add all test dependencies with test scope' do
|
120
|
+
define "TestProject" do
|
121
|
+
extend PomGenerator
|
122
|
+
|
123
|
+
project.version = '1.0-SNAPSHOT'
|
124
|
+
project.group = 'foo.bar'
|
125
|
+
test.with 'foo:bar:jar:1.0'
|
126
|
+
end
|
127
|
+
|
128
|
+
pom = project('TestProject').package(:jar).pom
|
129
|
+
pom.invoke
|
130
|
+
generated_pom_hash = XmlSimple.xml_in(File.open(pom.to_s).read, {'ForceArray' => ['dependency', 'plugin']})
|
131
|
+
expected_pom_hash = {
|
132
|
+
'modelVersion' => '4.0.0',
|
133
|
+
'groupId' => 'foo.bar',
|
134
|
+
'artifactId' => 'TestProject',
|
135
|
+
'version' => '1.0-SNAPSHOT',
|
136
|
+
'dependencies' => { 'dependency' =>
|
137
|
+
[{
|
138
|
+
'groupId' => 'foo',
|
139
|
+
'artifactId' => 'bar',
|
140
|
+
'version' => '1.0',
|
141
|
+
'scope' => 'test',
|
142
|
+
'type' => 'jar'
|
143
|
+
}]
|
144
|
+
}
|
145
|
+
}
|
146
|
+
generated_pom_hash.should eql expected_pom_hash
|
147
|
+
end
|
148
|
+
|
149
|
+
|
150
|
+
it 'adds all extra pom sections to the generated pom' do
|
151
|
+
define "TestProject" do
|
152
|
+
extend PomGenerator
|
153
|
+
|
154
|
+
project.version = '1.0-SNAPSHOT'
|
155
|
+
project.group = 'foo.bar'
|
156
|
+
test.with 'foo:bar:jar:1.0'
|
157
|
+
|
158
|
+
project.extra_pom_sections['plugins'] = [{'plugin' => {'groupId' => 'foo', 'artifactId' => 'bar'}}]
|
159
|
+
end
|
160
|
+
|
161
|
+
pom = project('TestProject').package(:jar).pom
|
162
|
+
pom.invoke
|
163
|
+
generated_pom_hash = XmlSimple.xml_in(File.open(pom.to_s).read, {'ForceArray' => ['dependency', 'plugin']})
|
164
|
+
expected_pom_hash = {
|
165
|
+
'modelVersion' => '4.0.0',
|
166
|
+
'groupId' => 'foo.bar',
|
167
|
+
'artifactId' => 'TestProject',
|
168
|
+
'version' => '1.0-SNAPSHOT',
|
169
|
+
'dependencies' => { 'dependency' =>
|
170
|
+
[{
|
171
|
+
'groupId' => 'foo',
|
172
|
+
'artifactId' => 'bar',
|
173
|
+
'version' => '1.0',
|
174
|
+
'scope' => 'test',
|
175
|
+
'type' => 'jar'
|
176
|
+
}]
|
177
|
+
},
|
178
|
+
'plugins' => { 'plugin' =>
|
179
|
+
[{
|
180
|
+
'groupId' => 'foo',
|
181
|
+
'artifactId' => 'bar'
|
182
|
+
}]
|
183
|
+
}
|
184
|
+
}
|
185
|
+
generated_pom_hash.should eql expected_pom_hash
|
186
|
+
end
|
187
|
+
end
|