buildr 1.3.3-java → 1.3.4-java
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +76 -0
- data/NOTICE +1 -1
- data/README.rdoc +9 -21
- data/Rakefile +17 -34
- data/_buildr +3 -12
- data/{doc/print.toc.yaml → _jbuildr} +14 -14
- data/addon/buildr/cobertura.rb +5 -219
- data/addon/buildr/drb.rb +281 -0
- data/addon/buildr/emma.rb +5 -221
- data/addon/buildr/nailgun.rb +93 -689
- data/bin/buildr +0 -9
- data/buildr.buildfile +4 -4
- data/buildr.gemspec +27 -21
- data/doc/_layouts/default.html +82 -0
- data/doc/_layouts/preface.html +22 -0
- data/doc/{pages/artifacts.textile → artifacts.textile} +82 -42
- data/doc/{pages/building.textile → building.textile} +89 -47
- data/doc/{pages/contributing.textile → contributing.textile} +53 -45
- data/doc/css/default.css +6 -5
- data/doc/css/print.css +17 -24
- data/doc/css/syntax.css +7 -36
- data/doc/download.textile +68 -0
- data/doc/{pages/extending.textile → extending.textile} +45 -24
- data/doc/{pages/getting_started.textile → getting_started.textile} +158 -88
- data/doc/images/asf-logo.gif +0 -0
- data/doc/images/note.png +0 -0
- data/doc/index.textile +47 -0
- data/doc/{pages/languages.textile → languages.textile} +108 -54
- data/doc/mailing_lists.textile +25 -0
- data/doc/{pages/more_stuff.textile → more_stuff.textile} +152 -73
- data/doc/{pages/packaging.textile → packaging.textile} +181 -96
- data/doc/preface.textile +28 -0
- data/doc/{pages/projects.textile → projects.textile} +55 -40
- data/doc/scripts/buildr-git.rb +364 -264
- data/doc/scripts/gitflow.rb +296 -0
- data/doc/scripts/install-jruby.sh +2 -2
- data/doc/scripts/install-linux.sh +6 -6
- data/doc/scripts/install-osx.sh +2 -2
- data/doc/{pages/settings_profiles.textile → settings_profiles.textile} +83 -45
- data/doc/{pages/testing.textile → testing.textile} +77 -41
- data/lib/buildr.rb +5 -5
- data/lib/buildr/core.rb +2 -0
- data/lib/buildr/core/application.rb +321 -151
- data/lib/buildr/core/build.rb +298 -167
- data/lib/buildr/core/checks.rb +4 -132
- data/lib/buildr/core/common.rb +1 -5
- data/lib/buildr/core/compile.rb +3 -9
- data/lib/buildr/core/environment.rb +12 -3
- data/lib/buildr/core/filter.rb +20 -18
- data/lib/buildr/core/generate.rb +36 -36
- data/lib/buildr/core/help.rb +2 -1
- data/lib/buildr/core/osx.rb +46 -0
- data/lib/buildr/core/progressbar.rb +1 -1
- data/lib/buildr/core/project.rb +7 -34
- data/lib/buildr/core/test.rb +12 -6
- data/lib/buildr/core/transports.rb +13 -11
- data/lib/buildr/core/util.rb +14 -23
- data/lib/buildr/groovy/bdd.rb +3 -2
- data/lib/buildr/groovy/compiler.rb +1 -1
- data/lib/buildr/ide/eclipse.rb +31 -21
- data/lib/buildr/ide/idea.rb +3 -2
- data/lib/buildr/ide/idea7x.rb +6 -4
- data/lib/buildr/java/ant.rb +3 -1
- data/lib/buildr/java/bdd.rb +9 -7
- data/lib/buildr/java/cobertura.rb +243 -0
- data/lib/buildr/java/compiler.rb +5 -4
- data/lib/buildr/java/emma.rb +244 -0
- data/lib/buildr/java/packaging.rb +11 -8
- data/lib/buildr/java/pom.rb +0 -4
- data/lib/buildr/java/rjb.rb +1 -1
- data/lib/buildr/java/test_result.rb +5 -7
- data/lib/buildr/java/tests.rb +17 -11
- data/lib/buildr/packaging.rb +5 -2
- data/lib/buildr/packaging/archive.rb +488 -0
- data/lib/buildr/packaging/artifact.rb +48 -29
- data/lib/buildr/packaging/artifact_namespace.rb +6 -6
- data/lib/buildr/packaging/gems.rb +4 -4
- data/lib/buildr/packaging/package.rb +3 -2
- data/lib/buildr/packaging/tar.rb +85 -3
- data/lib/buildr/packaging/version_requirement.rb +172 -0
- data/lib/buildr/packaging/zip.rb +24 -682
- data/lib/buildr/packaging/ziptask.rb +313 -0
- data/lib/buildr/scala.rb +5 -0
- data/lib/buildr/scala/bdd.rb +100 -0
- data/lib/buildr/scala/compiler.rb +45 -4
- data/lib/buildr/scala/tests.rb +12 -59
- data/rakelib/checks.rake +57 -0
- data/rakelib/doc.rake +58 -68
- data/rakelib/jekylltask.rb +110 -0
- data/rakelib/package.rake +35 -37
- data/rakelib/release.rake +119 -35
- data/rakelib/rspec.rake +29 -39
- data/rakelib/setup.rake +21 -59
- data/rakelib/stage.rake +184 -26
- data/spec/addon/drb_spec.rb +328 -0
- data/spec/core/application_spec.rb +32 -25
- data/spec/core/build_spec.rb +336 -126
- data/spec/core/checks_spec.rb +292 -310
- data/spec/core/common_spec.rb +8 -2
- data/spec/core/compile_spec.rb +17 -1
- data/spec/core/generate_spec.rb +3 -3
- data/spec/core/project_spec.rb +18 -10
- data/spec/core/test_spec.rb +8 -1
- data/spec/core/transport_spec.rb +40 -3
- data/spec/core/util_spec.rb +67 -0
- data/spec/ide/eclipse_spec.rb +96 -28
- data/spec/ide/idea7x_spec.rb +84 -0
- data/spec/java/ant.rb +5 -0
- data/spec/java/bdd_spec.rb +12 -3
- data/spec/{addon → java}/cobertura_spec.rb +6 -6
- data/spec/{addon → java}/emma_spec.rb +5 -6
- data/spec/java/java_spec.rb +12 -2
- data/spec/java/packaging_spec.rb +31 -2
- data/spec/{addon → java}/test_coverage_spec.rb +3 -3
- data/spec/java/tests_spec.rb +5 -0
- data/spec/packaging/archive_spec.rb +11 -1
- data/spec/{core → packaging}/artifact_namespace_spec.rb +10 -2
- data/spec/packaging/artifact_spec.rb +44 -3
- data/spec/packaging/packaging_spec.rb +1 -1
- data/spec/sandbox.rb +17 -14
- data/spec/scala/bdd_spec.rb +150 -0
- data/spec/scala/compiler_spec.rb +27 -0
- data/spec/scala/scala.rb +38 -0
- data/spec/scala/tests_spec.rb +78 -33
- data/spec/spec_helpers.rb +29 -5
- data/spec/version_requirement_spec.rb +6 -0
- metadata +176 -172
- data/DISCLAIMER +0 -7
- data/doc/images/apache-incubator-logo.png +0 -0
- data/doc/pages/download.textile +0 -51
- data/doc/pages/index.textile +0 -42
- data/doc/pages/mailing_lists.textile +0 -17
- data/doc/pages/recipes.textile +0 -103
- data/doc/pages/troubleshooting.textile +0 -103
- data/doc/pages/whats_new.textile +0 -323
- data/doc/print.haml +0 -51
- data/doc/site.haml +0 -56
- data/doc/site.toc.yaml +0 -47
- data/etc/git-svn-authors +0 -16
- data/lib/buildr/core/application_cli.rb +0 -139
- data/rakelib/apache.rake +0 -191
- data/rakelib/changelog.rake +0 -57
- data/rakelib/rubyforge.rake +0 -53
- data/rakelib/scm.rake +0 -49
data/spec/core/common_spec.rb
CHANGED
@@ -242,7 +242,9 @@ end
|
|
242
242
|
describe Buildr::Filter do
|
243
243
|
before do
|
244
244
|
@filter = Filter.new
|
245
|
-
1.upto(4)
|
245
|
+
1.upto(4) do |i|
|
246
|
+
write "src/file#{i}", "file#{i} raw"
|
247
|
+
end
|
246
248
|
@early = Time.now - 1000
|
247
249
|
end
|
248
250
|
|
@@ -456,7 +458,9 @@ describe Buildr::Filter do
|
|
456
458
|
File.mtime('target').should be_close(@early, 10)
|
457
459
|
end
|
458
460
|
|
459
|
-
it 'should run only
|
461
|
+
it 'should run only on new files' do
|
462
|
+
# Make source files older so they're not copied twice.
|
463
|
+
Dir['src/**/*'].each { |file| File.utime(@early, @early, file) }
|
460
464
|
@filter.from('src').into('target').run
|
461
465
|
@filter.from('src').into('target').using { |file, content| file.should eql('file2') }.run
|
462
466
|
end
|
@@ -466,6 +470,8 @@ describe Buildr::Filter do
|
|
466
470
|
end
|
467
471
|
|
468
472
|
it 'should return false when run does not copy any files' do
|
473
|
+
# Make source files older so they're not copied twice.
|
474
|
+
Dir['src/**/*'].each { |file| File.utime(@early, @early, file) }
|
469
475
|
@filter.from('src').into('target').run
|
470
476
|
@filter.from('src').into('target').run.should be(false)
|
471
477
|
end
|
data/spec/core/compile_spec.rb
CHANGED
@@ -112,6 +112,15 @@ describe Buildr::CompileTask, '#compiler' do
|
|
112
112
|
compile.from('sources').compiler
|
113
113
|
end
|
114
114
|
end
|
115
|
+
|
116
|
+
it 'should allow supressing compilation' do
|
117
|
+
write 'src/main/java/package/Test.java', 'class Test {}'
|
118
|
+
define 'foo' do
|
119
|
+
compile.sources.clear
|
120
|
+
end
|
121
|
+
project('foo').compile.invoke
|
122
|
+
Dir['target/classes/*'].should be_empty
|
123
|
+
end
|
115
124
|
end
|
116
125
|
|
117
126
|
|
@@ -197,7 +206,8 @@ describe Buildr::CompileTask, '#dependencies' do
|
|
197
206
|
compile_task.dependencies.should == project('bar').packages
|
198
207
|
end
|
199
208
|
|
200
|
-
it 'should be accessible as classpath' do
|
209
|
+
it 'should be accessible as classpath up to version 1.5 since it was deprecated in version 1.3' do
|
210
|
+
Buildr::VERSION.should < '1.5'
|
201
211
|
lambda { compile_task.classpath = jars }.should change(compile_task, :dependencies).to(jars)
|
202
212
|
lambda { compile_task.dependencies = [] }.should change(compile_task, :classpath).to([])
|
203
213
|
end
|
@@ -545,6 +555,12 @@ describe Project, '#resources' do
|
|
545
555
|
file('target/resources').should_not exist
|
546
556
|
end
|
547
557
|
|
558
|
+
it 'should run from target/resources' do
|
559
|
+
write 'src/main/resources/test'
|
560
|
+
define('foo')
|
561
|
+
lambda { project('foo').resources.target.invoke }.should change { File.exist?('target/resources/test') }.to(true)
|
562
|
+
end
|
563
|
+
|
548
564
|
it 'should not be recursive' do
|
549
565
|
define('foo') { define 'bar' }
|
550
566
|
lambda { project('foo').resources.invoke }.should_not run_task('foo:bar:resources')
|
data/spec/core/generate_spec.rb
CHANGED
@@ -21,13 +21,13 @@ describe Buildr::Generate do
|
|
21
21
|
|
22
22
|
describe 'Generated buildfile' do
|
23
23
|
it 'should be a legal buildfile' do
|
24
|
-
File.open('buildfile', 'w') { |file| file.write Generate.from_directory(
|
24
|
+
File.open('buildfile', 'w') { |file| file.write Generate.from_directory(Dir.pwd).join("\n") }
|
25
25
|
lambda { Buildr.application.run }.should_not raise_error
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'should not contain NEXT_VERSION because it was removed in buildr 1.3.3' do
|
29
|
-
buildfile = Generate.from_directory(
|
29
|
+
buildfile = Generate.from_directory(Dir.pwd)
|
30
30
|
buildfile.each { |line| line.should_not include('NEXT_VERSION')}
|
31
31
|
end
|
32
32
|
end
|
33
|
-
end
|
33
|
+
end
|
data/spec/core/project_spec.rb
CHANGED
@@ -368,13 +368,17 @@ describe Project, '#on_define' do
|
|
368
368
|
define('foo') { define 'bar' }
|
369
369
|
scopes.should eql([['foo'], ['foo', 'bar']])
|
370
370
|
end
|
371
|
+
|
372
|
+
it 'should be removed in version 1.5 since it was deprecated in version 1.3' do
|
373
|
+
Buildr::VERSION.should < '1.5'
|
374
|
+
end
|
371
375
|
end
|
372
376
|
|
373
377
|
|
374
378
|
describe Rake::Task, ' recursive' do
|
375
379
|
before do
|
376
380
|
@order = []
|
377
|
-
Project.on_define do |project|
|
381
|
+
Project.on_define do |project| # TODO on_define is deprecated
|
378
382
|
project.recursive_task('doda') { @order << project.name }
|
379
383
|
end
|
380
384
|
define('foo') { define('bar') { define('baz') } }
|
@@ -428,6 +432,19 @@ describe 'Sub-project' do
|
|
428
432
|
project('foo').projects.map(&:name).should include('foo:bar')
|
429
433
|
end
|
430
434
|
|
435
|
+
it 'should be findable during project definition' do
|
436
|
+
define 'foo' do
|
437
|
+
bar = define 'bar' do
|
438
|
+
baz = define 'baz'
|
439
|
+
project('baz').should eql(baz)
|
440
|
+
end
|
441
|
+
# Note: evaluating bar:baz first unearthed a bug that doesn't happen
|
442
|
+
# if we evaluate bar, then bar:baz.
|
443
|
+
project('bar:baz').should be(bar.project('baz'))
|
444
|
+
project('bar').should be(bar)
|
445
|
+
end
|
446
|
+
end
|
447
|
+
|
431
448
|
it 'should be findable only if exists' do
|
432
449
|
define('foo') { define 'bar' }
|
433
450
|
lambda { project('foo').project('baz') }.should raise_error(RuntimeError, /No such project/)
|
@@ -743,12 +760,3 @@ describe Buildr::Generate do
|
|
743
760
|
end
|
744
761
|
end
|
745
762
|
=end
|
746
|
-
|
747
|
-
|
748
|
-
describe Rake::Task, 'buildr:initialize' do
|
749
|
-
it 'should evaluate all project definitions' do
|
750
|
-
defined = false
|
751
|
-
Buildr.define('foo') { defined = true }
|
752
|
-
lambda { task('buildr:initialize').invoke }.should change { defined }.to(true)
|
753
|
-
end
|
754
|
-
end
|
data/spec/core/test_spec.rb
CHANGED
@@ -115,7 +115,7 @@ describe Buildr::TestTask do
|
|
115
115
|
test_task.dependencies.should include(File.expand_path('test.jar'))
|
116
116
|
test_task.dependencies.should include(artifact('acme:example:jar:1.0'))
|
117
117
|
end
|
118
|
-
|
118
|
+
|
119
119
|
it 'should response to :options and return test framework options' do
|
120
120
|
test_task.using :foo=>'bar'
|
121
121
|
test_task.options[:foo].should eql('bar')
|
@@ -131,6 +131,13 @@ describe Buildr::TestTask do
|
|
131
131
|
test_task.options[:bar].should eql('BAR')
|
132
132
|
end
|
133
133
|
|
134
|
+
it 'should respond to :using with deprecated parameter style and set value options to true, up to version 1.5 since this usage was deprecated in version 1.3' do
|
135
|
+
Buildr::VERSION.should < '1.5'
|
136
|
+
test_task.using('foo', 'bar')
|
137
|
+
test_task.options[:foo].should eql(true)
|
138
|
+
test_task.options[:bar].should eql(true)
|
139
|
+
end
|
140
|
+
|
134
141
|
it 'should start without pre-selected test framework' do
|
135
142
|
test_task.framework.should be_nil
|
136
143
|
end
|
data/spec/core/transport_spec.rb
CHANGED
@@ -235,12 +235,25 @@ describe URI::HTTP, '#read' do
|
|
235
235
|
@uri.read
|
236
236
|
end
|
237
237
|
|
238
|
-
it 'should use
|
238
|
+
it 'should use HTTPS if applicable' do
|
239
|
+
Net::HTTP.should_receive(:new).with(@host_domain, 443).and_return(@http)
|
240
|
+
@http.should_receive(:use_ssl=).with(true)
|
241
|
+
URI(@uri.to_s.sub(/http/, 'https')).read
|
242
|
+
end
|
243
|
+
|
244
|
+
it 'should use proxy from environment variable HTTP_PROXY when using http' do
|
239
245
|
ENV['HTTP_PROXY'] = @proxy
|
240
246
|
Net::HTTP.should_receive(:new).with(*@proxy_args).and_return(@http)
|
241
247
|
@uri.read
|
242
248
|
end
|
243
249
|
|
250
|
+
it 'should use proxy from environment variable HTTPS_PROXY when using https' do
|
251
|
+
ENV['HTTPS_PROXY'] = @proxy
|
252
|
+
Net::HTTP.should_receive(:new).with(@host_domain, 443, 'myproxy', 8080, 'john', 'smith').and_return(@http)
|
253
|
+
@http.should_receive(:use_ssl=).with(true)
|
254
|
+
URI(@uri.to_s.sub(/http/, 'https')).read
|
255
|
+
end
|
256
|
+
|
244
257
|
it 'should not use proxy for hosts from environment variable NO_PROXY' do
|
245
258
|
ENV['HTTP_PROXY'] = @proxy
|
246
259
|
ENV['NO_PROXY'] = @host_domain
|
@@ -299,6 +312,30 @@ describe URI::HTTP, '#read' do
|
|
299
312
|
request.should_receive(:basic_auth).with('john', 'secret')
|
300
313
|
URI("http://john:secret@#{@host_domain}").read
|
301
314
|
end
|
315
|
+
|
316
|
+
it 'should preseve authentication information during a redirect' do
|
317
|
+
Net::HTTP.should_receive(:new).twice.and_return(@http)
|
318
|
+
|
319
|
+
# The first request will produce a redirect
|
320
|
+
redirect = Net::HTTPRedirection.new(nil, nil, nil)
|
321
|
+
redirect['Location'] = "http://#{@host_domain}/asdf"
|
322
|
+
|
323
|
+
request1 = mock('request1')
|
324
|
+
Net::HTTP::Get.should_receive(:new).once.with('/', nil).and_return(request1)
|
325
|
+
request1.should_receive(:basic_auth).with('john', 'secret')
|
326
|
+
@http.should_receive(:request).with(request1).and_yield(redirect)
|
327
|
+
|
328
|
+
# The second request will be ok
|
329
|
+
ok = Net::HTTPOK.new(nil, nil, nil)
|
330
|
+
ok.stub!(:read_body)
|
331
|
+
|
332
|
+
request2 = mock('request2')
|
333
|
+
Net::HTTP::Get.should_receive(:new).once.with("/asdf", nil).and_return(request2)
|
334
|
+
request2.should_receive(:basic_auth).with('john', 'secret')
|
335
|
+
@http.should_receive(:request).with(request2).and_yield(ok)
|
336
|
+
|
337
|
+
URI("http://john:secret@#{@host_domain}").read
|
338
|
+
end
|
302
339
|
|
303
340
|
it 'should include the query part when performing HTTP GET' do
|
304
341
|
# should this test be generalized or shared with any other URI subtypes?
|
@@ -415,14 +452,14 @@ describe URI::SFTP, '#read' do
|
|
415
452
|
|
416
453
|
it 'should read contents of file and return it' do
|
417
454
|
file = mock('Net::SFTP::Operations::File')
|
418
|
-
file.should_receive(:read).with(
|
455
|
+
file.should_receive(:read).with(URI::RW_CHUNK_SIZE).once.and_return(@content, nil)
|
419
456
|
@file_factory.should_receive(:open).with('/root/path/readme', 'r').and_yield(file)
|
420
457
|
@uri.read.should eql(@content)
|
421
458
|
end
|
422
459
|
|
423
460
|
it 'should read contents of file and pass it to block' do
|
424
461
|
file = mock('Net::SFTP::Operations::File')
|
425
|
-
file.should_receive(:read).with(
|
462
|
+
file.should_receive(:read).with(URI::RW_CHUNK_SIZE).once.and_return(@content, nil)
|
426
463
|
@file_factory.should_receive(:open).with('/root/path/readme', 'r').and_yield(file)
|
427
464
|
content = ''
|
428
465
|
@uri.read do |chunk|
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
|
17
|
+
require File.join(File.dirname(__FILE__), '../spec_helpers')
|
18
|
+
|
19
|
+
describe Hash do
|
20
|
+
describe "#only" do
|
21
|
+
it "should find value for one key" do
|
22
|
+
{:a => 1, :b => 2, :c => 3}.only(:a).should == {:a => 1}
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should find values for multiple keys" do
|
26
|
+
{:a => 1, :b => 2, :c => 3}.only(:b, :c).should == {:b => 2, :c => 3}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe OpenObject do
|
32
|
+
before do
|
33
|
+
@obj = OpenObject.new({:a => 1, :b => 2, :c => 3})
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should be kind of Hash" do
|
37
|
+
Hash.should === @obj
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should accept block that supplies default value" do
|
41
|
+
obj = OpenObject.new { |hash, key| hash[key] = "New #{key}" }
|
42
|
+
obj[:foo].should == "New foo"
|
43
|
+
obj.keys.should == [:foo]
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should combine initial values from hash argument and from block" do
|
47
|
+
obj = OpenObject.new(:a => 6, :b => 2) { |h, k| h[k] = k.to_s * 2 }
|
48
|
+
obj[:a].should == 6
|
49
|
+
obj[:c].should == 'cc'
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should allow reading a value by calling its name method" do
|
53
|
+
@obj.b.should == 2
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should allow setting a value by calling its name= method" do
|
57
|
+
lambda { @obj.f = 32 }.should change { @obj.f }.to(32)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should allow changing a value by calling its name= method" do
|
61
|
+
lambda { @obj.c = 17 }.should change { @obj.c }.to(17)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should implement only method like a hash" do
|
65
|
+
@obj.only(:a).should == { :a => 1 }
|
66
|
+
end
|
67
|
+
end
|
data/spec/ide/eclipse_spec.rb
CHANGED
@@ -41,6 +41,13 @@ module EclipseHelper
|
|
41
41
|
default_output[0]
|
42
42
|
end
|
43
43
|
|
44
|
+
# <classpathentry path="PATH" sourcepath="RETURNED_VALUE" kind="var"/>
|
45
|
+
def sourcepath_for_path path
|
46
|
+
classpath_xml_elements.collect("classpathentry[@kind='var',@path='#{path}']") do |n|
|
47
|
+
n.attributes['sourcepath'] || 'no source artifact'
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
44
51
|
def project_xml_elements
|
45
52
|
task('eclipse').invoke
|
46
53
|
REXML::Document.new(File.open('.project')).root.elements
|
@@ -52,22 +59,57 @@ describe Buildr::Eclipse do
|
|
52
59
|
include EclipseHelper
|
53
60
|
|
54
61
|
describe "eclipse's .project file" do
|
62
|
+
|
63
|
+
JAVA_CONTAINER = 'org.eclipse.jdt.launching.JRE_CONTAINER'
|
64
|
+
SCALA_CONTAINER = 'ch.epfl.lamp.sdt.launching.SCALA_CONTAINER'
|
65
|
+
|
66
|
+
SCALA_NATURE = 'ch.epfl.lamp.sdt.core.scalanature'
|
67
|
+
JAVA_NATURE = 'org.eclipse.jdt.core.javanature'
|
55
68
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
69
|
+
SCALA_BUILDER = 'ch.epfl.lamp.sdt.core.scalabuilder'
|
70
|
+
JAVA_BUILDER = 'org.eclipse.jdt.core.javabuilder'
|
71
|
+
|
72
|
+
def project_natures
|
73
|
+
project_xml_elements.collect("natures/nature") { |n| n.text }
|
74
|
+
end
|
75
|
+
|
76
|
+
def build_commands
|
77
|
+
project_xml_elements.collect("buildSpec/buildCommand/name") { |n| n.text }
|
78
|
+
end
|
79
|
+
|
80
|
+
describe 'java project' do
|
81
|
+
before do
|
82
|
+
write 'buildfile'
|
83
|
+
write 'src/main/java/Main.java'
|
84
|
+
end
|
60
85
|
|
61
|
-
|
62
|
-
|
86
|
+
it 'should have Java nature' do
|
87
|
+
define('foo')
|
88
|
+
project_natures.should include(JAVA_NATURE)
|
89
|
+
end
|
63
90
|
|
64
|
-
|
65
|
-
|
91
|
+
it 'should have Java build command' do
|
92
|
+
define('foo')
|
93
|
+
build_commands.should include(JAVA_BUILDER)
|
66
94
|
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe 'nested java project' do
|
67
98
|
|
68
|
-
|
69
|
-
|
99
|
+
it 'should have name corresponding to its project definition' do
|
100
|
+
mkdir 'foo'
|
101
|
+
define('myproject') {
|
102
|
+
project.version = '1.0'
|
103
|
+
define('foo') { compile.using(:javac); package :jar }
|
104
|
+
}
|
105
|
+
task('eclipse').invoke
|
106
|
+
REXML::Document.new(File.open(File.join('foo', '.project'))).root.
|
107
|
+
elements.collect("name") { |e| e.text }.should == ['myproject-foo']
|
70
108
|
end
|
109
|
+
|
110
|
+
end
|
111
|
+
|
112
|
+
describe 'scala project' do
|
71
113
|
|
72
114
|
before do
|
73
115
|
write 'buildfile'
|
@@ -92,10 +134,7 @@ describe Buildr::Eclipse do
|
|
92
134
|
describe "eclipse's .classpath file" do
|
93
135
|
|
94
136
|
describe 'scala project' do
|
95
|
-
|
96
|
-
SCALA_CONTAINER = 'ch.epfl.lamp.sdt.launching.SCALA_CONTAINER'
|
97
|
-
JAVA_CONTAINER = 'org.eclipse.jdt.launching.JRE_CONTAINER'
|
98
|
-
|
137
|
+
|
99
138
|
def classpath_containers attribute='path'
|
100
139
|
classpath_xml_elements.collect("classpathentry[@kind='con']") { |n| n.attributes[attribute] }
|
101
140
|
end
|
@@ -105,7 +144,7 @@ describe Buildr::Eclipse do
|
|
105
144
|
write 'src/main/scala/Main.scala'
|
106
145
|
end
|
107
146
|
|
108
|
-
it 'should have SCALA_CONTAINER before
|
147
|
+
it 'should have SCALA_CONTAINER before JAVA_CONTAINER' do
|
109
148
|
define('foo')
|
110
149
|
classpath_containers.should include(SCALA_CONTAINER)
|
111
150
|
classpath_containers.should include(JAVA_CONTAINER)
|
@@ -174,6 +213,12 @@ describe Buildr::Eclipse do
|
|
174
213
|
define('foo')
|
175
214
|
classpath_specific_output('src/test/java').should == 'target/test/classes'
|
176
215
|
end
|
216
|
+
|
217
|
+
it 'should accept to be the only code in the project' do
|
218
|
+
rm 'src/main/java/Main.java'
|
219
|
+
define('foo')
|
220
|
+
classpath_sources.should include('src/test/java')
|
221
|
+
end
|
177
222
|
end
|
178
223
|
|
179
224
|
describe 'main resources' do
|
@@ -223,21 +268,44 @@ describe Buildr::Eclipse do
|
|
223
268
|
classpath_specific_output('src/test/resources').should == 'target/test/resources'
|
224
269
|
end
|
225
270
|
end
|
271
|
+
end
|
226
272
|
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
end
|
273
|
+
describe 'project depending on another project' do
|
274
|
+
it 'should have the underlying project in its classpath' do
|
275
|
+
mkdir 'foo'
|
276
|
+
mkdir 'bar'
|
277
|
+
define('myproject') {
|
278
|
+
project.version = '1.0'
|
279
|
+
define('foo') { package :jar }
|
280
|
+
define('bar') { compile.using(:javac).with project('foo'); }
|
281
|
+
}
|
282
|
+
task('eclipse').invoke
|
283
|
+
REXML::Document.new(File.open(File.join('bar', '.classpath'))).root.
|
284
|
+
elements.collect("classpathentry[@kind='src']") { |n| n.attributes['path'] }.should include('/myproject-foo')
|
240
285
|
end
|
241
286
|
end
|
242
287
|
end
|
288
|
+
|
289
|
+
describe 'maven2 artifact dependency' do
|
290
|
+
before do
|
291
|
+
define('foo') { compile.using(:javac).with('com.example:library:jar:2.0') }
|
292
|
+
artifact('com.example:library:jar:2.0') { |task| write task.name }
|
293
|
+
task('eclipse').invoke
|
294
|
+
end
|
295
|
+
|
296
|
+
it 'should have a reference in the .classpath file relative to the local M2 repo' do
|
297
|
+
classpath_xml_elements.collect("classpathentry[@kind='var']") { |n| n.attributes['path'] }.
|
298
|
+
should include('M2_REPO/com/example/library/2.0/library-2.0.jar')
|
299
|
+
end
|
300
|
+
|
301
|
+
it 'should be downloaded' do
|
302
|
+
file(artifact('com.example:library:jar:2.0').name).should exist
|
303
|
+
end
|
304
|
+
|
305
|
+
it 'should have a source artifact reference in the .classpath file' do
|
306
|
+
sourcepath_for_path('M2_REPO/com/example/library/2.0/library-2.0.jar').
|
307
|
+
should == ['M2_REPO/com/example/library/2.0/library-2.0-sources.jar']
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
243
311
|
end
|