buildr-dependency-extensions 0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+