buildr 1.4.25-x86-mswin32 → 1.5.0.dev2-x86-mswin32

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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +50 -0
  3. data/NOTICE +1 -1
  4. data/README.rdoc +1 -1
  5. data/addon/buildr/bnd.rb +0 -6
  6. data/addon/buildr/custom_pom.rb +6 -0
  7. data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
  8. data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
  9. data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
  10. data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
  11. data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
  12. data/addon/buildr/wsgen.rb +27 -27
  13. data/buildr.buildfile +1 -1
  14. data/buildr.gemspec +13 -9
  15. data/doc/_config.yml +3 -1
  16. data/doc/_layouts/default.html +1 -1
  17. data/doc/artifacts.textile +42 -0
  18. data/doc/download.textile +18 -6
  19. data/doc/languages.textile +15 -1
  20. data/doc/packaging.textile +1 -1
  21. data/doc/preface.textile +1 -1
  22. data/doc/projects.textile +13 -0
  23. data/doc/releasing.textile +14 -0
  24. data/doc/settings_profiles.textile +4 -0
  25. data/lib/buildr.rb +1 -0
  26. data/lib/buildr/core/application.rb +2 -3
  27. data/lib/buildr/core/build.rb +21 -34
  28. data/lib/buildr/core/compile.rb +0 -12
  29. data/lib/buildr/core/filter.rb +7 -0
  30. data/lib/buildr/core/generate.rb +1 -0
  31. data/lib/buildr/core/project.rb +14 -4
  32. data/lib/buildr/core/test.rb +2 -4
  33. data/lib/buildr/core/transports.rb +2 -0
  34. data/lib/buildr/groovy/bdd.rb +0 -7
  35. data/lib/buildr/ide/eclipse.rb +3 -3
  36. data/lib/buildr/java/ant.rb +0 -6
  37. data/lib/buildr/java/bdd.rb +0 -7
  38. data/lib/buildr/java/commands.rb +1 -1
  39. data/lib/buildr/java/deprecated.rb +0 -60
  40. data/lib/buildr/java/ecj.rb +16 -3
  41. data/lib/buildr/java/jruby.rb +19 -1
  42. data/lib/buildr/java/packaging.rb +4 -8
  43. data/lib/buildr/java/pom.rb +17 -12
  44. data/lib/buildr/java/rjb.rb +21 -3
  45. data/lib/buildr/java/tests.rb +0 -21
  46. data/lib/buildr/packaging/archive.rb +1 -1
  47. data/lib/buildr/packaging/artifact.rb +132 -3
  48. data/lib/buildr/packaging/zip.rb +32 -29
  49. data/lib/buildr/packaging/ziptask.rb +7 -5
  50. data/lib/buildr/scala.rb +0 -1
  51. data/lib/buildr/scala/bdd.rb +28 -122
  52. data/lib/buildr/scala/compiler.rb +24 -10
  53. data/lib/buildr/scala/doc.rb +0 -1
  54. data/lib/buildr/scala/org/apache/buildr/Specs2Runner.class +0 -0
  55. data/lib/buildr/scala/org/apache/buildr/Specs2Runner.java +4 -3
  56. data/lib/buildr/scala/org/apache/buildr/ZincRunner.class +0 -0
  57. data/lib/buildr/scala/org/apache/buildr/ZincRunner.java +37 -0
  58. data/lib/buildr/scala/tests.rb +18 -26
  59. data/lib/buildr/version.rb +1 -1
  60. data/spec/addon/bnd_spec.rb +5 -5
  61. data/spec/addon/custom_pom_spec.rb +38 -32
  62. data/spec/addon/jaxb_xjc_spec.rb +0 -4
  63. data/spec/core/application_spec.rb +4 -5
  64. data/spec/core/build_spec.rb +10 -51
  65. data/spec/core/common_spec.rb +7 -0
  66. data/spec/core/compile_spec.rb +0 -6
  67. data/spec/core/console_spec.rb +1 -1
  68. data/spec/core/generate_from_eclipse_spec.rb +22 -8
  69. data/spec/core/project_spec.rb +34 -70
  70. data/spec/core/test_spec.rb +6 -9
  71. data/spec/core/transport_spec.rb +16 -7
  72. data/spec/groovy/compiler_spec.rb +2 -2
  73. data/spec/java/ant_spec.rb +0 -5
  74. data/spec/java/compiler_spec.rb +4 -4
  75. data/spec/java/ecj_spec.rb +244 -45
  76. data/spec/java/java_spec.rb +7 -9
  77. data/spec/java/packaging_spec.rb +23 -23
  78. data/spec/java/pom_spec.rb +37 -0
  79. data/spec/java/tests_spec.rb +0 -5
  80. data/spec/packaging/archive_spec.rb +1 -1
  81. data/spec/packaging/artifact_spec.rb +129 -7
  82. data/spec/packaging/packaging_spec.rb +1 -1
  83. data/spec/sandbox.rb +2 -2
  84. data/spec/scala/bdd_spec.rb +0 -101
  85. data/spec/scala/compiler_spec.rb +20 -16
  86. data/spec/scala/doc_spec.rb +0 -11
  87. data/spec/scala/tests_spec.rb +6 -15
  88. data/spec/spec_helpers.rb +1 -1
  89. data/spec/xpath_matchers.rb +2 -1
  90. metadata +64 -22
  91. data/addon/buildr/cobertura.rb +0 -21
  92. data/addon/buildr/emma.rb +0 -21
@@ -51,6 +51,12 @@ else
51
51
  end
52
52
  end
53
53
 
54
+ describe 'Java.classpath' do
55
+ it 'should issue a warning if the classpath is modified after Java is loaded' do
56
+ lambda { Java.classpath << 'foo:bar:1.0' }.should show_warning(/Java is already loaded/)
57
+ end
58
+ end
59
+
54
60
 
55
61
  describe 'Java.tools_jar' do
56
62
  before do
@@ -121,12 +127,4 @@ describe 'Java#java' do
121
127
  after do
122
128
  ENV['JAVA_HOME'] = @old_home
123
129
  end
124
- end
125
-
126
-
127
- describe Java::JavaWrapper do
128
- it 'should be removed in version 1.5 since it was deprecated in version 1.3' do
129
- Buildr::VERSION.should < '1.5'
130
- lambda { Java::JavaWrapper }.should_not raise_error
131
- end
132
- end
130
+ end
@@ -91,13 +91,13 @@ shared_examples_for 'package with manifest' do
91
91
  it 'should not exist when manifest=false' do
92
92
  package_with_manifest false
93
93
  @project.package(@packaging).invoke
94
- Zip::ZipFile.open(@project.package(@packaging).to_s) do |zip|
95
- zip.file.exist?('META-INF/MANIFEST.MF').should be_false
94
+ Zip::File.open(@project.package(@packaging).to_s) do |zip|
95
+ zip.exist?('META-INF/MANIFEST.MF').should be_false
96
96
  end
97
97
  end
98
98
 
99
99
  it 'should generate a new manifest for a file that does not have one' do
100
- Zip::ZipOutputStream.open 'tmp.zip' do |zip|
100
+ Zip::OutputStream.open 'tmp.zip' do |zip|
101
101
  zip.put_next_entry 'empty.txt'
102
102
  end
103
103
  begin
@@ -135,7 +135,7 @@ shared_examples_for 'package with manifest' do
135
135
  package_with_manifest 'Foo'=>1, :bar=>'Bar'
136
136
  package = project('foo').package(@packaging)
137
137
  package.invoke
138
- Zip::ZipFile.open(package.to_s) { |zip| zip.file.read('META-INF/MANIFEST.MF').should =~ /#{Buildr::Packaging::Java::Manifest::LINE_SEPARATOR}$/ }
138
+ Zip::File.open(package.to_s) { |zip| zip.read('META-INF/MANIFEST.MF').should =~ /#{Buildr::Packaging::Java::Manifest::LINE_SEPARATOR}$/ }
139
139
  end
140
140
 
141
141
  it 'should break hash manifest lines longer than 72 characters using continuations' do
@@ -160,7 +160,7 @@ shared_examples_for 'package with manifest' do
160
160
  package_with_manifest [ { :foo=>'first' }, { :bar=>'second' } ]
161
161
  package = project('foo').package(@packaging)
162
162
  package.invoke
163
- Zip::ZipFile.open(package.to_s) { |zip| zip.file.read('META-INF/MANIFEST.MF')[-1].should == ?\n }
163
+ Zip::File.open(package.to_s) { |zip| zip.read('META-INF/MANIFEST.MF')[-1].should == ?\n }
164
164
  end
165
165
 
166
166
  it 'should break array manifest lines longer than 72 characters using continuations' do
@@ -202,8 +202,8 @@ shared_examples_for 'package with manifest' do
202
202
  package_with_manifest [ {}, { 'Name'=>'first', :Foo=>'first', :bar=>'second' } ]
203
203
  package ||= project('foo').package(@packaging)
204
204
  package.invoke
205
- Zip::ZipFile.open(package.to_s) do |zip|
206
- permissions = format("%o", zip.file.stat('META-INF/MANIFEST.MF').mode)
205
+ Zip::File.open(package.to_s) do |zip|
206
+ permissions = format("%o", zip.find_entry('META-INF/MANIFEST.MF').unix_perms)
207
207
  expected_mode = Buildr::Util.win_os? ? /666$/ : /644$/
208
208
  permissions.should match expected_mode
209
209
  end
@@ -214,7 +214,7 @@ shared_examples_for 'package with manifest' do
214
214
  package_with_manifest 'MANIFEST.MF'
215
215
  package ||= project('foo').package(@packaging)
216
216
  package.invoke
217
- Zip::ZipFile.open(package.to_s) do |zip|
217
+ Zip::File.open(package.to_s) do |zip|
218
218
  zip.read('META-INF/MANIFEST.MF').scan(/(Manifest-Version)/m).size.should == 1
219
219
  end
220
220
  end
@@ -251,7 +251,7 @@ shared_examples_for 'package with manifest' do
251
251
  packaging = @packaging
252
252
  package = define('foo', :version=>'1.0') { package(packaging) }.packages.first
253
253
  package.invoke
254
- Zip::ZipFile.open(package.to_s) do |zip|
254
+ Zip::File.open(package.to_s) do |zip|
255
255
  zip.entries.map(&:to_s).should include('META-INF/')
256
256
  end
257
257
  end
@@ -361,7 +361,7 @@ shared_examples_for 'package with meta_inf' do
361
361
  package = project('foo').package(@packaging)
362
362
  package.invoke
363
363
  assumed = Array(@meta_inf_ignore)
364
- Zip::ZipFile.open(package.to_s) do |zip|
364
+ Zip::File.open(package.to_s) do |zip|
365
365
  entries = zip.entries.map(&:name).select { |f| File.dirname(f) == 'META-INF' }.map { |f| File.basename(f) }
366
366
  assumed.each { |f| entries.should include(f) }
367
367
  yield entries - assumed if block_given?
@@ -435,7 +435,7 @@ describe Packaging, 'jar' do
435
435
  write 'src/main/java/Test.java', 'class Test {}'
436
436
  define('foo', :version=>'1.0') { package(:jar) }
437
437
  project('foo').package(:jar).invoke
438
- Zip::ZipFile.open(project('foo').package(:jar).to_s) do |jar|
438
+ Zip::File.open(project('foo').package(:jar).to_s) do |jar|
439
439
  entries_to_s = jar.entries.map(&:to_s).delete_if {|entry| entry[-1,1] == "/"}
440
440
  # Sometimes META-INF/ is counted as first entry, which is fair game.
441
441
  (entries_to_s.first == 'META-INF/MANIFEST.MF' || entries_to_s[1] == 'META-INF/MANIFEST.MF').should be_true
@@ -446,7 +446,7 @@ describe Packaging, 'jar' do
446
446
  write 'src/main/java/Test.java', 'class Test {}'
447
447
  define('foo', :version=>'1.0') { package(:jar) }
448
448
  project('foo').package(:jar).invoke
449
- Zip::ZipFile.open(project('foo').package(:jar).to_s) do |jar|
449
+ Zip::File.open(project('foo').package(:jar).to_s) do |jar|
450
450
  jar.entries.map(&:to_s).sort.should include('META-INF/MANIFEST.MF', 'Test.class')
451
451
  end
452
452
  end
@@ -455,7 +455,7 @@ describe Packaging, 'jar' do
455
455
  write 'src/main/resources/test/important.properties'
456
456
  define('foo', :version=>'1.0') { package(:jar) }
457
457
  project('foo').package(:jar).invoke
458
- Zip::ZipFile.open(project('foo').package(:jar).to_s) do |jar|
458
+ Zip::File.open(project('foo').package(:jar).to_s) do |jar|
459
459
  jar.entries.map(&:to_s).sort.should include('test/important.properties')
460
460
  end
461
461
  end
@@ -464,7 +464,7 @@ describe Packaging, 'jar' do
464
464
  write 'src/main/java/code/Test.java', 'package code ; class Test {}'
465
465
  define('foo', :version=>'1.0') { package(:jar) }
466
466
  project('foo').package(:jar).invoke
467
- Zip::ZipFile.open(project('foo').package(:jar).to_s) do |jar|
467
+ Zip::File.open(project('foo').package(:jar).to_s) do |jar|
468
468
  jar.entries.map(&:to_s).sort.should include('code/')
469
469
  end
470
470
  end
@@ -473,7 +473,7 @@ describe Packaging, 'jar' do
473
473
  write 'src/main/resources/test/.config'
474
474
  define('foo', :version=>'1.0') { package(:jar) }
475
475
  project('foo').package(:jar).invoke
476
- Zip::ZipFile.open(project('foo').package(:jar).to_s) do |jar|
476
+ Zip::File.open(project('foo').package(:jar).to_s) do |jar|
477
477
  jar.entries.map(&:to_s).sort.should include('test/.config')
478
478
  end
479
479
  end
@@ -482,7 +482,7 @@ describe Packaging, 'jar' do
482
482
  mkpath 'src/main/resources/empty'
483
483
  define('foo', :version=>'1.0') { package(:jar) }
484
484
  project('foo').package(:jar).invoke
485
- Zip::ZipFile.open(project('foo').package(:jar).to_s) do |jar|
485
+ Zip::File.open(project('foo').package(:jar).to_s) do |jar|
486
486
  jar.entries.map(&:to_s).sort.should include('empty/')
487
487
  end
488
488
  end
@@ -497,7 +497,7 @@ describe Packaging, 'jar' do
497
497
  write 'src/main/resources/foo.xml', ''
498
498
  foo = define('foo', :version => '1.0') { package(:jar).exclude('foo.xml')}
499
499
  foo.package(:jar).invoke
500
- Zip::ZipFile.open(foo.package(:jar).to_s) do |jar|
500
+ Zip::File.open(foo.package(:jar).to_s) do |jar|
501
501
  jar.entries.map(&:to_s).sort.should_not include('foo.xml')
502
502
  end
503
503
  end
@@ -519,7 +519,7 @@ describe Packaging, 'war' do
519
519
 
520
520
  def inspect_war
521
521
  project('foo').package(:war).invoke
522
- Zip::ZipFile.open(project('foo').package(:war).to_s) do |war|
522
+ Zip::File.open(project('foo').package(:war).to_s) do |war|
523
523
  yield war.entries.map(&:to_s).sort
524
524
  end
525
525
  end
@@ -678,7 +678,7 @@ describe Packaging, 'aar' do
678
678
 
679
679
  def inspect_aar
680
680
  project('foo').package(:aar).invoke
681
- Zip::ZipFile.open(project('foo').package(:aar).to_s) do |aar|
681
+ Zip::File.open(project('foo').package(:aar).to_s) do |aar|
682
682
  yield aar.entries.map(&:to_s).sort
683
683
  end
684
684
  end
@@ -752,23 +752,23 @@ describe Packaging, 'ear' do
752
752
 
753
753
  def inspect_ear
754
754
  project('foo').package(:ear).invoke
755
- Zip::ZipFile.open(project('foo').package(:ear).to_s) do |ear|
755
+ Zip::File.open(project('foo').package(:ear).to_s) do |ear|
756
756
  yield ear.entries.map(&:to_s).sort
757
757
  end
758
758
  end
759
759
 
760
760
  def inspect_application_xml
761
761
  project('foo').package(:ear).invoke
762
- Zip::ZipFile.open(project('foo').package(:ear).to_s) do |ear|
762
+ Zip::File.open(project('foo').package(:ear).to_s) do |ear|
763
763
  yield REXML::Document.new(ear.read('META-INF/application.xml')).root
764
764
  end
765
765
  end
766
766
 
767
767
  def inspect_classpath(package)
768
768
  project('foo').package(:ear).invoke
769
- Zip::ZipFile.open(project('foo').package(:ear).to_s) do |ear|
769
+ Zip::File.open(project('foo').package(:ear).to_s) do |ear|
770
770
  File.open('tmp.zip', 'wb') do |tmp|
771
- tmp.write ear.file.read(package)
771
+ tmp.write ear.read(package)
772
772
  end
773
773
  manifest = Buildr::Packaging::Java::Manifest.from_zip('tmp.zip')
774
774
  yield manifest.main['Class-Path'].split(' ')
@@ -123,3 +123,40 @@ XML
123
123
  pom.properties.should eql(specs)
124
124
  end
125
125
  end
126
+
127
+ describe Buildr::POM do
128
+ before do
129
+ repositories.remote = 'http://buildr.apache.org/repository/noexist'
130
+ @parent = 'group:app-parent:jar:1.1.1'
131
+ write artifact(@parent).pom.to_s, <<-XML
132
+ <project>
133
+ <artifactId>app-parent</artifactId>
134
+ <groupId>group</groupId>
135
+ <version>1.1.1</version>
136
+ </project>
137
+ XML
138
+ @app = 'group:app:jar:1.0'
139
+ write artifact(@app).pom.to_s, <<-XML
140
+ <project>
141
+ <artifactId>app</artifactId>
142
+ <groupId>group</groupId>
143
+ <parent>
144
+ <groupId>group</groupId>
145
+ <artifactId>app-parent</artifactId>
146
+ <version>1.1.1</version>
147
+ </parent>
148
+ <dependencies>
149
+ <dependency>
150
+ <artifactId>library</artifactId>
151
+ <groupId>org.example</groupId>
152
+ <version>${project.parent.version}</version>
153
+ </dependency>
154
+ </dependencies>
155
+ </project>
156
+ XML
157
+ end
158
+ it "should manage to resolve the version from the parent version" do
159
+ pom = POM.load(artifact(@app).pom)
160
+ pom.dependencies.should include('org.example:library:jar:1.1.1')
161
+ end
162
+ end
@@ -40,11 +40,6 @@ describe Buildr::JUnit do
40
40
  project('foo').test.dependencies.should include(artifact("junit:junit:jar:#{JUnit.version}"))
41
41
  end
42
42
 
43
- it 'should have REQUIRES up to version 1.5 since it was deprecated in 1.3.3' do
44
- Buildr::VERSION.should < '1.5'
45
- lambda { JUnit::REQUIRES }.should_not raise_error
46
- end
47
-
48
43
  it 'should pick JUnit version from junit build settings' do
49
44
  Buildr::JUnit.instance_eval { @dependencies = nil }
50
45
  write 'build.yaml', 'junit: 1.2.3'
@@ -524,7 +524,7 @@ describe "ZipTask" do
524
524
 
525
525
  def inspect_archive
526
526
  entries = {}
527
- Zip::ZipFile.open @archive do |zip|
527
+ Zip::File.open @archive do |zip|
528
528
  zip.entries.each do |entry|
529
529
  if entry.directory?
530
530
  # Ignore the / directory created for empty ZIPs when using java.util.zip.
@@ -209,6 +209,100 @@ describe Repositories, 'local' do
209
209
  end
210
210
  end
211
211
 
212
+ describe Repositories, 'remote_uri' do
213
+ before do
214
+ Buildr.repositories.instance_eval do
215
+ @local = @remote = @release_to = nil
216
+ end
217
+
218
+ @repos = [ 'https://oss.sonatype.org/', 'http://www.ibiblio.org/maven2', { :url => 'http://repo1.maven.org/maven2', :username => 'user', :password => 'password' } ]
219
+ end
220
+
221
+ it 'should convert remote to array of uri' do
222
+ uri = URI.parse( 'http://repo1.maven.org/maven2' )
223
+ uri.user = 'user'
224
+ uri.password = 'password'
225
+
226
+ uris = [ URI.parse( 'https://oss.sonatype.org/'), URI.parse( 'http://www.ibiblio.org/maven2' ), uri ]
227
+
228
+ repositories.remote = @repos
229
+ repositories.remote_uri.should eql(uris)
230
+ end
231
+ end
232
+
233
+ describe Repositories, 'mirrors' do
234
+ before do
235
+ Buildr.repositories.instance_eval do
236
+ @local = @remote = @release_to = @mirrors = nil
237
+ end
238
+
239
+ @repos = [ 'http://www.ibiblio.org/maven2', 'http://repo1.maven.org/maven2' ]
240
+ end
241
+
242
+ it 'should be empty initially' do
243
+ repositories.mirrors.should be_empty
244
+ end
245
+
246
+ it 'should be settable' do
247
+ repositories.mirrors = @repos.first
248
+ repositories.mirrors.should eql([@repos.first])
249
+ end
250
+
251
+ it 'should be settable from array' do
252
+ repositories.mirrors = @repos
253
+ repositories.mirrors.should eql(@repos)
254
+ end
255
+
256
+ it 'should add and return repositories in order' do
257
+ @repos.each { |url| repositories.mirrors << url }
258
+ repositories.mirrors.should eql(@repos)
259
+ end
260
+
261
+ it 'should log that it is overridding the remote repositories with the mirrors' do
262
+ @repos.each { |url| repositories.mirrors << url }
263
+ lambda { repositories.remote }.should show_info /Remote repositories overridden by mirrors /
264
+ end
265
+
266
+ it 'should load with all repositories specified in settings file' do
267
+ write 'home/.buildr/settings.yaml', <<-YAML
268
+ repositories:
269
+ mirrors:
270
+ - http://example.com/repository/noexist
271
+ remote:
272
+ - http://foobar.com
273
+ YAML
274
+ repositories.mirrors.should include('http://example.com/repository/noexist')
275
+ end
276
+
277
+ it 'should load with all repositories specified in build.yaml file' do
278
+ write 'build.yaml', <<-YAML
279
+ repositories:
280
+ mirrors:
281
+ - http://example.com/repository/noexist
282
+ remote:
283
+ - http://foobar.com
284
+ YAML
285
+ repositories.mirrors.should include('http://example.com/repository/noexist')
286
+ end
287
+
288
+ it 'should load with all repositories specified in settings and build.yaml files' do
289
+ write 'home/.buildr/settings.yaml', <<-YAML
290
+ repositories:
291
+ mirrors:
292
+ - http://example.com/repository/noexist
293
+ remote:
294
+ - http://foobar.com
295
+ YAML
296
+ write 'build.yaml', <<-YAML
297
+ repositories:
298
+ mirrors:
299
+ - http://example.com/repo2
300
+ remote:
301
+ - http://foobar.com
302
+ YAML
303
+ repositories.mirrors.should include('http://example.com/repository/noexist', 'http://example.com/repo2')
304
+ end
305
+ end
212
306
 
213
307
  describe Repositories, 'remote' do
214
308
  before do
@@ -581,6 +675,10 @@ describe Buildr, '#artifact' do
581
675
  artifact(@spec.merge(:type=>nil)).should respond_to(:invoke)
582
676
  end
583
677
 
678
+ it 'should use JAR type if type is set to bundle' do
679
+ artifact(@spec.merge(:type=>:bundle)).to_s.should match('\.jar$')
680
+ end
681
+
584
682
  it 'should accept string specification' do
585
683
  artifact('com.example:library:jar:2.0').should respond_to(:invoke)
586
684
  end
@@ -855,7 +953,6 @@ describe Buildr, '#install' do
855
953
  @spec = 'group:id:jar:all:1.0'
856
954
  pom = artifact(@spec).pom
857
955
  write @file
858
- p method(:install)
859
956
  install artifact(@spec).from(@file)
860
957
  lambda { install.invoke }.should_not change { File.exist?(repositories.locate(pom)) }.to(true)
861
958
  end
@@ -901,6 +998,7 @@ end
901
998
 
902
999
 
903
1000
  describe ActsAsArtifact, '#upload' do
1001
+
904
1002
  it 'should be used to upload artifact' do
905
1003
  artifact = artifact('com.example:library:jar:2.0')
906
1004
  # Prevent artifact from downloading anything.
@@ -929,6 +1027,24 @@ describe ActsAsArtifact, '#upload' do
929
1027
  write repositories.locate(artifact.pom)
930
1028
  lambda { artifact.upload }.should raise_error(Exception, /where to upload/)
931
1029
  end
1030
+
1031
+ it 'should upload SNAPSHOT with timestamped unique version and maven metadata' do
1032
+ artifact = artifact('com.example:library:jar:2.0-SNAPSHOT')
1033
+ # Prevent artifact from downloading anything.
1034
+ write repositories.locate(artifact)
1035
+ write repositories.locate(artifact.pom)
1036
+
1037
+ time = Time.gm(2011,"mar",11,14,02,36,123)
1038
+ Time.stub(:now).and_return(time)
1039
+
1040
+ URI.should_receive(:upload).once.
1041
+ with(URI.parse('sftp://example.com/base/com/example/library/2.0-SNAPSHOT/library-2.0-20110311.140236-1.pom'), artifact.pom.to_s, anything)
1042
+ URI.should_receive(:upload).once.
1043
+ with(URI.parse('sftp://example.com/base/com/example/library/2.0-SNAPSHOT/library-2.0-20110311.140236-1.jar'), artifact.to_s, anything)
1044
+ URI.should_receive(:write).once.
1045
+ with(URI.parse('sftp://example.com/base/com/example/library/2.0-SNAPSHOT/maven_metadata.xml'), anything, anything)
1046
+ verbose(false) { artifact.upload(:url=>'sftp://example.com/base') }
1047
+ end
932
1048
 
933
1049
  it 'should accept repositories.release_to setting' do
934
1050
  artifact = artifact('com.example:library:jar:2.0')
@@ -942,28 +1058,36 @@ describe ActsAsArtifact, '#upload' do
942
1058
  end
943
1059
 
944
1060
  it 'should use repositories.release_to setting even for snapshots when snapshot_to is not set' do
1061
+ time = Time.gm(2016,"nov",11,14,02,36,123)
1062
+ Time.stub(:now).and_return(time)
945
1063
  artifact = artifact('com.example:library:jar:2.0-SNAPSHOT')
946
1064
  # Prevent artifact from downloading anything.
947
1065
  write repositories.locate(artifact)
948
1066
  write repositories.locate(artifact.pom)
949
1067
  URI.should_receive(:upload).once.
950
- with(URI.parse('sftp://buildr.apache.org/repository/noexist/base/com/example/library/2.0-SNAPSHOT/library-2.0-SNAPSHOT.pom'), artifact.pom.to_s, anything)
1068
+ with(URI.parse('sftp://buildr.apache.org/repository/noexist/base/com/example/library/2.0-SNAPSHOT/library-2.0-20161111.140236-1.pom'), artifact.pom.to_s, anything)
951
1069
  URI.should_receive(:upload).once.
952
- with(URI.parse('sftp://buildr.apache.org/repository/noexist/base/com/example/library/2.0-SNAPSHOT/library-2.0-SNAPSHOT.jar'), artifact.to_s, anything)
1070
+ with(URI.parse('sftp://buildr.apache.org/repository/noexist/base/com/example/library/2.0-SNAPSHOT/library-2.0-20161111.140236-1.jar'), artifact.to_s, anything)
1071
+ URI.should_receive(:write).once.
1072
+ with(URI.parse('sftp://buildr.apache.org/repository/noexist/base/com/example/library/2.0-SNAPSHOT/maven_metadata.xml'), anything, anything)
953
1073
  repositories.release_to = 'sftp://buildr.apache.org/repository/noexist/base'
954
1074
  artifact.upload
955
1075
  lambda { artifact.upload }.should_not raise_error
956
1076
  end
957
1077
 
958
1078
  it 'should use repositories.snapshot_to setting when snapshot_to is set' do
1079
+ time = Time.gm(2016,"nov",11,14,02,36,123)
1080
+ Time.stub(:now).and_return(time)
959
1081
  artifact = artifact('com.example:library:jar:2.0-SNAPSHOT')
960
1082
  # Prevent artifact from downloading anything.
961
1083
  write repositories.locate(artifact)
962
1084
  write repositories.locate(artifact.pom)
963
1085
  URI.should_receive(:upload).once.
964
- with(URI.parse('sftp://buildr.apache.org/repository/noexist/snapshot/com/example/library/2.0-SNAPSHOT/library-2.0-SNAPSHOT.pom'), artifact.pom.to_s, anything)
1086
+ with(URI.parse('sftp://buildr.apache.org/repository/noexist/snapshot/com/example/library/2.0-SNAPSHOT/library-2.0-20161111.140236-1.pom'), artifact.pom.to_s, anything)
965
1087
  URI.should_receive(:upload).once.
966
- with(URI.parse('sftp://buildr.apache.org/repository/noexist/snapshot/com/example/library/2.0-SNAPSHOT/library-2.0-SNAPSHOT.jar'), artifact.to_s, anything)
1088
+ with(URI.parse('sftp://buildr.apache.org/repository/noexist/snapshot/com/example/library/2.0-SNAPSHOT/library-2.0-20161111.140236-1.jar'), artifact.to_s, anything)
1089
+ URI.should_receive(:write).once.
1090
+ with(URI.parse('sftp://buildr.apache.org/repository/noexist/snapshot/com/example/library/2.0-SNAPSHOT/maven_metadata.xml'), anything, anything)
967
1091
  repositories.release_to = 'sftp://buildr.apache.org/repository/noexist/base'
968
1092
  repositories.snapshot_to = 'sftp://buildr.apache.org/repository/noexist/snapshot'
969
1093
  artifact.upload
@@ -978,8 +1102,6 @@ describe ActsAsArtifact, '#upload' do
978
1102
  repositories.snapshot_to = 'sftp://buildr.apache.org/repository/noexist/snapshot'
979
1103
  lambda { artifact.upload }.should raise_error(Exception, /where to upload/)
980
1104
  end
981
-
982
-
983
1105
  end
984
1106
 
985
1107