buildr 1.4.4 → 1.4.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +46 -0
- data/Rakefile +0 -1
- data/addon/buildr/bnd.rb +147 -0
- data/addon/buildr/jaxb_xjc.rb +72 -0
- data/addon/buildr/protobuf.rb +14 -1
- data/buildr.gemspec +6 -2
- data/doc/artifacts.textile +6 -0
- data/doc/contributing.textile +3 -0
- data/doc/download.textile +60 -0
- data/doc/index.textile +9 -15
- data/doc/installing.textile +23 -6
- data/doc/mailing_lists.textile +4 -0
- data/doc/more_stuff.textile +333 -6
- data/doc/packaging.textile +187 -1
- data/lib/buildr.rb +8 -1
- data/lib/buildr/clojure.rb +34 -0
- data/lib/buildr/clojure/shell.rb +52 -0
- data/lib/buildr/core.rb +3 -0
- data/lib/buildr/core/#application.rb# +700 -0
- data/lib/buildr/core/application.rb +18 -8
- data/lib/buildr/core/build.rb +2 -2
- data/lib/buildr/core/cc.rb +57 -63
- data/lib/buildr/core/checks.rb +4 -5
- data/lib/buildr/core/doc.rb +3 -1
- data/lib/buildr/core/generate.rb +2 -0
- data/lib/buildr/core/jrebel.rb +42 -0
- data/lib/buildr/core/linux.rb +30 -0
- data/lib/buildr/core/project.rb +9 -8
- data/lib/buildr/core/run.rb +3 -3
- data/lib/buildr/core/shell.rb +29 -90
- data/lib/buildr/core/test.rb +3 -3
- data/lib/buildr/core/transports.rb +5 -5
- data/lib/buildr/core/util.rb +2 -2
- data/lib/buildr/groovy.rb +1 -0
- data/lib/buildr/groovy/compiler.rb +12 -1
- data/lib/buildr/groovy/doc.rb +76 -0
- data/lib/buildr/groovy/shell.rb +24 -15
- data/lib/buildr/ide.rb +1 -1
- data/lib/buildr/ide/idea.rb +527 -141
- data/lib/buildr/java/bdd.rb +18 -13
- data/lib/buildr/java/ecj.rb +1 -3
- data/lib/buildr/java/jtestr_result.rb +295 -0
- data/lib/buildr/java/jtestr_runner.rb.erb +4 -6
- data/lib/buildr/java/packaging.rb +14 -3
- data/lib/buildr/java/pom.rb +6 -2
- data/lib/buildr/java/test_result.rb +15 -243
- data/lib/buildr/java/tests.rb +1 -1
- data/lib/buildr/packaging.rb +2 -1
- data/lib/buildr/packaging/#package.rb.rej# +19 -0
- data/lib/buildr/packaging/archive.rb +13 -3
- data/lib/buildr/packaging/artifact.rb +11 -12
- data/lib/buildr/packaging/tar.rb +4 -1
- data/lib/buildr/packaging/zip.rb +106 -1
- data/lib/buildr/resources/completed.png +0 -0
- data/lib/buildr/resources/failed.png +0 -0
- data/lib/buildr/resources/icons-license.txt +17 -0
- data/lib/buildr/run.rb +7 -14
- data/lib/buildr/scala/#Untitled-2# +7 -0
- data/lib/buildr/scala/bdd.rb +1 -1
- data/lib/buildr/scala/compiler.rb +1 -1
- data/lib/buildr/scala/doc.rb +20 -2
- data/lib/buildr/scala/shell.rb +14 -22
- data/lib/buildr/scala/tests.rb +2 -2
- data/lib/buildr/shell.rb +113 -108
- data/lib/buildr/version.rb +1 -1
- data/rakelib/checks.rake +9 -7
- data/rakelib/doc.rake +10 -0
- data/rakelib/release.rake +9 -0
- data/rakelib/rspec.rake +27 -28
- data/rakelib/setup.rake +1 -1
- data/rakelib/stage.rake +2 -2
- data/spec/addon/bnd_spec.rb +330 -0
- data/spec/addon/jaxb_xjc_spec.rb +125 -0
- data/spec/core/application_spec.rb +1 -1
- data/spec/core/build_spec.rb +7 -7
- data/spec/core/cc_spec.rb +154 -104
- data/spec/core/compile_spec.rb +3 -3
- data/spec/core/project_spec.rb +10 -0
- data/spec/core/run_spec.rb +1 -0
- data/spec/core/shell_spec.rb +146 -0
- data/spec/groovy/doc_spec.rb +65 -0
- data/spec/ide/eclipse_spec.rb +1 -1
- data/spec/ide/idea_spec.rb +1145 -0
- data/spec/java/bdd_spec.rb +3 -3
- data/spec/java/emma_spec.rb +2 -0
- data/spec/java/packaging_spec.rb +40 -11
- data/spec/java/test_coverage_helper.rb +1 -1
- data/spec/packaging/archive_spec.rb +76 -21
- data/spec/packaging/artifact_namespace_spec.rb +1 -1
- data/spec/packaging/artifact_spec.rb +14 -7
- data/spec/sandbox.rb +11 -4
- data/spec/scala/bdd_spec.rb +2 -2
- data/spec/scala/compiler_spec.rb +2 -2
- data/spec/scala/doc_spec.rb +24 -4
- data/spec/scala/scala.rb +2 -2
- data/spec/scala/tests_spec.rb +2 -2
- data/spec/spec_helpers.rb +9 -8
- data/spec/xpath_matchers.rb +121 -0
- metadata +248 -164
- data/lib/buildr/ide/idea.ipr.template +0 -300
- data/lib/buildr/ide/idea7x.ipr.template +0 -290
- data/lib/buildr/ide/idea7x.rb +0 -231
- data/spec/ide/idea7x_spec.rb +0 -96
data/spec/java/bdd_spec.rb
CHANGED
@@ -29,7 +29,7 @@ describe Buildr::RSpec do
|
|
29
29
|
|
30
30
|
it 'should read passed specs from result yaml' do
|
31
31
|
write('src/spec/ruby/success_spec.rb', 'describe("success") { it("is true") { nil.should be_nil } }')
|
32
|
-
|
32
|
+
|
33
33
|
project('foo').test.invoke
|
34
34
|
project('foo').test.passed_tests.should eql([File.expand_path('src/spec/ruby/success_spec.rb')])
|
35
35
|
end
|
@@ -41,7 +41,7 @@ describe Buildr::RSpec do
|
|
41
41
|
write(failure, 'describe("failure") { it("is false") { true.should == false } }')
|
42
42
|
error = File.expand_path('src/spec/ruby/error_spec.rb')
|
43
43
|
write(error, 'describe("error") { it("raises") { lambda; } }')
|
44
|
-
|
44
|
+
|
45
45
|
lambda { project('foo').test.invoke }.should raise_error(/Tests failed/)
|
46
46
|
project('foo').test.tests.should include(success, failure, error)
|
47
47
|
project('foo').test.failed_tests.sort.should eql([failure, error].sort)
|
@@ -234,7 +234,7 @@ describe Buildr::JtestR do
|
|
234
234
|
failure = File.expand_path('src/spec/ruby/failure_expect.rb')
|
235
235
|
write(failure, 'Expectations { expect(true) { false } }')
|
236
236
|
error = File.expand_path('src/spec/ruby/error_expect.rb')
|
237
|
-
write(error, 'Expectations { expect(nil) { lambda; } }')
|
237
|
+
write(error, 'Expectations { expect(nil) { lambda {}; } }')
|
238
238
|
foo do
|
239
239
|
lambda { test.invoke }.should raise_error(/Tests failed/)
|
240
240
|
test.tests.should include(success, failure, error)
|
data/spec/java/emma_spec.rb
CHANGED
data/spec/java/packaging_spec.rb
CHANGED
@@ -346,7 +346,7 @@ describe Project, '#meta_inf' do
|
|
346
346
|
end
|
347
347
|
|
348
348
|
|
349
|
-
|
349
|
+
shared_examples_for 'package with meta_inf' do
|
350
350
|
|
351
351
|
def package_with_meta_inf(meta_inf = nil)
|
352
352
|
packaging = @packaging
|
@@ -778,6 +778,39 @@ describe Packaging, 'ear' do
|
|
778
778
|
inspect_application_xml { |xml| xml.get_text('/application/display-name').should == 'bar' }
|
779
779
|
end
|
780
780
|
|
781
|
+
it 'should set description in application.xml to project comment if not specified' do
|
782
|
+
desc "MyDescription"
|
783
|
+
define 'foo', :version=>'1.0' do
|
784
|
+
package(:ear)
|
785
|
+
end
|
786
|
+
inspect_application_xml { |xml| xml.get_text('/application/description').should == 'MyDescription' }
|
787
|
+
end
|
788
|
+
|
789
|
+
it 'should not set description in application.xml if not specified and no project comment' do
|
790
|
+
define 'foo', :version=>'1.0' do
|
791
|
+
package(:ear)
|
792
|
+
end
|
793
|
+
inspect_application_xml { |xml| xml.get_text('/application/description').should be_nil }
|
794
|
+
end
|
795
|
+
|
796
|
+
it 'should set description in application.xml if specified' do
|
797
|
+
define 'foo', :version=>'1.0' do
|
798
|
+
package(:ear).description = "MyDescription"
|
799
|
+
end
|
800
|
+
inspect_application_xml { |xml| xml.get_text('/application/description').should == 'MyDescription' }
|
801
|
+
end
|
802
|
+
|
803
|
+
it 'should add security-roles to application.xml if given' do
|
804
|
+
define 'foo', :version=>'1.0' do
|
805
|
+
package(:ear).security_roles << {:id=>'sr1',
|
806
|
+
:description=>'System Administrator', :name=>'systemadministrator'}
|
807
|
+
end
|
808
|
+
inspect_application_xml do |xml|
|
809
|
+
xml.get_text("/application/security-role[@id='sr1']/description").to_s.should eql('System Administrator')
|
810
|
+
xml.get_text("/application/security-role[@id='sr1']/role-name").to_s.should eql('systemadministrator')
|
811
|
+
end
|
812
|
+
end
|
813
|
+
|
781
814
|
it 'should map WARs to /war directory' do
|
782
815
|
define 'foo', :version=>'1.0' do
|
783
816
|
package(:ear) << package(:war)
|
@@ -1136,16 +1169,15 @@ describe Packaging, 'sources' do
|
|
1136
1169
|
end
|
1137
1170
|
end
|
1138
1171
|
|
1139
|
-
|
1140
1172
|
describe Packaging, 'javadoc' do
|
1141
1173
|
it_should_behave_like 'packaging'
|
1142
|
-
before { @packaging, @package_type = :javadoc, :
|
1174
|
+
before { @packaging, @package_type = :javadoc, :jar }
|
1143
1175
|
|
1144
1176
|
it 'should create package of type :zip and classifier \'javadoc\'' do
|
1145
1177
|
define 'foo', :version=>'1.0' do
|
1146
|
-
package(:javadoc).type.should eql(:
|
1178
|
+
package(:javadoc).type.should eql(:jar)
|
1147
1179
|
package(:javadoc).classifier.should eql('javadoc')
|
1148
|
-
package(:javadoc).name.pathmap('%f').should eql('foo-1.0-javadoc.
|
1180
|
+
package(:javadoc).name.pathmap('%f').should eql('foo-1.0-javadoc.jar')
|
1149
1181
|
end
|
1150
1182
|
end
|
1151
1183
|
|
@@ -1171,7 +1203,6 @@ describe Packaging, 'javadoc' do
|
|
1171
1203
|
end
|
1172
1204
|
end
|
1173
1205
|
|
1174
|
-
|
1175
1206
|
shared_examples_for 'package_with_' do
|
1176
1207
|
|
1177
1208
|
def prepare(options = {})
|
@@ -1190,9 +1221,7 @@ shared_examples_for 'package_with_' do
|
|
1190
1221
|
|
1191
1222
|
it 'should create package of the right packaging with classifier' do
|
1192
1223
|
prepare
|
1193
|
-
|
1194
|
-
ext = "jar" if @packaging == :sources
|
1195
|
-
project('foo').packages.first.to_s.should =~ /foo-1.0-#{@packaging}.#{ext}/
|
1224
|
+
project('foo').packages.first.to_s.should =~ /foo-1.0-#{@packaging}.#{@ext}/
|
1196
1225
|
end
|
1197
1226
|
|
1198
1227
|
it 'should create package for projects that have source files' do
|
@@ -1228,10 +1257,10 @@ end
|
|
1228
1257
|
|
1229
1258
|
describe 'package_with_sources' do
|
1230
1259
|
it_should_behave_like 'package_with_'
|
1231
|
-
before { @packaging = :sources }
|
1260
|
+
before { @packaging, @ext = :sources, 'jar' }
|
1232
1261
|
end
|
1233
1262
|
|
1234
1263
|
describe 'package_with_javadoc' do
|
1235
1264
|
it_should_behave_like 'package_with_'
|
1236
|
-
before { @packaging = :javadoc }
|
1265
|
+
before { @packaging, @ext = :javadoc, 'jar' }
|
1237
1266
|
end
|
@@ -17,25 +17,26 @@
|
|
17
17
|
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers'))
|
18
18
|
|
19
19
|
|
20
|
-
|
21
|
-
before do
|
22
|
-
@dir = File.expand_path('test')
|
23
|
-
@files = %w{Test1.txt Text2.html}.map { |file| File.expand_path(file, @dir) }.
|
24
|
-
each { |file| write file, content_for(file) }
|
25
|
-
@empty_dirs = %w{EmptyDir1 EmptyDir2}.map { |file| File.expand_path(file, @dir) }.
|
26
|
-
each { |file| mkdir file }
|
27
|
-
end
|
28
|
-
|
20
|
+
module ArchiveTaskHelpers
|
29
21
|
# Not too smart, we just create some content based on file name to make sure you read what you write.
|
30
22
|
def content_for(file)
|
31
23
|
"Content for #{File.basename(file)}"
|
32
24
|
end
|
33
25
|
|
26
|
+
# Qualify a filename
|
27
|
+
#
|
28
|
+
# e.g. qualify("file.zip", "src") => "file-src.zip"
|
29
|
+
def qualify(filename, qualifier)
|
30
|
+
ext = (filename =~ /\.$/) ? "." : File.extname(filename)
|
31
|
+
base = filename[0..0-ext.size-1]
|
32
|
+
base + "-" + qualifier + ext
|
33
|
+
end
|
34
|
+
|
34
35
|
# Create an archive not using the archive task, this way we do have a file in existence, but we don't
|
35
36
|
# have an already invoked task. Yield an archive task to the block which can use it to include files,
|
36
37
|
# set options, etc.
|
37
38
|
def create_without_task
|
38
|
-
archive(@archive
|
39
|
+
archive(qualify(@archive, "tmp")).tap do |task|
|
39
40
|
yield task if block_given?
|
40
41
|
task.invoke
|
41
42
|
mv task.name, @archive
|
@@ -43,11 +44,29 @@ describe 'ArchiveTask', :shared=>true do
|
|
43
44
|
end
|
44
45
|
|
45
46
|
def create_for_merge
|
46
|
-
zip(@archive
|
47
|
+
zip(qualify(@archive, "src")).include(@files).tap do |task|
|
47
48
|
yield task
|
48
49
|
end
|
49
50
|
end
|
50
51
|
|
52
|
+
def init_dir
|
53
|
+
unless @dir
|
54
|
+
@dir = File.expand_path('test')
|
55
|
+
@files = %w{Test1.txt Text2.html}.map { |file| File.expand_path(file, @dir) }.
|
56
|
+
each { |file| write file, content_for(file) }
|
57
|
+
@empty_dirs = %w{EmptyDir1 EmptyDir2}.map { |file| File.expand_path(file, @dir) }.
|
58
|
+
each { |file| mkdir file }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
shared_examples_for 'ArchiveTask' do
|
64
|
+
include ArchiveTaskHelpers
|
65
|
+
|
66
|
+
before(:each) do
|
67
|
+
init_dir
|
68
|
+
end
|
69
|
+
|
51
70
|
it 'should point to archive file' do
|
52
71
|
archive(@archive).name.should eql(@archive)
|
53
72
|
end
|
@@ -281,7 +300,7 @@ describe 'ArchiveTask', :shared=>true do
|
|
281
300
|
it 'should expand another archive file with nested exclude pattern' do
|
282
301
|
@files = %w{Test1.txt Text2.html}.map { |file| File.join(@dir, "foo", file) }.
|
283
302
|
each { |file| write file, content_for(file) }
|
284
|
-
zip(@archive
|
303
|
+
zip(qualify(@archive, "src")).include(@dir).tap do |task|
|
285
304
|
archive(@archive).merge(task).exclude('test/*')
|
286
305
|
archive(@archive).invoke
|
287
306
|
inspect_archive.should be_empty
|
@@ -329,6 +348,22 @@ describe 'ArchiveTask', :shared=>true do
|
|
329
348
|
File.stat(@archive).mtime.should be_close(Time.now, 10)
|
330
349
|
end
|
331
350
|
|
351
|
+
it 'should update if a file in a subdir is more recent' do
|
352
|
+
subdir = File.expand_path("subdir", @dir)
|
353
|
+
test3 = File.expand_path("test3.css", subdir)
|
354
|
+
|
355
|
+
mkdir_p subdir
|
356
|
+
write test3, '/* Original */'
|
357
|
+
|
358
|
+
create_without_task { |archive| archive.include(:from => @dir) }
|
359
|
+
inspect_archive { |archive| archive["subdir/test3.css"].should eql('/* Original */') }
|
360
|
+
|
361
|
+
write test3, '/* Refreshed */'
|
362
|
+
File.utime(Time.now + 100, Time.now + 100, test3)
|
363
|
+
archive(@archive).include(:from => @dir).invoke
|
364
|
+
inspect_archive { |archive| archive["subdir/test3.css"].should eql('/* Refreshed */') }
|
365
|
+
end
|
366
|
+
|
332
367
|
it 'should do nothing if all files are uptodate' do
|
333
368
|
create_without_task { |archive| archive.include(@files) }
|
334
369
|
# By touching all files in the past, there's nothing new to update.
|
@@ -359,10 +394,13 @@ describe 'ArchiveTask', :shared=>true do
|
|
359
394
|
end
|
360
395
|
end
|
361
396
|
|
362
|
-
|
363
397
|
describe TarTask do
|
364
398
|
it_should_behave_like 'ArchiveTask'
|
365
|
-
|
399
|
+
|
400
|
+
before(:each) do
|
401
|
+
@archive = File.expand_path('test.tar')
|
402
|
+
end
|
403
|
+
|
366
404
|
define_method(:archive) { |file| tar(file) }
|
367
405
|
|
368
406
|
def inspect_archive
|
@@ -378,7 +416,11 @@ end
|
|
378
416
|
|
379
417
|
describe TarTask, ' gzipped' do
|
380
418
|
it_should_behave_like 'ArchiveTask'
|
381
|
-
|
419
|
+
|
420
|
+
before(:each) do
|
421
|
+
@archive = File.expand_path('test.tgz')
|
422
|
+
end
|
423
|
+
|
382
424
|
define_method(:archive) { |file| tar(file) }
|
383
425
|
|
384
426
|
def inspect_archive
|
@@ -393,24 +435,38 @@ describe TarTask, ' gzipped' do
|
|
393
435
|
end
|
394
436
|
end
|
395
437
|
|
438
|
+
describe "ZipTask" do
|
439
|
+
include ArchiveTaskHelpers
|
396
440
|
|
397
|
-
describe ZipTask do
|
398
441
|
it_should_behave_like 'ArchiveTask'
|
399
|
-
|
442
|
+
|
443
|
+
before(:each) do
|
444
|
+
init_dir
|
445
|
+
@archive = File.expand_path('test.zip')
|
446
|
+
end
|
447
|
+
|
400
448
|
define_method(:archive) { |file| zip(file) }
|
401
449
|
|
402
|
-
after do
|
450
|
+
after(:each) do
|
403
451
|
checkZip(@archive)
|
404
452
|
end
|
405
453
|
|
406
|
-
# Check for possible corruption
|
454
|
+
# Check for possible corruption using Java's ZipInputStream and Java's "jar" command since
|
455
|
+
# they are stricter than rubyzip
|
407
456
|
def checkZip(file)
|
408
457
|
return unless File.exist?(file)
|
409
458
|
zip = Java.java.util.zip.ZipInputStream.new(Java.java.io.FileInputStream.new(file))
|
459
|
+
zip_entry_count = 0
|
410
460
|
while entry = zip.getNextEntry do
|
411
461
|
# just iterate over all entries
|
462
|
+
zip_entry_count = zip_entry_count + 1
|
412
463
|
end
|
413
464
|
zip.close()
|
465
|
+
|
466
|
+
# jar tool fails with "ZipException: error in opening zip file" if empty
|
467
|
+
if zip_entry_count > 0
|
468
|
+
sh "#{File.join(ENV['JAVA_HOME'], 'bin', 'jar')} tvf #{file}"
|
469
|
+
end
|
414
470
|
end
|
415
471
|
|
416
472
|
def inspect_archive
|
@@ -473,9 +529,8 @@ describe ZipTask do
|
|
473
529
|
|
474
530
|
end
|
475
531
|
|
476
|
-
|
477
532
|
describe Unzip do
|
478
|
-
before do
|
533
|
+
before(:each) do
|
479
534
|
@zip = File.expand_path('test.zip')
|
480
535
|
@dir = File.expand_path('test')
|
481
536
|
@files = %w{Test1.txt Text2.html}.map { |file| File.join(@dir, file) }.
|
@@ -661,7 +661,7 @@ describe "Extension using ArtifactNamespace" do
|
|
661
661
|
end
|
662
662
|
end
|
663
663
|
|
664
|
-
include
|
664
|
+
include RSpec::Matchers # for assertions
|
665
665
|
|
666
666
|
# Called with the ArtifactRequirement that has just been selected
|
667
667
|
# by a user. This allows extension author to selectively perform
|
@@ -252,7 +252,7 @@ describe Repositories, 'remote' do
|
|
252
252
|
|
253
253
|
it 'should support artifact classifier' do
|
254
254
|
repositories.remote = 'http://example.com'
|
255
|
-
URI.should_receive(:download).
|
255
|
+
URI.should_receive(:download).once.and_return { |uri, target, options| write target }
|
256
256
|
lambda { artifact('com.example:library:jar:all:2.0').invoke }.
|
257
257
|
should change { File.exist?(File.join(repositories.local, 'com/example/library/2.0/library-2.0-all.jar')) }.to(true)
|
258
258
|
end
|
@@ -752,13 +752,22 @@ describe Buildr, '#install' do
|
|
752
752
|
snapshot.invoke
|
753
753
|
end
|
754
754
|
|
755
|
-
it 'should install POM alongside artifact' do
|
755
|
+
it 'should install POM alongside artifact (if artifact has no classifier)' do
|
756
756
|
pom = artifact(@spec).pom
|
757
757
|
write @file
|
758
758
|
install artifact(@spec).from(@file)
|
759
759
|
lambda { install.invoke }.should change { File.exist?(repositories.locate(pom)) }.to(true)
|
760
760
|
end
|
761
761
|
|
762
|
+
it 'should not install POM alongside artifact if artifact has classifier' do
|
763
|
+
@spec = 'group:id:jar:all:1.0'
|
764
|
+
pom = artifact(@spec).pom
|
765
|
+
write @file
|
766
|
+
p method(:install)
|
767
|
+
install artifact(@spec).from(@file)
|
768
|
+
lambda { install.invoke }.should_not change { File.exist?(repositories.locate(pom)) }.to(true)
|
769
|
+
end
|
770
|
+
|
762
771
|
it 'should reinstall POM alongside artifact' do
|
763
772
|
pom = artifact(@spec).pom
|
764
773
|
write @file
|
@@ -812,14 +821,11 @@ describe ActsAsArtifact, '#upload' do
|
|
812
821
|
verbose(false) { artifact.upload(:url=>'sftp://example.com/base') }
|
813
822
|
end
|
814
823
|
|
815
|
-
it 'should support artifact classifier' do
|
824
|
+
it 'should support artifact classifier and should not upload pom if artifact has classifier' do
|
816
825
|
artifact = artifact('com.example:library:jar:all:2.0')
|
817
826
|
# Prevent artifact from downloading anything.
|
818
827
|
write repositories.locate(artifact)
|
819
|
-
|
820
|
-
URI.should_receive(:upload).at_least(:once).
|
821
|
-
with(URI.parse('sftp://example.com/base/com/example/library/2.0/library-2.0.pom'), artifact.pom.to_s, anything)
|
822
|
-
URI.should_receive(:upload).at_least(:once).
|
828
|
+
URI.should_receive(:upload).exactly(:once).
|
823
829
|
with(URI.parse('sftp://example.com/base/com/example/library/2.0/library-2.0-all.jar'), artifact.to_s, anything)
|
824
830
|
verbose(false) { artifact.upload(:url=>'sftp://example.com/base') }
|
825
831
|
end
|
@@ -842,6 +848,7 @@ describe ActsAsArtifact, '#upload' do
|
|
842
848
|
artifact.upload
|
843
849
|
lambda { artifact.upload }.should_not raise_error
|
844
850
|
end
|
851
|
+
|
845
852
|
end
|
846
853
|
|
847
854
|
|
data/spec/sandbox.rb
CHANGED
@@ -21,19 +21,26 @@ Buildr.application.instance_eval { @rakefile = File.expand_path('buildfile') }
|
|
21
21
|
repositories.remote << 'http://repo1.maven.org/maven2'
|
22
22
|
repositories.remote << 'http://scala-tools.org/repo-releases'
|
23
23
|
|
24
|
-
# Force Scala 2.8.
|
25
|
-
Buildr.settings.build['scala.version'] = "2.8.
|
24
|
+
# Force Scala 2.8.1 for specs; don't want to rely on SCALA_HOME
|
25
|
+
Buildr.settings.build['scala.version'] = "2.8.1"
|
26
26
|
|
27
27
|
# Add a 'require' here only for optional extensions, not for extensions that should be loaded by default.
|
28
|
+
require 'buildr/clojure'
|
28
29
|
require 'buildr/groovy'
|
29
30
|
require 'buildr/scala'
|
31
|
+
require 'buildr/bnd'
|
32
|
+
require 'buildr/jaxb_xjc'
|
30
33
|
|
31
34
|
Java.load # Anything added to the classpath.
|
32
35
|
artifacts(
|
33
36
|
TestFramework.frameworks.map(&:dependencies).flatten,
|
34
37
|
JUnit.ant_taskdef,
|
35
|
-
Buildr::Groovy
|
36
|
-
Buildr::
|
38
|
+
Buildr::Groovy.dependencies,
|
39
|
+
Buildr::JaxbXjc.dependencies,
|
40
|
+
Buildr::Bnd.dependencies,
|
41
|
+
Buildr::Scala::Specs.dependencies,
|
42
|
+
Buildr::Shell::BeanShell.artifact,
|
43
|
+
Buildr::Clojure.dependencies
|
37
44
|
).each do |path|
|
38
45
|
file(path).invoke
|
39
46
|
end
|
data/spec/scala/bdd_spec.rb
CHANGED
@@ -19,8 +19,8 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers')
|
|
19
19
|
describe Buildr::Scala::Specs do
|
20
20
|
|
21
21
|
before(:each) do
|
22
|
-
# Force Scala 2.8.
|
23
|
-
Buildr.settings.build['scala.version'] = "2.8.
|
22
|
+
# Force Scala 2.8.1 for specs; don't want to rely on SCALA_HOME
|
23
|
+
Buildr.settings.build['scala.version'] = "2.8.1"
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should be the default when tests in src/spec/scala' do
|
data/spec/scala/compiler_spec.rb
CHANGED
@@ -20,8 +20,8 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers')
|
|
20
20
|
share_as :ScalacCompiler do
|
21
21
|
|
22
22
|
before(:each) do
|
23
|
-
# Force Scala 2.8.
|
24
|
-
Buildr.settings.build['scala.version'] = "2.8.
|
23
|
+
# Force Scala 2.8.1 for specs; don't want to rely on SCALA_HOME
|
24
|
+
Buildr.settings.build['scala.version'] = "2.8.1"
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'should identify itself from source directories' do
|
data/spec/scala/doc_spec.rb
CHANGED
@@ -19,8 +19,8 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers')
|
|
19
19
|
describe "Scaladoc" do
|
20
20
|
|
21
21
|
before(:each) do
|
22
|
-
# Force Scala 2.8.
|
23
|
-
Buildr.settings.build['scala.version'] = "2.8.
|
22
|
+
# Force Scala 2.8.1 for specs; don't want to rely on SCALA_HOME
|
23
|
+
Buildr.settings.build['scala.version'] = "2.8.1"
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should pick -doc-title from project name by default' do
|
@@ -52,17 +52,37 @@ describe "Scaladoc" do
|
|
52
52
|
project('foo').doc.options[:"doc-title"].should eql('explicit')
|
53
53
|
end
|
54
54
|
|
55
|
-
it 'should convert :windowtitle to -doc-title for Scala 2.8.
|
55
|
+
it 'should convert :windowtitle to -doc-title for Scala 2.8.1' do
|
56
56
|
write 'src/main/scala/com/example/Test.scala', 'package com.example; class Test { val i = 1 }'
|
57
57
|
define('foo') do
|
58
58
|
doc.using :windowtitle => "foo"
|
59
59
|
end
|
60
|
-
Java.scala.tools.nsc.ScalaDoc.should_receive(:
|
60
|
+
Java.scala.tools.nsc.ScalaDoc.should_receive(:process) do |args|
|
61
61
|
# Convert Java Strings to Ruby Strings, if needed.
|
62
62
|
args.map { |a| a.is_a?(String) ? a : a.toString }.should include("-doc-title")
|
63
63
|
0 # normal return
|
64
64
|
end
|
65
65
|
project('foo').doc.invoke
|
66
66
|
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "package(:scaladoc)" do
|
70
|
+
it "should generate target/project-version-scaladoc.jar" do
|
71
|
+
write 'src/main/scala/Foo.scala', 'class Foo'
|
72
|
+
define 'foo', :version=>'1.0' do
|
73
|
+
package(:scaladoc)
|
74
|
+
end
|
75
|
+
|
76
|
+
scaladoc = project('foo').package(:scaladoc)
|
77
|
+
scaladoc.should point_to_path('target/foo-1.0-scaladoc.jar')
|
67
78
|
|
79
|
+
lambda {
|
80
|
+
project('foo').task('package').invoke
|
81
|
+
}.should change { File.exist?('target/foo-1.0-scaladoc.jar') }.to(true)
|
82
|
+
|
83
|
+
scaladoc.should exist
|
84
|
+
scaladoc.should contain('index.html')
|
85
|
+
scaladoc.should contain('Foo.html')
|
86
|
+
end
|
68
87
|
end
|
88
|
+
|