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.
@@ -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
+