buildr 1.2.5 → 1.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +20 -0
- data/Rakefile +32 -4
- data/lib/buildr.rb +1 -1
- data/lib/buildr/jetty.rb +9 -3
- data/lib/buildr/jetty/JettyWrapper$BuildrHandler.class +0 -0
- data/lib/buildr/jetty/JettyWrapper.class +0 -0
- data/lib/buildr/jetty/JettyWrapper.java +3 -0
- data/lib/buildr/scala.rb +368 -0
- data/lib/core/application.rb +7 -5
- data/lib/core/build.rb +10 -2
- data/lib/core/common.rb +41 -18
- data/lib/core/rake_ext.rb +17 -0
- data/lib/java/artifact.rb +23 -0
- data/lib/java/compile.rb +3 -3
- data/lib/java/java.rb +4 -7
- data/lib/java/packaging.rb +65 -9
- data/lib/java/pom.rb +0 -2
- data/lib/java/test.rb +10 -4
- data/lib/tasks/tar.rb +59 -84
- data/lib/tasks/zip.rb +49 -36
- metadata +5 -4
data/lib/core/application.rb
CHANGED
@@ -20,16 +20,16 @@ module Buildr
|
|
20
20
|
"Do not search parent directories for the buildfile."],
|
21
21
|
['--quiet', '-q', GetoptLong::NO_ARGUMENT,
|
22
22
|
"Do not log messages to standard output."],
|
23
|
-
['--buildfile', '-f', GetoptLong::
|
23
|
+
['--buildfile', '-f', GetoptLong::REQUIRED_ARGUMENT,
|
24
24
|
"Use FILE as the buildfile."],
|
25
25
|
['--require', '-r', GetoptLong::REQUIRED_ARGUMENT,
|
26
26
|
"Require MODULE before executing buildfile."],
|
27
27
|
['--trace', '-t', GetoptLong::NO_ARGUMENT,
|
28
28
|
"Turn on invoke/execute tracing, enable full backtrace."],
|
29
|
-
['--verbose', '-v', GetoptLong::NO_ARGUMENT,
|
30
|
-
"Log message to standard output (default)."],
|
31
29
|
['--version', '-V', GetoptLong::NO_ARGUMENT,
|
32
30
|
"Display the program version."],
|
31
|
+
['--environment', '-e', GetoptLong::REQUIRED_ARGUMENT,
|
32
|
+
"Environment name (e.g. development, test, production)."],
|
33
33
|
['--freeze', "-F", GetoptLong::NO_ARGUMENT,
|
34
34
|
"Freezes the Buildfile so it always uses Buildr version #{Buildr::VERSION}"],
|
35
35
|
['--unfreeze', "-U", GetoptLong::NO_ARGUMENT,
|
@@ -66,6 +66,8 @@ module Buildr
|
|
66
66
|
when '--version'
|
67
67
|
puts "Buildr, version #{Buildr::VERSION}"
|
68
68
|
exit
|
69
|
+
when '--environment'
|
70
|
+
ENV['BUILDR_ENV'] = value
|
69
71
|
when "--freeze"
|
70
72
|
find_buildfile
|
71
73
|
puts "Freezing the Buildfile so it always uses Buildr version #{Buildr::VERSION}"
|
@@ -85,7 +87,7 @@ module Buildr
|
|
85
87
|
exit
|
86
88
|
when "--require"
|
87
89
|
@requires << value
|
88
|
-
when "--nosearch", "--quiet", "--trace"
|
90
|
+
when "--nosearch", "--quiet", "--trace"
|
89
91
|
super
|
90
92
|
end
|
91
93
|
end
|
@@ -109,7 +111,7 @@ module Buildr
|
|
109
111
|
|
110
112
|
def load_buildfile()
|
111
113
|
@requires.each { |name| require name }
|
112
|
-
puts "(in #{Dir.pwd})"
|
114
|
+
puts Buildr.environment ? "(in #{Dir.pwd}, #{Buildr.environment})" : "(in #{Dir.pwd})"
|
113
115
|
load File.expand_path(@rakefile) if @rakefile != ''
|
114
116
|
load_imports
|
115
117
|
end
|
data/lib/core/build.rb
CHANGED
@@ -113,7 +113,9 @@ module Buildr
|
|
113
113
|
# Make a release.
|
114
114
|
def make()
|
115
115
|
check
|
116
|
-
|
116
|
+
options = ['--buildfile', filename, 'DEBUG=no']
|
117
|
+
options << '--environment' << Buildr.environment unless Buildr.environment.to_s.empty?
|
118
|
+
version = with_next_version { |filename, version| sh "#{command} clean upload #{option.join(' ')}" }
|
117
119
|
tag version
|
118
120
|
commit version + "-SNAPSHOT"
|
119
121
|
end
|
@@ -130,6 +132,7 @@ module Buildr
|
|
130
132
|
# Check that we don't have any local changes in the working copy. Fails if it finds anything
|
131
133
|
# in the working copy that is not checked into source control.
|
132
134
|
def check()
|
135
|
+
fail "SVN URL must end with 'trunk' or 'branches/...'" unless svn_url =~ /(trunk)|(branches.*)$/
|
133
136
|
# Status check reveals modified file, but also SVN externals which we can safely ignore.
|
134
137
|
status = svn("status", "--ignore-externals").reject { |line| line =~ /^X\s/ }
|
135
138
|
fail "Uncommitted SVN files violate the First Principle Of Release!\n#{status}" unless
|
@@ -201,7 +204,7 @@ module Buildr
|
|
201
204
|
#
|
202
205
|
# Tags the current working copy with the release version number.
|
203
206
|
def tag(version)
|
204
|
-
url =
|
207
|
+
url = svn_url.sub(/(trunk$)|(branches.*)$/, "tags/#{version}")
|
205
208
|
svn "remove", url, "-m", "Removing old copy" rescue nil
|
206
209
|
svn "copy", Dir.pwd, url, "-m", "Release #{version}"
|
207
210
|
end
|
@@ -226,6 +229,11 @@ module Buildr
|
|
226
229
|
puts cmd if verbose
|
227
230
|
`#{cmd}`.tap { fail "SVN command failed" unless $?.exitstatus == 0 }
|
228
231
|
end
|
232
|
+
|
233
|
+
# Return the current SVN URL
|
234
|
+
def svn_url
|
235
|
+
url = svn("info").scan(/URL: (.*)/)[0][0]
|
236
|
+
end
|
229
237
|
end
|
230
238
|
|
231
239
|
end
|
data/lib/core/common.rb
CHANGED
@@ -169,6 +169,25 @@ module Buildr
|
|
169
169
|
Buildr.options
|
170
170
|
end
|
171
171
|
|
172
|
+
# :call-seq:
|
173
|
+
# environment() => string or nil
|
174
|
+
#
|
175
|
+
# Returns the environment name. Use this when your build depends on the environment,
|
176
|
+
# for example, development, production, etc. The value comes from the BUILDR_ENV environment variable.
|
177
|
+
#
|
178
|
+
# For example:
|
179
|
+
# buildr -e production
|
180
|
+
def environment()
|
181
|
+
ENV['BUILDR_ENV']
|
182
|
+
end
|
183
|
+
|
184
|
+
# :call-seq:
|
185
|
+
# environment(env)
|
186
|
+
#
|
187
|
+
# Sets the environment name.
|
188
|
+
def environment=(env)
|
189
|
+
ENV['BUILDR_ENV'] = env
|
190
|
+
end
|
172
191
|
|
173
192
|
# :call-seq:
|
174
193
|
# struct(hash) => Struct
|
@@ -334,7 +353,7 @@ module Buildr
|
|
334
353
|
# For example:
|
335
354
|
# filter.from("src").into("target").using("build"=>Time.now)
|
336
355
|
def into(dir)
|
337
|
-
@target = file(File.expand_path(dir.to_s))
|
356
|
+
@target = file(File.expand_path(dir.to_s)) { |task| run if target == task && !sources.empty? }
|
338
357
|
self
|
339
358
|
end
|
340
359
|
|
@@ -417,7 +436,7 @@ module Buildr
|
|
417
436
|
|
418
437
|
copy_map = sources.flatten.map(&:to_s).inject({}) do |map, source|
|
419
438
|
base = Pathname.new(source)
|
420
|
-
files = FileList
|
439
|
+
files = FileList.recursive(source).
|
421
440
|
map { |file| Pathname.new(file).relative_path_from(base).to_s }.
|
422
441
|
select { |file| @include.empty? || @include.any? { |pattern| File.fnmatch(pattern, file) } }.
|
423
442
|
reject { |file| @exclude.any? { |pattern| File.fnmatch(pattern, file) } }
|
@@ -434,24 +453,28 @@ module Buildr
|
|
434
453
|
mkpath target.to_s
|
435
454
|
copy_map.each do |path, source|
|
436
455
|
dest = File.expand_path(path, target.to_s)
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
456
|
+
if File.directory?(source)
|
457
|
+
mkpath dest
|
458
|
+
else
|
459
|
+
mkpath File.dirname(dest)
|
460
|
+
case mapping
|
461
|
+
when Proc, Method # Call on input, accept output.
|
462
|
+
mapped = mapping.call(path, File.open(source, "rb") { |file| file.read })
|
463
|
+
File.open(dest, "wb") { |file| file.write mapped }
|
464
|
+
when Hash # Map ${key} to value
|
465
|
+
content = File.open(source, "rb") { |file| file.read }
|
466
|
+
if Symbol === @mapper
|
467
|
+
mapped = send("#{@mapper}_mapper", content) { |key| mapping[key] }
|
468
|
+
else
|
469
|
+
mapped = regexp_mapper(content) { |key| mapping[key] }
|
470
|
+
end
|
471
|
+
#gsub(/\$\{[^}]*\}/) { |str| mapping[str[2..-2]] || str }
|
472
|
+
File.open(dest, "wb") { |file| file.write mapped }
|
473
|
+
when nil # No mapping.
|
474
|
+
cp source, dest
|
446
475
|
else
|
447
|
-
|
476
|
+
fail "Filter can be a hash (key=>value), or a proc/method; I don't understand #{mapping}"
|
448
477
|
end
|
449
|
-
#gsub(/\$\{[^}]*\}/) { |str| mapping[str[2..-2]] || str }
|
450
|
-
File.open(dest, "wb") { |file| file.write mapped }
|
451
|
-
when nil # No mapping.
|
452
|
-
cp source, dest
|
453
|
-
else
|
454
|
-
fail "Filter can be a hash (key=>value), or a proc/method; I don't understand #{mapping}"
|
455
478
|
end
|
456
479
|
end
|
457
480
|
touch target.to_s
|
data/lib/core/rake_ext.rb
CHANGED
@@ -17,6 +17,16 @@ module Rake #:nodoc
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
def execute
|
21
|
+
if application.options.dryrun
|
22
|
+
puts "** Execute (dry run) #{name}"
|
23
|
+
return
|
24
|
+
end
|
25
|
+
puts "** Execute #{name}" if application.options.trace
|
26
|
+
application.enhance_with_matching_rule(name) if @actions.empty?
|
27
|
+
@actions.each { |act| result = act.call(self) }
|
28
|
+
end
|
29
|
+
|
20
30
|
def invoke_prerequisites()
|
21
31
|
prerequisites.each { |n| application[n, @scope].invoke }
|
22
32
|
end
|
@@ -61,4 +71,11 @@ module Rake #:nodoc
|
|
61
71
|
|
62
72
|
end
|
63
73
|
|
74
|
+
class FileList
|
75
|
+
class << self
|
76
|
+
def recursive(*dirs)
|
77
|
+
FileList[dirs.map { |dir| File.join(dir, "/**/{*,.*}") }].reject { |file| File.basename(file) =~ /^[.]{1,2}$/ }
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
64
81
|
end
|
data/lib/java/artifact.rb
CHANGED
@@ -546,6 +546,29 @@ module Buildr
|
|
546
546
|
end
|
547
547
|
end
|
548
548
|
|
549
|
+
def transitive(*specs)
|
550
|
+
specs.flatten.inject([]) do |set, spec|
|
551
|
+
case spec
|
552
|
+
when /([^:]+:){2,4}/ # A spec as opposed to a file name.
|
553
|
+
artifact = artifact(spec)
|
554
|
+
set |= [artifact] unless artifact.type == :pom
|
555
|
+
set |= POM.load(artifact.pom).dependencies.map { |spec| artifact(spec) }
|
556
|
+
when Hash
|
557
|
+
set |= [transitive(spec)]
|
558
|
+
when String # Must always expand path.
|
559
|
+
set |= transitive(file(File.expand_path(spec)))
|
560
|
+
when Project
|
561
|
+
set |= transitive(spec.packages)
|
562
|
+
when Rake::Task
|
563
|
+
set |= spec.respond_to?(:to_spec) ? transitive(spec.to_spec) : [spec]
|
564
|
+
when Struct
|
565
|
+
set |= transitive(spec.values)
|
566
|
+
else
|
567
|
+
fail "Invalid artifact specification in: #{specs.to_s}"
|
568
|
+
end
|
569
|
+
end
|
570
|
+
end
|
571
|
+
|
549
572
|
# :call-seq:
|
550
573
|
# groups(ids, :under=>group_name, :version=>number) => artifacts
|
551
574
|
#
|
data/lib/java/compile.rb
CHANGED
@@ -229,10 +229,10 @@ module Buildr
|
|
229
229
|
target_dir = target.to_s
|
230
230
|
if File.directory?(source)
|
231
231
|
base = Pathname.new(source)
|
232
|
-
FileList["#{source}/**/*.java"].
|
233
|
-
each { |file| map[file] = File.join(target_dir, Pathname.new(file).relative_path_from(base).to_s.ext(
|
232
|
+
FileList["#{source}/**/*.java"].reject { |file| File.directory?(file) }.
|
233
|
+
each { |file| map[file] = File.join(target_dir, Pathname.new(file).relative_path_from(base).to_s.ext('.class')) }
|
234
234
|
else
|
235
|
-
map[source] = File.join(target_dir, File.basename(source).ext(
|
235
|
+
map[source] = File.join(target_dir, File.basename(source).ext('.class'))
|
236
236
|
end
|
237
237
|
map
|
238
238
|
end
|
data/lib/java/java.rb
CHANGED
@@ -232,13 +232,10 @@ module Buildr
|
|
232
232
|
cmd_args << "-#{key}"
|
233
233
|
when false
|
234
234
|
cmd_args << "-no#{key}"
|
235
|
-
when Array
|
236
|
-
cmd_args << "-#{key}"
|
237
|
-
cmd_args += value.map(&:to_s)
|
238
235
|
when Hash
|
239
236
|
value.each { |k,v| cmd_args << "-#{key}" << k.to_s << v.to_s }
|
240
237
|
else
|
241
|
-
cmd_args
|
238
|
+
cmd_args += Array(value).map { |item| ["-#{key}", item.to_s] }.flatten
|
242
239
|
end
|
243
240
|
end
|
244
241
|
[:sourcepath, :classpath].each do |option|
|
@@ -378,7 +375,7 @@ module Buildr
|
|
378
375
|
#
|
379
376
|
# Returns the Java arguments.
|
380
377
|
def java_args()
|
381
|
-
@java_args ||= (ENV["
|
378
|
+
@java_args ||= (ENV["JAVA_OPTS"] || ENV["JAVA_OPTIONS"] || "").split(" ")
|
382
379
|
end
|
383
380
|
|
384
381
|
# :call-seq:
|
@@ -386,12 +383,12 @@ module Buildr
|
|
386
383
|
#
|
387
384
|
# Sets the Java arguments. These arguments are used when creating a JVM, including for use with RJB
|
388
385
|
# for most tasks (e.g. Ant, compile) and when forking a separate JVM (e.g. JUnit tests). You can also
|
389
|
-
# use the
|
386
|
+
# use the JAVA_OPTS environment variable.
|
390
387
|
#
|
391
388
|
# For example:
|
392
389
|
# options.java_args = "-verbose"
|
393
390
|
# Or:
|
394
|
-
# $ set
|
391
|
+
# $ set JAVA_OPTS = "-Xms1g"
|
395
392
|
# $ buildr
|
396
393
|
def java_args=(args)
|
397
394
|
args = args.split if String === args
|
data/lib/java/packaging.rb
CHANGED
@@ -170,10 +170,54 @@ module Buildr
|
|
170
170
|
|
171
171
|
end
|
172
172
|
|
173
|
+
# Extends the JarTask to create an AAR file (Axis2 service archive).
|
174
|
+
#
|
175
|
+
# Supports all the same options as JarTask, with the addition of :wsdls, :services_xml and :libs.
|
176
|
+
#
|
177
|
+
# * :wsdls -- WSDL files to include (under META-INF). By default packaging will include all WSDL
|
178
|
+
# files found under src/main/axis2.
|
179
|
+
# * :services_xml -- Location of services.xml file (included under META-INF). By default packaging
|
180
|
+
# takes this from src/main/axis2/services.xml. Use a different path if you genereate the services.xml
|
181
|
+
# file as part of the build.
|
182
|
+
# * :libs -- Array of files, tasks, artifact specifications, etc that will be added to the /lib directory.
|
183
|
+
#
|
184
|
+
# For example:
|
185
|
+
# package(:aar).with(:libs=>"log4j:log4j:jar:1.1")
|
186
|
+
#
|
187
|
+
# filter.from("src/main/axis2").into("target").include("services.xml", "*.wsdl").using("http_port"=>"8080")
|
188
|
+
# package(:aar).wsdls.clear
|
189
|
+
# package(:aar).with(:services_xml=>_("target/services.xml"), :wsdls=>_("target/*.wsdl"))
|
190
|
+
class AarTask < JarTask
|
191
|
+
# Artifacts to include under /lib.
|
192
|
+
attr_accessor :libs
|
193
|
+
# WSDLs to include under META-INF (defaults to all WSDLs under src/main/axis2).
|
194
|
+
attr_accessor :wsdls
|
195
|
+
# Location of services.xml file (defaults to src/main/axis2/services.xml).
|
196
|
+
attr_accessor :services_xml
|
197
|
+
|
198
|
+
def initialize(*args) #:nodoc:
|
199
|
+
super
|
200
|
+
@libs = []
|
201
|
+
@wsdls = []
|
202
|
+
prepare do
|
203
|
+
path("META-INF").include @wsdls
|
204
|
+
path("META-INF").include @services_xml, :as=>["services.xml"] if @services_xml
|
205
|
+
path("lib").include Buildr.artifacts(@libs) unless @libs.nil? || @libs.empty?
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
def libs=(value) #:nodoc:
|
210
|
+
@libs = Buildr.artifacts(value)
|
211
|
+
end
|
212
|
+
|
213
|
+
def wsdls=(value) #:nodoc:
|
214
|
+
@wsdls |= Array(value)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
173
218
|
end
|
174
219
|
end
|
175
220
|
|
176
|
-
|
177
221
|
Project.on_define do |project|
|
178
222
|
# Need to run buildr before package, since package is often used as a dependency by tasks that
|
179
223
|
# expect build to happen.
|
@@ -364,6 +408,7 @@ module Buildr
|
|
364
408
|
jar.include options[:include]
|
365
409
|
else
|
366
410
|
jar.with compile.target unless compile.sources.empty?
|
411
|
+
jar.with resources.target unless resources.sources.empty?
|
367
412
|
end
|
368
413
|
end
|
369
414
|
else
|
@@ -389,6 +434,7 @@ module Buildr
|
|
389
434
|
war.with :classes=>options[:classes]
|
390
435
|
else
|
391
436
|
war.with :classes=>compile.target unless compile.sources.empty?
|
437
|
+
war.with :classes=>resources.target unless resources.sources.empty?
|
392
438
|
end
|
393
439
|
if options.has_key?(:libs)
|
394
440
|
warn_deprecated "The :libs option in package(:war) is deprecated, please use package(:war).with(:libs=>) instead."
|
@@ -410,6 +456,21 @@ module Buildr
|
|
410
456
|
file(file_name)
|
411
457
|
end
|
412
458
|
|
459
|
+
def package_as_aar(file_name, options) #:nodoc:
|
460
|
+
rake_check_options options, *PACKAGE_OPTIONS
|
461
|
+
unless Rake::Task.task_defined?(file_name)
|
462
|
+
Java::Packaging::AarTask.define_task(file_name).tap do |aar|
|
463
|
+
aar.with :manifest=>manifest, :meta_inf=>meta_inf
|
464
|
+
aar.with :wsdls=>path_to("src/main/axis2/*.wsdl")
|
465
|
+
aar.with :services_xml=>path_to("src/main/axis2/services.xml")
|
466
|
+
aar.with compile.target unless compile.sources.empty?
|
467
|
+
aar.with resources.target unless resources.sources.empty?
|
468
|
+
aar.with :libs=>compile.classpath
|
469
|
+
end
|
470
|
+
end
|
471
|
+
file(file_name)
|
472
|
+
end
|
473
|
+
|
413
474
|
def package_as_zip(file_name, options) #:nodoc:
|
414
475
|
unless Rake::Task.task_defined?(file_name)
|
415
476
|
rake_check_options options, *PACKAGE_OPTIONS + [:include]
|
@@ -426,18 +487,13 @@ module Buildr
|
|
426
487
|
end
|
427
488
|
|
428
489
|
def package_as_tar(file_name, options) #:nodoc:
|
490
|
+
rake_check_options options, *PACKAGE_OPTIONS
|
429
491
|
unless Rake::Task.task_defined?(file_name)
|
430
|
-
|
431
|
-
end
|
432
|
-
file(file_name)
|
433
|
-
end
|
434
|
-
|
435
|
-
def package_as_tgz(file_name, options) #:nodoc:
|
436
|
-
unless Rake::Task.task_defined?(file_name)
|
437
|
-
TarballTask.define_task(file_name)
|
492
|
+
TarTask.define_task(file_name)
|
438
493
|
end
|
439
494
|
file(file_name)
|
440
495
|
end
|
496
|
+
alias :package_as_tgz :package_as_tar
|
441
497
|
|
442
498
|
def package_as_sources(file_name, options) #:nodoc:
|
443
499
|
rake_check_options options, *PACKAGE_OPTIONS
|
data/lib/java/pom.rb
CHANGED
data/lib/java/test.rb
CHANGED
@@ -142,7 +142,7 @@ module Buildr
|
|
142
142
|
TEST_FRAMEWORKS = []
|
143
143
|
|
144
144
|
# Default options already set on each test task.
|
145
|
-
DEFAULT_OPTIONS = { :fail_on_failure=>true, :fork=>:once, :properties=>{} }
|
145
|
+
DEFAULT_OPTIONS = { :fail_on_failure=>true, :fork=>:once, :properties=>{}, :environment=>{} }
|
146
146
|
|
147
147
|
# JMock version..
|
148
148
|
JMOCK_VERSION = "1.2.0"
|
@@ -258,6 +258,7 @@ module Buildr
|
|
258
258
|
# * :fork -- Fork test cases (JUnit only).
|
259
259
|
# * :java_args -- Java arguments when forking a new JVM.
|
260
260
|
# * :properties -- System properties.
|
261
|
+
# * :environment -- Environment variables.
|
261
262
|
#
|
262
263
|
# The :fork option takes the following values:
|
263
264
|
# * :once -- Fork one JVM for each project (default).
|
@@ -310,7 +311,7 @@ module Buildr
|
|
310
311
|
patterns = self.class.const_get("#{framework.to_s.upcase}_TESTS_PATTERN").to_a
|
311
312
|
FileList[patterns.map { |pattern| "#{base}/**/#{pattern}.class" }].
|
312
313
|
map { |file| Pathname.new(file).relative_path_from(base).to_s.ext("").gsub(File::SEPARATOR, ".") }.
|
313
|
-
select { |name| include?(name) }.
|
314
|
+
select { |name| include?(name) }.reject { |name| name =~ /\$/ }.sort
|
314
315
|
end
|
315
316
|
|
316
317
|
# List of failed test classes. Set after running the tests.
|
@@ -369,7 +370,8 @@ module Buildr
|
|
369
370
|
:classes => classes,
|
370
371
|
:classpath => @classpath + [compile.target],
|
371
372
|
:properties => { "baseDir" => compile.target.to_s }.merge(options[:properties] || {}),
|
372
|
-
:
|
373
|
+
:environment=> options[:environment] || {},
|
374
|
+
:java_args => options[:java_args] || Buildr.options.java_args)
|
373
375
|
unless @failed_tests.empty?
|
374
376
|
warn "The following tests failed:\n#{@failed_tests.join("\n")}" if verbose
|
375
377
|
fail "Tests failed!"
|
@@ -483,9 +485,13 @@ module Buildr
|
|
483
485
|
else
|
484
486
|
fail "Option fork must be :once, :each or false."
|
485
487
|
end
|
486
|
-
ant.junit forking do
|
488
|
+
ant.junit forking.merge(:clonevm=>true) do
|
487
489
|
ant.classpath :path=>args[:classpath].map(&:to_s).each { |path| file(path).invoke }.join(File::PATH_SEPARATOR)
|
488
490
|
args[:properties].each { |key, value| ant.sysproperty :key=>key, :value=>value }
|
491
|
+
args[:environment].each { |key, value| ant.env :key=>key, :value=>value }
|
492
|
+
java_args = args[:java_args]
|
493
|
+
java_args = java_args.split(" ") if String === java_args
|
494
|
+
java_args.each { |value| ant.jvmarg :value=>value } if java_args
|
489
495
|
ant.formatter :type=>"plain"
|
490
496
|
ant.formatter :type=>"xml"
|
491
497
|
ant.formatter :type=>"plain", :usefile=>false # log test
|