buildr 1.3.4 → 1.3.5
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.
- data/CHANGELOG +35 -0
- data/README.rdoc +1 -1
- data/Rakefile +1 -1
- data/buildr.buildfile +6 -1
- data/buildr.gemspec +10 -9
- data/doc/_config.yml +1 -0
- data/doc/_layouts/default.html +25 -19
- data/doc/artifacts.textile +0 -36
- data/doc/building.textile +0 -38
- data/doc/contributing.textile +51 -15
- data/doc/css/default.css +11 -4
- data/doc/css/print.css +32 -24
- data/doc/download.textile +2 -1
- data/doc/extending.textile +10 -20
- data/doc/images/1442160941-frontcover.jpg +0 -0
- data/doc/images/asf-logo.png +0 -0
- data/doc/images/note.png +0 -0
- data/doc/images/project-structure.png +0 -0
- data/doc/images/tip.png +0 -0
- data/doc/images/zbuildr.png +0 -0
- data/doc/index.textile +39 -17
- data/doc/{getting_started.textile → installing.textile} +2 -67
- data/doc/languages.textile +50 -52
- data/doc/more_stuff.textile +154 -62
- data/doc/packaging.textile +0 -82
- data/doc/preface.textile +41 -15
- data/doc/projects.textile +0 -18
- data/doc/quick_start.textile +210 -0
- data/doc/scripts/install-linux.sh +10 -2
- data/doc/settings_profiles.textile +1 -33
- data/doc/testing.textile +6 -32
- data/lib/buildr.rb +2 -1
- data/lib/buildr/core.rb +6 -0
- data/lib/buildr/core/application.rb +2 -5
- data/lib/buildr/core/build.rb +29 -19
- data/lib/buildr/core/compile.rb +22 -4
- data/lib/buildr/core/filter.rb +2 -4
- data/lib/buildr/core/project.rb +5 -4
- data/lib/buildr/core/shell.rb +198 -0
- data/lib/buildr/core/test.rb +2 -0
- data/lib/buildr/core/transports.rb +18 -19
- data/lib/buildr/core/util.rb +178 -9
- data/lib/buildr/groovy.rb +1 -0
- data/lib/buildr/groovy/bdd.rb +5 -5
- data/lib/buildr/groovy/shell.rb +48 -0
- data/lib/buildr/ide/eclipse.rb +148 -36
- data/lib/buildr/ide/eclipse/java.rb +53 -0
- data/lib/buildr/ide/eclipse/plugin.rb +68 -0
- data/lib/buildr/ide/eclipse/scala.rb +66 -0
- data/lib/buildr/java/bdd.rb +16 -8
- data/lib/buildr/java/cobertura.rb +44 -13
- data/lib/buildr/java/commands.rb +5 -3
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +18 -0
- data/lib/buildr/java/packaging.rb +2 -2
- data/lib/buildr/java/rjb.rb +1 -1
- data/lib/buildr/java/test_result.rb +48 -1
- data/lib/buildr/java/tests.rb +8 -5
- data/lib/buildr/packaging/artifact_namespace.rb +1 -1
- data/lib/buildr/packaging/package.rb +6 -2
- data/lib/buildr/packaging/zip.rb +10 -1
- data/lib/buildr/packaging/ziptask.rb +5 -2
- data/lib/buildr/scala.rb +1 -0
- data/lib/buildr/scala/bdd.rb +17 -8
- data/lib/buildr/scala/compiler.rb +66 -21
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +35 -0
- data/lib/buildr/scala/shell.rb +55 -0
- data/lib/buildr/scala/tests.rb +6 -5
- data/lib/buildr/shell.rb +180 -0
- data/rakelib/doc.rake +2 -3
- data/rakelib/jekylltask.rb +42 -32
- data/rakelib/package.rake +4 -2
- data/rakelib/rspec.rake +3 -3
- data/rakelib/setup.rake +7 -1
- data/rakelib/stage.rake +9 -2
- data/rakelib/stage.rake~ +213 -0
- data/spec/core/application_spec.rb +84 -1
- data/spec/core/build_spec.rb +54 -2
- data/spec/core/common_spec.rb +1 -1
- data/spec/core/compile_spec.rb +2 -1
- data/spec/core/extension_spec.rb +93 -0
- data/spec/core/test_spec.rb +2 -2
- data/spec/core/transport_spec.rb +1 -1
- data/spec/groovy/bdd_spec.rb +6 -6
- data/spec/groovy/compiler_spec.rb +1 -0
- data/spec/ide/eclipse_spec.rb +262 -72
- data/spec/java/{ant.rb → ant_spec.rb} +0 -0
- data/spec/java/bdd_spec.rb +15 -0
- data/spec/java/cobertura_spec.rb +9 -1
- data/spec/java/emma_spec.rb +1 -1
- data/spec/java/java_spec.rb +26 -0
- data/spec/java/packaging_spec.rb +9 -7
- data/spec/java/{test_coverage_spec.rb → test_coverage_helper.rb} +6 -4
- data/spec/java/tests_spec.rb +22 -0
- data/spec/packaging/archive_spec.rb +14 -0
- data/spec/packaging/artifact_spec.rb +2 -2
- data/spec/packaging/packaging_spec.rb +97 -2
- data/spec/sandbox.rb +3 -1
- data/spec/scala/bdd_spec.rb +17 -48
- data/spec/scala/compiler_spec.rb +31 -2
- data/spec/scala/tests_spec.rb +1 -0
- data/spec/spec_helpers.rb +12 -0
- metadata +145 -148
|
@@ -80,6 +80,13 @@ describe Buildr::Application do
|
|
|
80
80
|
lambda { Buildr.application.send :load_buildfile }.should show(%r{(in .*, spec)})
|
|
81
81
|
end
|
|
82
82
|
end
|
|
83
|
+
|
|
84
|
+
describe 'options' do
|
|
85
|
+
it "should have 'tasks' as the sole default rakelib" do
|
|
86
|
+
Buildr.application.send(:handle_options)
|
|
87
|
+
Buildr.application.options.rakelib.should == ['tasks']
|
|
88
|
+
end
|
|
89
|
+
end
|
|
83
90
|
|
|
84
91
|
describe 'gems' do
|
|
85
92
|
before do
|
|
@@ -123,7 +130,6 @@ describe Buildr::Application do
|
|
|
123
130
|
end
|
|
124
131
|
end
|
|
125
132
|
|
|
126
|
-
|
|
127
133
|
describe 'load_gems' do
|
|
128
134
|
before do
|
|
129
135
|
class << Buildr.application
|
|
@@ -234,6 +240,83 @@ describe Buildr::Application do
|
|
|
234
240
|
end
|
|
235
241
|
end
|
|
236
242
|
|
|
243
|
+
describe 'load_tasks' do
|
|
244
|
+
before do
|
|
245
|
+
class << Buildr.application
|
|
246
|
+
public :load_tasks
|
|
247
|
+
end
|
|
248
|
+
@original_loaded_features = $LOADED_FEATURES.dup
|
|
249
|
+
Buildr.application.options.rakelib = ["tasks"]
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
after do
|
|
253
|
+
$taskfiles = nil
|
|
254
|
+
($LOADED_FEATURES - @original_loaded_features).each do |new_load|
|
|
255
|
+
$LOADED_FEATURES.delete(new_load)
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def write_task(filename)
|
|
260
|
+
write filename, <<-RUBY
|
|
261
|
+
$taskfiles ||= []
|
|
262
|
+
$taskfiles << __FILE__
|
|
263
|
+
RUBY
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
def loaded_tasks
|
|
267
|
+
@loaded ||= Buildr.application.load_tasks
|
|
268
|
+
$taskfiles
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
it "should load {options.rakelib}/foo.rake" do
|
|
272
|
+
write_task 'tasks/foo.rake'
|
|
273
|
+
loaded_tasks.should have(1).task
|
|
274
|
+
loaded_tasks.first.should =~ %r{tasks/foo\.rake$}
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
it 'should load all *.rake files from the rakelib' do
|
|
278
|
+
write_task 'tasks/bar.rake'
|
|
279
|
+
write_task 'tasks/quux.rake'
|
|
280
|
+
loaded_tasks.should have(2).tasks
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
it 'should not load files which do not have the .rake extension' do
|
|
284
|
+
write_task 'tasks/foo.rb'
|
|
285
|
+
write_task 'tasks/bar.rake'
|
|
286
|
+
loaded_tasks.should have(1).task
|
|
287
|
+
loaded_tasks.first.should =~ %r{tasks/bar\.rake$}
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
it 'should load files only from the directory specified in the rakelib option' do
|
|
291
|
+
Buildr.application.options.rakelib = ['extensions']
|
|
292
|
+
write_task 'extensions/amp.rake'
|
|
293
|
+
write_task 'tasks/bar.rake'
|
|
294
|
+
write_task 'extensions/foo.rake'
|
|
295
|
+
loaded_tasks.should have(2).tasks
|
|
296
|
+
%w[amp foo].each do |filename|
|
|
297
|
+
loaded_tasks.select{|x| x =~ %r{extensions/#{filename}\.rake}}.should have(1).entry
|
|
298
|
+
end
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
it 'should load files from all the directories specified in the rakelib option' do
|
|
302
|
+
Buildr.application.options.rakelib = ['ext', 'more', 'tasks']
|
|
303
|
+
write_task 'ext/foo.rake'
|
|
304
|
+
write_task 'tasks/bar.rake'
|
|
305
|
+
write_task 'tasks/zeb.rake'
|
|
306
|
+
write_task 'more/baz.rake'
|
|
307
|
+
loaded_tasks.should have(4).tasks
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
it 'should not load files from the rakelib more than once' do
|
|
311
|
+
write_task 'tasks/new_one.rake'
|
|
312
|
+
write_task 'tasks/already.rake'
|
|
313
|
+
$LOADED_FEATURES << 'tasks/already.rake'
|
|
314
|
+
|
|
315
|
+
loaded_tasks.should have(1).task
|
|
316
|
+
loaded_tasks.first.should =~ %r{tasks/new_one\.rake$}
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
|
|
237
320
|
end
|
|
238
321
|
|
|
239
322
|
|
data/spec/core/build_spec.rb
CHANGED
|
@@ -211,7 +211,7 @@ nothing to commit (working directory clean)
|
|
|
211
211
|
Git.uncommitted_files.should be_empty
|
|
212
212
|
end
|
|
213
213
|
|
|
214
|
-
it 'should reject a dirty repository' do
|
|
214
|
+
it 'should reject a dirty repository, Git 1.4.2 or former' do
|
|
215
215
|
Git.should_receive(:`).with('git status').and_return <<-EOF
|
|
216
216
|
# On branch master
|
|
217
217
|
#
|
|
@@ -229,6 +229,24 @@ nothing to commit (working directory clean)
|
|
|
229
229
|
EOF
|
|
230
230
|
Git.uncommitted_files.should include('lib/buildr.rb', 'error.log')
|
|
231
231
|
end
|
|
232
|
+
|
|
233
|
+
it 'should reject a dirty repository, Git 1.4.3 or higher' do
|
|
234
|
+
Git.should_receive(:`).with('git status').and_return <<-EOF
|
|
235
|
+
# On branch master
|
|
236
|
+
# Changed but not updated:
|
|
237
|
+
# (use "git add <file>..." to update what will be committed)
|
|
238
|
+
#
|
|
239
|
+
#\tmodified: lib/buildr.rb
|
|
240
|
+
#\tmodified: spec/buildr_spec.rb
|
|
241
|
+
#
|
|
242
|
+
# Untracked files:
|
|
243
|
+
# (use "git add <file>..." to include in what will be committed)
|
|
244
|
+
#
|
|
245
|
+
#\terror.log
|
|
246
|
+
no changes added to commit (use "git add" and/or "git commit -a")
|
|
247
|
+
EOF
|
|
248
|
+
Git.uncommitted_files.should include('lib/buildr.rb', 'error.log')
|
|
249
|
+
end
|
|
232
250
|
end
|
|
233
251
|
|
|
234
252
|
describe '#remote' do
|
|
@@ -327,6 +345,31 @@ describe Svn do
|
|
|
327
345
|
end # of Buildr::Svn
|
|
328
346
|
|
|
329
347
|
|
|
348
|
+
describe Release do
|
|
349
|
+
describe 'find' do
|
|
350
|
+
it 'should return GitRelease if project uses Git' do
|
|
351
|
+
write '.git/config'
|
|
352
|
+
Release.find.should be_instance_of(GitRelease)
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
it 'should return SvnRelease if project uses SVN' do
|
|
356
|
+
write '.svn/xml'
|
|
357
|
+
Release.find.should be_instance_of(SvnRelease)
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
it 'should return nil if no known release process' do
|
|
361
|
+
Dir.chdir(Dir.tmpdir) do
|
|
362
|
+
Release.find.should be_nil
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
after :each do
|
|
367
|
+
Release.instance_exec { @release = nil }
|
|
368
|
+
end
|
|
369
|
+
end
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
|
|
330
373
|
describe 'a release process', :shared=>true do
|
|
331
374
|
|
|
332
375
|
describe '#make' do
|
|
@@ -358,6 +401,13 @@ describe 'a release process', :shared=>true do
|
|
|
358
401
|
file('buildfile').should contain('VERSION_NUMBER = "1.0.1-SNAPSHOT"')
|
|
359
402
|
end
|
|
360
403
|
|
|
404
|
+
it 'should keep leading zeros in the next version number' do
|
|
405
|
+
write 'buildfile', "VERSION_NUMBER = '1.0.001-SNAPSHOT'"
|
|
406
|
+
@release.stub!(:tag_release)
|
|
407
|
+
@release.make
|
|
408
|
+
file('buildfile').should contain('VERSION_NUMBER = "1.0.002-SNAPSHOT"')
|
|
409
|
+
end
|
|
410
|
+
|
|
361
411
|
it 'should commit the updated buildfile' do
|
|
362
412
|
@release.stub!(:tag_release)
|
|
363
413
|
@release.make
|
|
@@ -484,7 +534,9 @@ describe GitRelease do
|
|
|
484
534
|
|
|
485
535
|
describe '#applies_to?' do
|
|
486
536
|
it 'should reject a non-git repo' do
|
|
487
|
-
|
|
537
|
+
Dir.chdir(Dir.tmpdir) do
|
|
538
|
+
GitRelease.applies_to?.should be_false
|
|
539
|
+
end
|
|
488
540
|
end
|
|
489
541
|
|
|
490
542
|
it 'should accept a git repo' do
|
data/spec/core/common_spec.rb
CHANGED
|
@@ -32,7 +32,7 @@ describe Buildr.method(:struct) do
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
it 'should return members when requested' do
|
|
35
|
-
@struct.members.sort.should eql(@hash.keys.map(&:to_s).sort)
|
|
35
|
+
@struct.members.map(&:to_s).sort.should eql(@hash.keys.map(&:to_s).sort)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
it 'should return valued when requested' do
|
data/spec/core/compile_spec.rb
CHANGED
|
@@ -293,7 +293,8 @@ describe Buildr::CompileTask, '#invoke' do
|
|
|
293
293
|
end
|
|
294
294
|
|
|
295
295
|
it 'should run all source files as prerequisites' do
|
|
296
|
-
|
|
296
|
+
mkpath 'src'
|
|
297
|
+
file('src').should_receive :invoke_prerequisites
|
|
297
298
|
compile_task.from('src').invoke
|
|
298
299
|
end
|
|
299
300
|
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
|
|
20
|
+
describe Extension do
|
|
21
|
+
|
|
22
|
+
it 'should call Extension.first_time during include' do
|
|
23
|
+
TestExtension.should_receive(:first_time_called).once
|
|
24
|
+
class Buildr::Project
|
|
25
|
+
include TestExtension
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it 'should call before_define and after_define in order when project is defined' do
|
|
30
|
+
begin
|
|
31
|
+
TestExtension.initialized do |extension|
|
|
32
|
+
extension.should_receive(:before_define_called).once.ordered
|
|
33
|
+
extension.should_receive(:after_define_called).once.ordered
|
|
34
|
+
end
|
|
35
|
+
class Buildr::Project
|
|
36
|
+
include TestExtension
|
|
37
|
+
end
|
|
38
|
+
define('foo')
|
|
39
|
+
ensure
|
|
40
|
+
TestExtension.initialized { |ignore| }
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'should call before_define and after_define for each project defined' do
|
|
45
|
+
begin
|
|
46
|
+
extensions = 0
|
|
47
|
+
TestExtension.initialized do |extension|
|
|
48
|
+
extensions += 1
|
|
49
|
+
extension.should_receive(:before_define_called).once.ordered
|
|
50
|
+
extension.should_receive(:after_define_called).once.ordered
|
|
51
|
+
end
|
|
52
|
+
class Buildr::Project
|
|
53
|
+
include TestExtension
|
|
54
|
+
end
|
|
55
|
+
define('foo')
|
|
56
|
+
define('bar')
|
|
57
|
+
extensions.should equal(2)
|
|
58
|
+
ensure
|
|
59
|
+
TestExtension.initialized { |ignore| }
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
module TestExtension
|
|
65
|
+
include Extension
|
|
66
|
+
|
|
67
|
+
def initialize(*args)
|
|
68
|
+
# callback is used to obtain extension instance created by buildr
|
|
69
|
+
@@initialized.call(self) if @@initialized
|
|
70
|
+
super
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def TestExtension.initialized(&block)
|
|
74
|
+
@@initialized = block
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
first_time do
|
|
78
|
+
TestExtension.first_time_called()
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
before_define do |project|
|
|
82
|
+
project.before_define_called()
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
after_define do |project|
|
|
86
|
+
project.after_define_called()
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def TestExtension.first_time_called()
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
|
data/spec/core/test_spec.rb
CHANGED
|
@@ -333,10 +333,10 @@ describe Buildr::TestTask, 'with passing tests' do
|
|
|
333
333
|
it 'should execute teardown task' do
|
|
334
334
|
lambda { test_task.invoke }.should run_task('foo:test:teardown')
|
|
335
335
|
end
|
|
336
|
-
|
|
336
|
+
|
|
337
337
|
it 'should update the last successful run timestamp' do
|
|
338
338
|
before = Time.now ; test_task.invoke ; after = Time.now
|
|
339
|
-
(before-1..after+1).should
|
|
339
|
+
(before-1..after+1).should cover(test_task.timestamp)
|
|
340
340
|
end
|
|
341
341
|
end
|
|
342
342
|
|
data/spec/core/transport_spec.rb
CHANGED
|
@@ -511,7 +511,7 @@ describe URI::SFTP, '#write' do
|
|
|
511
511
|
end
|
|
512
512
|
|
|
513
513
|
it 'should create missing paths on server' do
|
|
514
|
-
@sftp_session.should_receive(:opendir!)
|
|
514
|
+
@sftp_session.should_receive(:opendir!) { |path| fail unless path == '/root' }
|
|
515
515
|
@sftp_session.should_receive(:mkdir!).once.with('/root/path', {})
|
|
516
516
|
@uri.write @content
|
|
517
517
|
end
|
data/spec/groovy/bdd_spec.rb
CHANGED
|
@@ -31,11 +31,11 @@ describe Buildr::Groovy::EasyB do
|
|
|
31
31
|
|
|
32
32
|
it 'should apply to a project having EasyB sources' do
|
|
33
33
|
define('one', :base_dir => 'one') do
|
|
34
|
-
write _('src/spec/groovy/
|
|
34
|
+
write _('src/spec/groovy/SomeSpecification.groovy'), 'true;'
|
|
35
35
|
Buildr::Groovy::EasyB.applies_to?(self).should be_true
|
|
36
36
|
end
|
|
37
37
|
define('two', :base_dir => 'two') do
|
|
38
|
-
write _('src/test/groovy/
|
|
38
|
+
write _('src/test/groovy/SomeSpecification.groovy'), 'true;'
|
|
39
39
|
Buildr::Groovy::EasyB.applies_to?(self).should be_false
|
|
40
40
|
end
|
|
41
41
|
define('three', :base_dir => 'three') do
|
|
@@ -54,14 +54,14 @@ describe Buildr::Groovy::EasyB do
|
|
|
54
54
|
|
|
55
55
|
it 'should select a java compiler if java sources are found' do
|
|
56
56
|
foo do
|
|
57
|
-
write _('src/spec/java/
|
|
57
|
+
write _('src/spec/java/SomeSpecification.java'), 'public class SomeSpecification {}'
|
|
58
58
|
test.compile.language.should eql(:java)
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
it 'should include src/spec/groovy/*
|
|
62
|
+
it 'should include src/spec/groovy/*Specification.groovy' do
|
|
63
63
|
foo do
|
|
64
|
-
spec = _('src/spec/groovy/
|
|
64
|
+
spec = _('src/spec/groovy/SomeSpecification.groovy')
|
|
65
65
|
write spec, 'true'
|
|
66
66
|
test.invoke
|
|
67
67
|
test.tests.should include(spec)
|
|
@@ -77,4 +77,4 @@ describe Buildr::Groovy::EasyB do
|
|
|
77
77
|
end
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
end # EasyB
|
|
80
|
+
end # EasyB
|
data/spec/ide/eclipse_spec.rb
CHANGED
|
@@ -17,85 +17,93 @@
|
|
|
17
17
|
require File.join(File.dirname(__FILE__), '../spec_helpers')
|
|
18
18
|
|
|
19
19
|
|
|
20
|
+
JAVA_CONTAINER = Buildr::Eclipse::Java::CONTAINER
|
|
21
|
+
SCALA_CONTAINER = Buildr::Eclipse::Scala::CONTAINER
|
|
22
|
+
PLUGIN_CONTAINER = Buildr::Eclipse::Plugin::CONTAINER
|
|
23
|
+
|
|
24
|
+
JAVA_NATURE = Buildr::Eclipse::Java::NATURE
|
|
25
|
+
SCALA_NATURE = Buildr::Eclipse::Scala::NATURE
|
|
26
|
+
PLUGIN_NATURE = Buildr::Eclipse::Plugin::NATURE
|
|
27
|
+
|
|
28
|
+
JAVA_BUILDER = Buildr::Eclipse::Java::BUILDER
|
|
29
|
+
SCALA_BUILDER = Buildr::Eclipse::Scala::BUILDER
|
|
30
|
+
PLUGIN_BUILDERS = Buildr::Eclipse::Plugin::BUILDERS
|
|
31
|
+
|
|
32
|
+
|
|
20
33
|
module EclipseHelper
|
|
21
34
|
def classpath_xml_elements
|
|
22
35
|
task('eclipse').invoke
|
|
23
36
|
REXML::Document.new(File.open('.classpath')).root.elements
|
|
24
37
|
end
|
|
25
|
-
|
|
26
|
-
def classpath_sources
|
|
38
|
+
|
|
39
|
+
def classpath_sources(attribute='path')
|
|
27
40
|
classpath_xml_elements.collect("classpathentry[@kind='src']") { |n| n.attributes[attribute] }
|
|
28
41
|
end
|
|
29
|
-
|
|
42
|
+
|
|
30
43
|
# <classpathentry path="PATH" output="RETURNED_VALUE"/>
|
|
31
|
-
def classpath_specific_output
|
|
44
|
+
def classpath_specific_output(path)
|
|
32
45
|
specific_output = classpath_xml_elements.collect("classpathentry[@path='#{path}']") { |n| n.attributes['output'] }
|
|
33
46
|
raise "expected: one output attribute for path '#{path}, got: #{specific_output.inspect}" if specific_output.length > 1
|
|
34
47
|
specific_output[0]
|
|
35
48
|
end
|
|
36
|
-
|
|
49
|
+
|
|
37
50
|
# <classpathentry path="RETURNED_VALUE" kind="output"/>
|
|
38
51
|
def classpath_default_output
|
|
39
52
|
default_output = classpath_xml_elements.collect("classpathentry[@kind='output']") { |n| n.attributes['path'] }
|
|
40
53
|
raise "expected: one path attribute for kind='output', got: #{default_output.inspect}" if default_output.length > 1
|
|
41
54
|
default_output[0]
|
|
42
55
|
end
|
|
43
|
-
|
|
56
|
+
|
|
44
57
|
# <classpathentry path="PATH" sourcepath="RETURNED_VALUE" kind="var"/>
|
|
45
|
-
def sourcepath_for_path
|
|
58
|
+
def sourcepath_for_path(path)
|
|
46
59
|
classpath_xml_elements.collect("classpathentry[@kind='var',@path='#{path}']") do |n|
|
|
47
60
|
n.attributes['sourcepath'] || 'no source artifact'
|
|
48
61
|
end
|
|
49
62
|
end
|
|
50
|
-
|
|
63
|
+
|
|
51
64
|
def project_xml_elements
|
|
52
65
|
task('eclipse').invoke
|
|
53
66
|
REXML::Document.new(File.open('.project')).root.elements
|
|
54
67
|
end
|
|
68
|
+
|
|
69
|
+
def project_natures
|
|
70
|
+
project_xml_elements.collect("natures/nature") { |n| n.text }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def build_commands
|
|
74
|
+
project_xml_elements.collect("buildSpec/buildCommand/name") { |n| n.text }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def classpath_containers(attribute='path')
|
|
78
|
+
classpath_xml_elements.collect("classpathentry[@kind='con']") { |n| n.attributes[attribute] }
|
|
79
|
+
end
|
|
55
80
|
end
|
|
56
81
|
|
|
57
82
|
|
|
58
83
|
describe Buildr::Eclipse do
|
|
59
84
|
include EclipseHelper
|
|
60
|
-
|
|
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
85
|
|
|
66
|
-
|
|
67
|
-
JAVA_NATURE = 'org.eclipse.jdt.core.javanature'
|
|
68
|
-
|
|
69
|
-
SCALA_BUILDER = 'ch.epfl.lamp.sdt.core.scalabuilder'
|
|
70
|
-
JAVA_BUILDER = 'org.eclipse.jdt.core.javabuilder'
|
|
86
|
+
describe "eclipse's .project file" do
|
|
71
87
|
|
|
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
88
|
describe 'java project' do
|
|
81
89
|
before do
|
|
82
90
|
write 'buildfile'
|
|
83
91
|
write 'src/main/java/Main.java'
|
|
84
92
|
end
|
|
85
|
-
|
|
93
|
+
|
|
86
94
|
it 'should have Java nature' do
|
|
87
95
|
define('foo')
|
|
88
96
|
project_natures.should include(JAVA_NATURE)
|
|
89
97
|
end
|
|
90
|
-
|
|
98
|
+
|
|
91
99
|
it 'should have Java build command' do
|
|
92
100
|
define('foo')
|
|
93
101
|
build_commands.should include(JAVA_BUILDER)
|
|
94
102
|
end
|
|
95
103
|
end
|
|
96
|
-
|
|
104
|
+
|
|
97
105
|
describe 'nested java project' do
|
|
98
|
-
|
|
106
|
+
|
|
99
107
|
it 'should have name corresponding to its project definition' do
|
|
100
108
|
mkdir 'foo'
|
|
101
109
|
define('myproject') {
|
|
@@ -108,42 +116,102 @@ describe Buildr::Eclipse do
|
|
|
108
116
|
end
|
|
109
117
|
|
|
110
118
|
end
|
|
111
|
-
|
|
119
|
+
|
|
112
120
|
describe 'scala project' do
|
|
113
|
-
|
|
121
|
+
|
|
122
|
+
before do
|
|
123
|
+
define 'foo' do
|
|
124
|
+
eclipse.natures :scala
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it 'should have Scala nature before Java nature' do
|
|
129
|
+
project_natures.should include(SCALA_NATURE)
|
|
130
|
+
project_natures.should include(JAVA_NATURE)
|
|
131
|
+
project_natures.index(SCALA_NATURE).should < project_natures.index(JAVA_NATURE)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it 'should have Scala build command and no Java build command' do
|
|
135
|
+
build_commands.should include(SCALA_BUILDER)
|
|
136
|
+
build_commands.should_not include(JAVA_BUILDER)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
describe 'standard scala project' do
|
|
141
|
+
|
|
114
142
|
before do
|
|
115
143
|
write 'buildfile'
|
|
116
144
|
write 'src/main/scala/Main.scala'
|
|
145
|
+
define 'foo'
|
|
117
146
|
end
|
|
118
|
-
|
|
147
|
+
|
|
119
148
|
it 'should have Scala nature before Java nature' do
|
|
120
|
-
define('foo')
|
|
121
149
|
project_natures.should include(SCALA_NATURE)
|
|
122
150
|
project_natures.should include(JAVA_NATURE)
|
|
123
151
|
project_natures.index(SCALA_NATURE).should < project_natures.index(JAVA_NATURE)
|
|
124
152
|
end
|
|
125
|
-
|
|
153
|
+
|
|
154
|
+
it 'should have Scala build command and no Java build command' do
|
|
155
|
+
build_commands.should include(SCALA_BUILDER)
|
|
156
|
+
build_commands.should_not include(JAVA_BUILDER)
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
describe 'non-standard scala project' do
|
|
161
|
+
|
|
162
|
+
before do
|
|
163
|
+
write 'buildfile'
|
|
164
|
+
write 'src/main/foo/Main.scala'
|
|
165
|
+
define 'foo' do
|
|
166
|
+
eclipse.natures = :scala
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
it 'should have Scala nature before Java nature' do
|
|
171
|
+
project_natures.should include(SCALA_NATURE)
|
|
172
|
+
project_natures.should include(JAVA_NATURE)
|
|
173
|
+
project_natures.index(SCALA_NATURE).should < project_natures.index(JAVA_NATURE)
|
|
174
|
+
end
|
|
175
|
+
|
|
126
176
|
it 'should have Scala build command and no Java build command' do
|
|
127
|
-
define('foo')
|
|
128
177
|
build_commands.should include(SCALA_BUILDER)
|
|
129
178
|
build_commands.should_not include(JAVA_BUILDER)
|
|
130
179
|
end
|
|
131
180
|
end
|
|
181
|
+
|
|
182
|
+
describe 'Plugin project' do
|
|
183
|
+
|
|
184
|
+
before do
|
|
185
|
+
write 'buildfile'
|
|
186
|
+
write 'src/main/java/Activator.java'
|
|
187
|
+
write 'plugin.xml'
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
it 'should have plugin nature before Java nature' do
|
|
191
|
+
define('foo')
|
|
192
|
+
project_natures.should include(PLUGIN_NATURE)
|
|
193
|
+
project_natures.should include(JAVA_NATURE)
|
|
194
|
+
project_natures.index(PLUGIN_NATURE).should < project_natures.index(JAVA_NATURE)
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it 'should have plugin build commands and the Java build command' do
|
|
198
|
+
define('foo')
|
|
199
|
+
build_commands.should include(PLUGIN_BUILDERS[0])
|
|
200
|
+
build_commands.should include(PLUGIN_BUILDERS[1])
|
|
201
|
+
build_commands.should include(JAVA_BUILDER)
|
|
202
|
+
end
|
|
203
|
+
end
|
|
132
204
|
end
|
|
133
|
-
|
|
205
|
+
|
|
134
206
|
describe "eclipse's .classpath file" do
|
|
135
|
-
|
|
207
|
+
|
|
136
208
|
describe 'scala project' do
|
|
137
209
|
|
|
138
|
-
def classpath_containers attribute='path'
|
|
139
|
-
classpath_xml_elements.collect("classpathentry[@kind='con']") { |n| n.attributes[attribute] }
|
|
140
|
-
end
|
|
141
|
-
|
|
142
210
|
before do
|
|
143
211
|
write 'buildfile'
|
|
144
212
|
write 'src/main/scala/Main.scala'
|
|
145
213
|
end
|
|
146
|
-
|
|
214
|
+
|
|
147
215
|
it 'should have SCALA_CONTAINER before JAVA_CONTAINER' do
|
|
148
216
|
define('foo')
|
|
149
217
|
classpath_containers.should include(SCALA_CONTAINER)
|
|
@@ -151,15 +219,15 @@ describe Buildr::Eclipse do
|
|
|
151
219
|
classpath_containers.index(SCALA_CONTAINER).should < classpath_containers.index(JAVA_CONTAINER)
|
|
152
220
|
end
|
|
153
221
|
end
|
|
154
|
-
|
|
222
|
+
|
|
155
223
|
describe 'source folders' do
|
|
156
|
-
|
|
224
|
+
|
|
157
225
|
before do
|
|
158
226
|
write 'buildfile'
|
|
159
227
|
write 'src/main/java/Main.java'
|
|
160
228
|
write 'src/test/java/Test.java'
|
|
161
229
|
end
|
|
162
|
-
|
|
230
|
+
|
|
163
231
|
describe 'source', :shared=>true do
|
|
164
232
|
it 'should ignore CVS and SVN files' do
|
|
165
233
|
define('foo')
|
|
@@ -170,106 +238,106 @@ describe Buildr::Eclipse do
|
|
|
170
238
|
end
|
|
171
239
|
end
|
|
172
240
|
end
|
|
173
|
-
|
|
241
|
+
|
|
174
242
|
describe 'main code' do
|
|
175
243
|
it_should_behave_like 'source'
|
|
176
|
-
|
|
244
|
+
|
|
177
245
|
it 'should accept to come from the default directory' do
|
|
178
246
|
define('foo')
|
|
179
247
|
classpath_sources.should include('src/main/java')
|
|
180
248
|
end
|
|
181
|
-
|
|
249
|
+
|
|
182
250
|
it 'should accept to come from a user-defined directory' do
|
|
183
251
|
define('foo') { compile path_to('src/java') }
|
|
184
252
|
classpath_sources.should include('src/java')
|
|
185
253
|
end
|
|
186
|
-
|
|
254
|
+
|
|
187
255
|
it 'should accept a file task as a main source folder' do
|
|
188
256
|
define('foo') { compile apt }
|
|
189
257
|
classpath_sources.should include('target/generated/apt')
|
|
190
258
|
end
|
|
191
|
-
|
|
259
|
+
|
|
192
260
|
it 'should go to the default target directory' do
|
|
193
261
|
define('foo')
|
|
194
262
|
classpath_specific_output('src/main/java').should be(nil)
|
|
195
263
|
classpath_default_output.should == 'target/classes'
|
|
196
264
|
end
|
|
197
265
|
end
|
|
198
|
-
|
|
266
|
+
|
|
199
267
|
describe 'test code' do
|
|
200
268
|
it_should_behave_like 'source'
|
|
201
|
-
|
|
269
|
+
|
|
202
270
|
it 'should accept to come from the default directory' do
|
|
203
271
|
define('foo')
|
|
204
272
|
classpath_sources.should include('src/test/java')
|
|
205
273
|
end
|
|
206
|
-
|
|
274
|
+
|
|
207
275
|
it 'should accept to come from a user-defined directory' do
|
|
208
276
|
define('foo') { test.compile path_to('src/test') }
|
|
209
277
|
classpath_sources.should include('src/test')
|
|
210
278
|
end
|
|
211
|
-
|
|
279
|
+
|
|
212
280
|
it 'should go to the default target directory' do
|
|
213
281
|
define('foo')
|
|
214
282
|
classpath_specific_output('src/test/java').should == 'target/test/classes'
|
|
215
283
|
end
|
|
216
|
-
|
|
284
|
+
|
|
217
285
|
it 'should accept to be the only code in the project' do
|
|
218
286
|
rm 'src/main/java/Main.java'
|
|
219
287
|
define('foo')
|
|
220
288
|
classpath_sources.should include('src/test/java')
|
|
221
289
|
end
|
|
222
290
|
end
|
|
223
|
-
|
|
291
|
+
|
|
224
292
|
describe 'main resources' do
|
|
225
293
|
it_should_behave_like 'source'
|
|
226
|
-
|
|
294
|
+
|
|
227
295
|
before do
|
|
228
296
|
write 'src/main/resources/config.xml'
|
|
229
297
|
end
|
|
230
|
-
|
|
298
|
+
|
|
231
299
|
it 'should accept to come from the default directory' do
|
|
232
300
|
define('foo')
|
|
233
301
|
classpath_sources.should include('src/main/resources')
|
|
234
302
|
end
|
|
235
|
-
|
|
303
|
+
|
|
236
304
|
it 'should share a classpath entry if it comes from a directory with code' do
|
|
237
305
|
write 'src/main/java/config.properties'
|
|
238
306
|
define('foo') { resources.from('src/main/java').exclude('**/*.java') }
|
|
239
307
|
classpath_sources.select { |path| path == 'src/main/java'}.length.should == 1
|
|
240
308
|
end
|
|
241
|
-
|
|
309
|
+
|
|
242
310
|
it 'should go to the default target directory' do
|
|
243
311
|
define('foo')
|
|
244
312
|
classpath_specific_output('src/main/resources').should == 'target/resources'
|
|
245
313
|
end
|
|
246
314
|
end
|
|
247
|
-
|
|
315
|
+
|
|
248
316
|
describe 'test resources' do
|
|
249
317
|
it_should_behave_like 'source'
|
|
250
|
-
|
|
318
|
+
|
|
251
319
|
before do
|
|
252
320
|
write 'src/test/resources/config-test.xml'
|
|
253
321
|
end
|
|
254
|
-
|
|
322
|
+
|
|
255
323
|
it 'should accept to come from the default directory' do
|
|
256
324
|
define('foo')
|
|
257
325
|
classpath_sources.should include('src/test/resources')
|
|
258
326
|
end
|
|
259
|
-
|
|
327
|
+
|
|
260
328
|
it 'should share a classpath entry if it comes from a directory with code' do
|
|
261
329
|
write 'src/test/java/config-test.properties'
|
|
262
330
|
define('foo') { test.resources.from('src/test/java').exclude('**/*.java') }
|
|
263
331
|
classpath_sources.select { |path| path == 'src/test/java'}.length.should == 1
|
|
264
332
|
end
|
|
265
|
-
|
|
333
|
+
|
|
266
334
|
it 'should go to the default target directory' do
|
|
267
335
|
define('foo')
|
|
268
336
|
classpath_specific_output('src/test/resources').should == 'target/test/resources'
|
|
269
337
|
end
|
|
270
338
|
end
|
|
271
339
|
end
|
|
272
|
-
|
|
340
|
+
|
|
273
341
|
describe 'project depending on another project' do
|
|
274
342
|
it 'should have the underlying project in its classpath' do
|
|
275
343
|
mkdir 'foo'
|
|
@@ -285,27 +353,149 @@ describe Buildr::Eclipse do
|
|
|
285
353
|
end
|
|
286
354
|
end
|
|
287
355
|
end
|
|
288
|
-
|
|
356
|
+
|
|
357
|
+
describe 'local dependency' do
|
|
358
|
+
before do
|
|
359
|
+
write 'lib/some-local.jar'
|
|
360
|
+
define('foo') { compile.using(:javac).with(_('lib/some-local.jar')) }
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
it 'should have a lib artifact reference in the .classpath file' do
|
|
364
|
+
classpath_xml_elements.collect("classpathentry[@kind='lib']") { |n| n.attributes['path'] }.
|
|
365
|
+
should include(File.expand_path 'lib/some-local.jar')
|
|
366
|
+
end
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
describe 'generated .classes' do
|
|
370
|
+
before do
|
|
371
|
+
write 'lib/some.class'
|
|
372
|
+
define('foo') { compile.using(:javac).with(_('lib')) }
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
it 'should have src reference in the .classpath file' do
|
|
376
|
+
classpath_xml_elements.collect("classpathentry[@kind='src']") { |n| n.attributes['path'] }.
|
|
377
|
+
should include('lib')
|
|
378
|
+
end
|
|
379
|
+
end
|
|
380
|
+
|
|
289
381
|
describe 'maven2 artifact dependency' do
|
|
290
382
|
before do
|
|
291
383
|
define('foo') { compile.using(:javac).with('com.example:library:jar:2.0') }
|
|
292
384
|
artifact('com.example:library:jar:2.0') { |task| write task.name }
|
|
293
385
|
task('eclipse').invoke
|
|
294
386
|
end
|
|
295
|
-
|
|
387
|
+
|
|
296
388
|
it 'should have a reference in the .classpath file relative to the local M2 repo' do
|
|
297
389
|
classpath_xml_elements.collect("classpathentry[@kind='var']") { |n| n.attributes['path'] }.
|
|
298
390
|
should include('M2_REPO/com/example/library/2.0/library-2.0.jar')
|
|
299
391
|
end
|
|
300
|
-
|
|
392
|
+
|
|
301
393
|
it 'should be downloaded' do
|
|
302
394
|
file(artifact('com.example:library:jar:2.0').name).should exist
|
|
303
395
|
end
|
|
304
|
-
|
|
396
|
+
|
|
305
397
|
it 'should have a source artifact reference in the .classpath file' do
|
|
306
398
|
sourcepath_for_path('M2_REPO/com/example/library/2.0/library-2.0.jar').
|
|
307
399
|
should == ['M2_REPO/com/example/library/2.0/library-2.0-sources.jar']
|
|
308
400
|
end
|
|
309
401
|
end
|
|
310
|
-
|
|
402
|
+
|
|
403
|
+
describe 'maven2 repository variable' do
|
|
404
|
+
it 'should be configurable' do
|
|
405
|
+
define('foo') do
|
|
406
|
+
eclipse.options.m2_repo_var = 'PROJ_REPO'
|
|
407
|
+
compile.using(:javac).with('com.example:library:jar:2.0')
|
|
408
|
+
end
|
|
409
|
+
artifact('com.example:library:jar:2.0') { |task| write task.name }
|
|
410
|
+
|
|
411
|
+
task('eclipse').invoke
|
|
412
|
+
classpath_xml_elements.collect("classpathentry[@kind='var']") { |n| n.attributes['path'] }.
|
|
413
|
+
should include('PROJ_REPO/com/example/library/2.0/library-2.0.jar')
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
it 'should pick the parent value by default' do
|
|
417
|
+
define('foo') do
|
|
418
|
+
eclipse.options.m2_repo_var = 'FOO_REPO'
|
|
419
|
+
define('bar')
|
|
420
|
+
|
|
421
|
+
define('bar2') do
|
|
422
|
+
eclipse.options.m2_repo_var = 'BAR2_REPO'
|
|
423
|
+
end
|
|
424
|
+
end
|
|
425
|
+
project('foo:bar').eclipse.options.m2_repo_var.should eql('FOO_REPO')
|
|
426
|
+
project('foo:bar2').eclipse.options.m2_repo_var.should eql('BAR2_REPO')
|
|
427
|
+
end
|
|
428
|
+
end
|
|
429
|
+
|
|
430
|
+
describe 'natures variable' do
|
|
431
|
+
it 'should be configurable' do
|
|
432
|
+
define('foo') do
|
|
433
|
+
eclipse.natures = 'dummyNature'
|
|
434
|
+
compile.using(:javac).with('com.example:library:jar:2.0')
|
|
435
|
+
end
|
|
436
|
+
artifact('com.example:library:jar:2.0') { |task| write task.name }
|
|
437
|
+
project_natures.should include('dummyNature')
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
it 'should pick the parent value by default' do
|
|
441
|
+
define('foo') do
|
|
442
|
+
eclipse.natures = 'foo_nature'
|
|
443
|
+
define('bar')
|
|
444
|
+
|
|
445
|
+
define('bar2') do
|
|
446
|
+
eclipse.natures = 'bar2_nature'
|
|
447
|
+
end
|
|
448
|
+
end
|
|
449
|
+
project('foo:bar').eclipse.natures.should include('foo_nature')
|
|
450
|
+
project('foo:bar2').eclipse.natures.should include('bar2_nature')
|
|
451
|
+
end
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
describe 'builders variable' do
|
|
455
|
+
it 'should be configurable' do
|
|
456
|
+
define('foo') do
|
|
457
|
+
eclipse.builders 'dummyBuilder'
|
|
458
|
+
compile.using(:javac).with('com.example:library:jar:2.0')
|
|
459
|
+
end
|
|
460
|
+
artifact('com.example:library:jar:2.0') { |task| write task.name }
|
|
461
|
+
build_commands.should include('dummyBuilder')
|
|
462
|
+
end
|
|
463
|
+
|
|
464
|
+
it 'should pick the parent value by default' do
|
|
465
|
+
define('foo') do
|
|
466
|
+
eclipse.builders = 'foo_builder'
|
|
467
|
+
define('bar')
|
|
468
|
+
|
|
469
|
+
define('bar2') do
|
|
470
|
+
eclipse.builders = 'bar2_builder'
|
|
471
|
+
end
|
|
472
|
+
end
|
|
473
|
+
project('foo:bar').eclipse.builders.should include('foo_builder')
|
|
474
|
+
project('foo:bar2').eclipse.builders.should include('bar2_builder')
|
|
475
|
+
end
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
describe 'classpath_containers variable' do
|
|
479
|
+
it 'should be configurable' do
|
|
480
|
+
define('foo') do
|
|
481
|
+
eclipse.classpath_containers = 'myOlGoodContainer'
|
|
482
|
+
compile.using(:javac).with('com.example:library:jar:2.0')
|
|
483
|
+
end
|
|
484
|
+
artifact('com.example:library:jar:2.0') { |task| write task.name }
|
|
485
|
+
classpath_containers.should include('myOlGoodContainer')
|
|
486
|
+
end
|
|
487
|
+
|
|
488
|
+
it 'should pick the parent value by default' do
|
|
489
|
+
define('foo') do
|
|
490
|
+
eclipse.classpath_containers = 'foo_classpath_containers'
|
|
491
|
+
define('bar')
|
|
492
|
+
|
|
493
|
+
define('bar2') do
|
|
494
|
+
eclipse.classpath_containers = 'bar2_classpath_containers'
|
|
495
|
+
end
|
|
496
|
+
end
|
|
497
|
+
project('foo:bar').eclipse.classpath_containers.should include('foo_classpath_containers')
|
|
498
|
+
project('foo:bar2').eclipse.classpath_containers.should include('bar2_classpath_containers')
|
|
499
|
+
end
|
|
500
|
+
end
|
|
311
501
|
end
|