buildr 1.3.5-java → 1.4.0-java
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +153 -8
- data/README.rdoc +1 -1
- data/addon/buildr/antlr.rb +5 -5
- data/addon/buildr/drb.rb +18 -18
- data/addon/buildr/hibernate.rb +18 -14
- data/addon/buildr/javacc.rb +4 -4
- data/addon/buildr/jetty.rb +5 -5
- data/addon/buildr/nailgun.rb +23 -23
- data/addon/buildr/openjpa.rb +1 -1
- data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
- data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
- data/addon/buildr/protobuf.rb +75 -0
- data/addon/buildr/xmlbeans.rb +5 -5
- data/buildr.buildfile +2 -2
- data/buildr.gemspec +8 -7
- data/doc/_layouts/default.html +2 -2
- data/doc/artifacts.textile +4 -4
- data/doc/building.textile +35 -3
- data/doc/contributing.textile +5 -0
- data/doc/download.textile +16 -5
- data/doc/extending.textile +38 -12
- data/doc/installing.textile +6 -5
- data/doc/languages.textile +182 -42
- data/doc/more_stuff.textile +2 -2
- data/doc/packaging.textile +14 -15
- data/doc/projects.textile +7 -2
- data/doc/quick_start.textile +4 -4
- data/doc/scripts/buildr-git.rb +63 -63
- data/doc/scripts/gitflow.rb +21 -21
- data/doc/settings_profiles.textile +9 -2
- data/doc/testing.textile +16 -5
- data/etc/KEYS +38 -0
- data/lib/buildr.rb +1 -1
- data/lib/buildr/core.rb +1 -0
- data/lib/buildr/core/application.rb +33 -27
- data/lib/buildr/core/build.rb +41 -28
- data/lib/buildr/core/cc.rb +172 -0
- data/lib/buildr/core/checks.rb +1 -1
- data/lib/buildr/core/common.rb +7 -6
- data/lib/buildr/core/compile.rb +7 -8
- data/lib/buildr/core/doc.rb +263 -0
- data/lib/buildr/core/environment.rb +6 -6
- data/lib/buildr/core/filter.rb +77 -35
- data/lib/buildr/core/generate.rb +7 -7
- data/lib/buildr/core/help.rb +1 -1
- data/lib/buildr/core/osx.rb +6 -6
- data/lib/buildr/core/progressbar.rb +4 -4
- data/lib/buildr/core/project.rb +144 -36
- data/lib/buildr/core/shell.rb +34 -34
- data/lib/buildr/core/test.rb +89 -20
- data/lib/buildr/core/transports.rb +8 -7
- data/lib/buildr/core/util.rb +77 -23
- data/lib/buildr/groovy/bdd.rb +5 -5
- data/lib/buildr/groovy/compiler.rb +19 -15
- data/lib/buildr/groovy/shell.rb +6 -6
- data/lib/buildr/ide/eclipse.rb +148 -75
- data/lib/buildr/ide/eclipse/java.rb +3 -3
- data/lib/buildr/ide/eclipse/plugin.rb +8 -5
- data/lib/buildr/ide/eclipse/scala.rb +4 -2
- data/lib/buildr/ide/idea.rb +2 -2
- data/lib/buildr/ide/idea7x.rb +23 -4
- data/lib/buildr/java.rb +1 -0
- data/lib/buildr/java/ant.rb +4 -4
- data/lib/buildr/java/bdd.rb +51 -54
- data/lib/buildr/java/cobertura.rb +57 -35
- data/lib/buildr/java/commands.rb +14 -5
- data/lib/buildr/java/compiler.rb +3 -217
- data/lib/buildr/java/deprecated.rb +4 -4
- data/lib/buildr/java/doc.rb +70 -0
- data/lib/buildr/java/emma.rb +22 -22
- data/lib/buildr/java/jruby.rb +4 -4
- data/lib/buildr/java/jtestr_runner.rb.erb +27 -25
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +8 -3
- data/lib/buildr/java/packaging.rb +30 -29
- data/lib/buildr/java/pom.rb +4 -4
- data/lib/buildr/java/rjb.rb +6 -6
- data/lib/buildr/java/test_result.rb +61 -85
- data/lib/buildr/java/tests.rb +44 -27
- data/lib/buildr/java/version_requirement.rb +8 -8
- data/lib/buildr/packaging/archive.rb +55 -22
- data/lib/buildr/packaging/artifact.rb +75 -36
- data/lib/buildr/packaging/artifact_namespace.rb +90 -78
- data/lib/buildr/packaging/artifact_search.rb +5 -5
- data/lib/buildr/packaging/gems.rb +11 -7
- data/lib/buildr/packaging/package.rb +10 -7
- data/lib/buildr/packaging/tar.rb +14 -14
- data/lib/buildr/packaging/version_requirement.rb +30 -10
- data/lib/buildr/packaging/ziptask.rb +51 -13
- data/lib/buildr/scala.rb +1 -0
- data/lib/buildr/scala/bdd.rb +25 -20
- data/lib/buildr/scala/compiler.rb +87 -40
- data/lib/buildr/scala/doc.rb +106 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
- data/lib/buildr/scala/shell.rb +14 -9
- data/lib/buildr/scala/tests.rb +33 -26
- data/lib/buildr/shell.rb +33 -33
- data/rakelib/all-in-one.rake +113 -0
- data/rakelib/checks.rake +1 -1
- data/rakelib/doc.rake +7 -0
- data/rakelib/package.rake +1 -1
- data/rakelib/release.rake +9 -6
- data/rakelib/rspec.rake +26 -7
- data/rakelib/setup.rake +15 -3
- data/rakelib/stage.rake +18 -11
- data/spec/addon/drb_spec.rb +25 -25
- data/spec/core/application_spec.rb +111 -21
- data/spec/core/build_spec.rb +16 -15
- data/spec/core/cc_spec.rb +174 -0
- data/spec/core/checks_spec.rb +34 -34
- data/spec/core/common_spec.rb +51 -5
- data/spec/core/compile_spec.rb +89 -14
- data/spec/core/extension_spec.rb +127 -19
- data/spec/core/generate_spec.rb +2 -2
- data/spec/core/project_spec.rb +10 -10
- data/spec/core/test_spec.rb +144 -35
- data/spec/core/transport_spec.rb +8 -8
- data/spec/core/util_spec.rb +63 -5
- data/spec/groovy/bdd_spec.rb +5 -5
- data/spec/groovy/compiler_spec.rb +29 -18
- data/spec/ide/eclipse_spec.rb +185 -9
- data/spec/ide/idea7x_spec.rb +22 -10
- data/spec/java/ant_spec.rb +9 -5
- data/spec/java/bdd_spec.rb +29 -37
- data/spec/java/cobertura_spec.rb +12 -12
- data/spec/java/commands_spec.rb +34 -0
- data/spec/java/compiler_spec.rb +53 -53
- data/spec/java/emma_spec.rb +11 -11
- data/spec/java/java_spec.rb +10 -10
- data/spec/java/packaging_spec.rb +67 -20
- data/spec/java/test_coverage_helper.rb +18 -18
- data/spec/java/tests_spec.rb +13 -9
- data/spec/packaging/archive_spec.rb +187 -20
- data/spec/packaging/artifact_namespace_spec.rb +172 -83
- data/spec/packaging/artifact_spec.rb +83 -18
- data/spec/packaging/packaging_spec.rb +41 -14
- data/spec/sandbox.rb +23 -12
- data/spec/scala/bdd_spec.rb +13 -8
- data/spec/scala/compiler_spec.rb +18 -13
- data/spec/scala/scala.rb +3 -3
- data/spec/scala/tests_spec.rb +46 -24
- data/spec/spec_helpers.rb +28 -10
- data/spec/version_requirement_spec.rb +25 -11
- metadata +148 -132
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +0 -35
- data/rakelib/stage.rake~ +0 -213
data/lib/buildr/core/test.rb
CHANGED
@@ -49,7 +49,7 @@ module Buildr
|
|
49
49
|
end
|
50
50
|
|
51
51
|
# Adds a test framework to the list of supported frameworks.
|
52
|
-
#
|
52
|
+
#
|
53
53
|
# For example:
|
54
54
|
# Buildr::TestFramework << Buildr::JUnit
|
55
55
|
def add(framework)
|
@@ -126,7 +126,7 @@ module Buildr
|
|
126
126
|
end
|
127
127
|
|
128
128
|
end
|
129
|
-
|
129
|
+
|
130
130
|
end
|
131
131
|
|
132
132
|
|
@@ -176,6 +176,13 @@ module Buildr
|
|
176
176
|
# all sub-projects, but only invoke test on the local project.
|
177
177
|
Project.projects.each { |project| project.test.send :only_run, tests }
|
178
178
|
end
|
179
|
+
|
180
|
+
# Used by the test/integration rule to only run tests that failed the last time.
|
181
|
+
def only_run_failed() #:nodoc:
|
182
|
+
# Since the tests may reside in a sub-project, we need to set the include/exclude pattern on
|
183
|
+
# all sub-projects, but only invoke test on the local project.
|
184
|
+
Project.projects.each { |project| project.test.send :only_run_failed }
|
185
|
+
end
|
179
186
|
end
|
180
187
|
|
181
188
|
# Default options already set on each test task.
|
@@ -195,7 +202,12 @@ module Buildr
|
|
195
202
|
else
|
196
203
|
@options = OpenObject.new(default_options)
|
197
204
|
end
|
198
|
-
|
205
|
+
|
206
|
+
unless ENV["IGNORE_BUILDFILE"] =~ /(true)|(yes)/i
|
207
|
+
enhance [ application.buildfile.name ]
|
208
|
+
enhance application.buildfile.prerequisites
|
209
|
+
end
|
210
|
+
enhance do
|
199
211
|
run_tests if framework
|
200
212
|
end
|
201
213
|
end
|
@@ -203,18 +215,18 @@ module Buildr
|
|
203
215
|
# The dependencies used for running the tests. Includes the compiled files (compile.target)
|
204
216
|
# and their dependencies. Will also include anything you pass to #with, shared between the
|
205
217
|
# testing compile and run dependencies.
|
206
|
-
|
218
|
+
attr_accessor :dependencies
|
207
219
|
|
208
220
|
# *Deprecated*: Use dependencies instead.
|
209
221
|
def classpath
|
210
222
|
Buildr.application.deprecated 'Use dependencies instead.'
|
211
|
-
dependencies
|
223
|
+
@dependencies
|
212
224
|
end
|
213
225
|
|
214
226
|
# *Deprecated*: Use dependencies= instead.
|
215
227
|
def classpath=(artifacts)
|
216
228
|
Buildr.application.deprecated 'Use dependencies= instead.'
|
217
|
-
|
229
|
+
@dependencies = artifacts
|
218
230
|
end
|
219
231
|
|
220
232
|
def execute(args) #:nodoc:
|
@@ -226,7 +238,7 @@ module Buildr
|
|
226
238
|
begin
|
227
239
|
super
|
228
240
|
rescue RuntimeError
|
229
|
-
raise if options[:fail_on_failure]
|
241
|
+
raise if options[:fail_on_failure] && Buildr.options.test != :all
|
230
242
|
ensure
|
231
243
|
teardown.invoke
|
232
244
|
end
|
@@ -247,7 +259,7 @@ module Buildr
|
|
247
259
|
def compile(*sources, &block)
|
248
260
|
@project.task('test:compile').from(sources).enhance &block
|
249
261
|
end
|
250
|
-
|
262
|
+
|
251
263
|
# :call-seq:
|
252
264
|
# resources(*prereqs) => ResourcesTask
|
253
265
|
# resources(*prereqs) { |task| .. } => ResourcesTask
|
@@ -323,7 +335,7 @@ module Buildr
|
|
323
335
|
Buildr.application.deprecated "Please replace with using(:#{name}=>true)"
|
324
336
|
options[name.to_sym] = true
|
325
337
|
end
|
326
|
-
end
|
338
|
+
end
|
327
339
|
self
|
328
340
|
end
|
329
341
|
|
@@ -395,16 +407,35 @@ module Buildr
|
|
395
407
|
@report_to ||= file(@project.path_to(:reports, framework)=>self)
|
396
408
|
end
|
397
409
|
|
410
|
+
# :call-seq:
|
411
|
+
# failures_to => file
|
412
|
+
#
|
413
|
+
# We record the list of failed tests for the current framework in this file.
|
414
|
+
#
|
415
|
+
#
|
416
|
+
def failures_to
|
417
|
+
@failures_to ||= file(@project.path_to(:target, "#{framework}-failed")=>self)
|
418
|
+
end
|
419
|
+
|
420
|
+
# :call-seq:
|
421
|
+
# last_failures => array
|
422
|
+
#
|
423
|
+
# We read the last test failures if any and return them.
|
424
|
+
#
|
425
|
+
def last_failures
|
426
|
+
@last_failures ||= failures_to.exist? ? File.read(failures_to.to_s).split('\n') : []
|
427
|
+
end
|
428
|
+
|
398
429
|
# The path to the file that stores the time stamp of the last successful test run.
|
399
430
|
def last_successful_run_file #:nodoc:
|
400
431
|
File.join(report_to.to_s, 'last_successful_run')
|
401
432
|
end
|
402
|
-
|
433
|
+
|
403
434
|
# The time stamp of the last successful test run. Or Rake::EARLY if no successful test run recorded.
|
404
435
|
def timestamp #:nodoc:
|
405
436
|
File.exist?(last_successful_run_file) ? File.mtime(last_successful_run_file) : Rake::EARLY
|
406
437
|
end
|
407
|
-
|
438
|
+
|
408
439
|
# The project this task belongs to.
|
409
440
|
attr_reader :project
|
410
441
|
|
@@ -435,8 +466,9 @@ module Buildr
|
|
435
466
|
|
436
467
|
# Runs the tests using the selected test framework.
|
437
468
|
def run_tests
|
438
|
-
dependencies = Buildr.artifacts(self.dependencies).map(&:to_s).uniq
|
469
|
+
dependencies = (Buildr.artifacts(self.dependencies + compile.dependencies) + [compile.target]).map(&:to_s).uniq
|
439
470
|
rm_rf report_to.to_s
|
471
|
+
rm_rf failures_to.to_s
|
440
472
|
@tests = @framework.tests(dependencies).select { |test| include?(test) }.sort
|
441
473
|
if @tests.empty?
|
442
474
|
@passed_tests, @failed_tests = [], []
|
@@ -444,7 +476,7 @@ module Buildr
|
|
444
476
|
info "Running tests in #{@project.name}"
|
445
477
|
begin
|
446
478
|
# set the baseDir system property if not set
|
447
|
-
@framework.options[:properties] = { 'baseDir' =>
|
479
|
+
@framework.options[:properties] = { 'baseDir' => compile.target.to_s }.merge(@framework.options[:properties] || {})
|
448
480
|
@passed_tests = @framework.run(@tests, dependencies)
|
449
481
|
rescue Exception=>ex
|
450
482
|
error "Test framework error: #{ex.message}"
|
@@ -453,6 +485,7 @@ module Buildr
|
|
453
485
|
end
|
454
486
|
@failed_tests = @tests - @passed_tests
|
455
487
|
unless @failed_tests.empty?
|
488
|
+
Buildr::write(failures_to.to_s, @failed_tests.join("\n"))
|
456
489
|
error "The following tests failed:\n#{@failed_tests.join("\n")}"
|
457
490
|
fail 'Tests failed!'
|
458
491
|
end
|
@@ -465,7 +498,7 @@ module Buildr
|
|
465
498
|
mkdir_p report_to.to_s
|
466
499
|
touch last_successful_run_file
|
467
500
|
end
|
468
|
-
|
501
|
+
|
469
502
|
# Limit running tests to specific list.
|
470
503
|
def only_run(tests)
|
471
504
|
@include = Array(tests)
|
@@ -473,6 +506,13 @@ module Buildr
|
|
473
506
|
@forced_need = true
|
474
507
|
end
|
475
508
|
|
509
|
+
# Limit running tests to those who failed the last time.
|
510
|
+
def only_run_failed()
|
511
|
+
@include = Array(last_failures)
|
512
|
+
@exclude.clear
|
513
|
+
@forced_need = true
|
514
|
+
end
|
515
|
+
|
476
516
|
def invoke_prerequisites(args, chain) #:nodoc:
|
477
517
|
@prerequisites |= FileList[@dependencies.uniq]
|
478
518
|
super
|
@@ -543,6 +583,12 @@ module Buildr
|
|
543
583
|
desc 'Run all tests'
|
544
584
|
task('test') { TestTask.run_local_tests false }
|
545
585
|
|
586
|
+
desc 'Run failed tests'
|
587
|
+
task('test:failed') {
|
588
|
+
TestTask.only_run_failed
|
589
|
+
task('test').invoke
|
590
|
+
}
|
591
|
+
|
546
592
|
# This rule takes a suffix and runs that tests in the current project. For example;
|
547
593
|
# buildr test:MyTest
|
548
594
|
# will run the test com.example.MyTest, if such a test exists for this project.
|
@@ -567,8 +613,8 @@ module Buildr
|
|
567
613
|
end
|
568
614
|
|
569
615
|
end
|
570
|
-
|
571
|
-
before_define do |project|
|
616
|
+
|
617
|
+
before_define(:test) do |project|
|
572
618
|
# Define a recursive test task, and pass it a reference to the project so it can discover all other tasks.
|
573
619
|
test = TestTask.define_task('test')
|
574
620
|
test.send :associate_with, project
|
@@ -578,8 +624,26 @@ module Buildr
|
|
578
624
|
resources.send :associate_with, project, :test
|
579
625
|
project.path_to(:source, :test, :resources).tap { |dir| resources.from dir if File.exist?(dir) }
|
580
626
|
|
627
|
+
# We define a module inline that will inject cancelling the task if tests are skipped.
|
628
|
+
module SkipIfNoTest
|
629
|
+
|
630
|
+
def self.extended(base)
|
631
|
+
base.instance_eval {alias :execute_before_skip_if_no_test :execute}
|
632
|
+
base.instance_eval {alias :execute :execute_after_skip_if_no_test}
|
633
|
+
end
|
634
|
+
|
635
|
+
def execute_after_skip_if_no_test(args) #:nodoc:
|
636
|
+
if Buildr.options.test == false
|
637
|
+
trace "Skipping #{to_s} for #{project.name} as tests are skipped"
|
638
|
+
return
|
639
|
+
end
|
640
|
+
execute_before_skip_if_no_test(args)
|
641
|
+
end
|
642
|
+
end
|
643
|
+
|
581
644
|
# Similar to the regular compile task but using different paths.
|
582
645
|
compile = CompileTask.define_task('test:compile'=>[project.compile, resources])
|
646
|
+
compile.extend SkipIfNoTest
|
583
647
|
compile.send :associate_with, project, :test
|
584
648
|
test.enhance [compile]
|
585
649
|
|
@@ -587,17 +651,20 @@ module Buildr
|
|
587
651
|
test.setup ; test.teardown
|
588
652
|
end
|
589
653
|
|
590
|
-
|
654
|
+
|
655
|
+
|
656
|
+
after_define(:test => :compile) do |project|
|
591
657
|
test = project.test
|
592
658
|
# Dependency on compiled tests and resources. Dependencies added using with.
|
593
659
|
test.dependencies.concat [test.compile.target, test.resources.target].compact
|
660
|
+
test.dependencies.concat test.compile.dependencies
|
594
661
|
# Dependency on compiled code, its dependencies and resources.
|
595
662
|
test.with [project.compile.target, project.resources.target].compact
|
596
663
|
test.with project.compile.dependencies
|
597
664
|
# Picking up the test frameworks adds further dependencies.
|
598
665
|
test.framework
|
599
|
-
|
600
|
-
project.build test unless test.options[:integration]
|
666
|
+
|
667
|
+
project.build test unless test.options[:integration] || Buildr.options.test == :only
|
601
668
|
|
602
669
|
project.clean do
|
603
670
|
rm_rf test.compile.target.to_s if test.compile.target
|
@@ -629,7 +696,7 @@ module Buildr
|
|
629
696
|
def test(*prereqs, &block)
|
630
697
|
task('test').enhance prereqs, &block
|
631
698
|
end
|
632
|
-
|
699
|
+
|
633
700
|
# :call-seq:
|
634
701
|
# integration { |task| .... }
|
635
702
|
# integration => IntegrationTestTask
|
@@ -682,6 +749,8 @@ module Buildr
|
|
682
749
|
false
|
683
750
|
when /^all$/i
|
684
751
|
:all
|
752
|
+
when /^only$/i
|
753
|
+
:only
|
685
754
|
when /^(yes|on|true)$/i, nil
|
686
755
|
true
|
687
756
|
else
|
@@ -76,7 +76,7 @@ module URI
|
|
76
76
|
uri = URI.parse(uri.to_s) unless URI === uri
|
77
77
|
uri.download target, options
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
# :call-seq:
|
81
81
|
# write(uri, content, options?)
|
82
82
|
# write(uri, options?) { |bytes| .. }
|
@@ -98,7 +98,7 @@ module URI
|
|
98
98
|
uri = URI.parse(uri.to_s) unless URI === uri
|
99
99
|
uri.write *args, &block
|
100
100
|
end
|
101
|
-
|
101
|
+
|
102
102
|
# :call-seq:
|
103
103
|
# upload(uri, source, options?)
|
104
104
|
#
|
@@ -162,7 +162,7 @@ module URI
|
|
162
162
|
target.flush
|
163
163
|
end
|
164
164
|
end
|
165
|
-
|
165
|
+
|
166
166
|
# :call-seq:
|
167
167
|
# write(content, options?)
|
168
168
|
# write(options?) { |bytes| .. }
|
@@ -527,11 +527,12 @@ module URI
|
|
527
527
|
"file://#{host}#{path}"
|
528
528
|
end
|
529
529
|
|
530
|
-
#
|
531
|
-
#
|
532
|
-
#
|
530
|
+
# Returns the file system path based that corresponds to the URL path.
|
531
|
+
# On windows this method strips the leading slash off of the path.
|
532
|
+
# On all platforms this method unescapes the URL path.
|
533
533
|
def real_path #:nodoc:
|
534
|
-
|
534
|
+
real_path = Buildr::Util.win_os? && path =~ /^\/[a-zA-Z]:\// ? path[1..-1] : path
|
535
|
+
URI.unescape(real_path)
|
535
536
|
end
|
536
537
|
|
537
538
|
protected
|
data/lib/buildr/core/util.rb
CHANGED
@@ -25,7 +25,7 @@ require 'highline/import'
|
|
25
25
|
|
26
26
|
|
27
27
|
module Buildr
|
28
|
-
|
28
|
+
|
29
29
|
module Util
|
30
30
|
extend self
|
31
31
|
|
@@ -37,7 +37,7 @@ module Buildr
|
|
37
37
|
# prefer this function instead of using Gem.win_platform?.
|
38
38
|
#
|
39
39
|
# Gem.win_platform? only checks these RUBY_PLATFORM global,
|
40
|
-
# that in some cases like when running on JRuby is not
|
40
|
+
# that in some cases like when running on JRuby is not
|
41
41
|
# succifient for our purpose:
|
42
42
|
#
|
43
43
|
# For JRuby, the value for RUBY_PLATFORM will always be 'java'
|
@@ -77,7 +77,7 @@ module Buildr
|
|
77
77
|
path
|
78
78
|
end
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
# Return the timestamp of file, without having to create a file task
|
82
82
|
def timestamp(file)
|
83
83
|
if File.exist?(file)
|
@@ -121,7 +121,7 @@ module Buildr
|
|
121
121
|
|
122
122
|
# Install gems specified by each Gem::Dependency if they are missing. This method prompts the user
|
123
123
|
# for permission before installing anything.
|
124
|
-
#
|
124
|
+
#
|
125
125
|
# Returns the installed Gem::Dependency objects or fails if permission not granted or when buildr
|
126
126
|
# is not running interactively (on a tty)
|
127
127
|
def install(*dependencies)
|
@@ -334,11 +334,11 @@ if Buildr::Util.java_platform?
|
|
334
334
|
end
|
335
335
|
private :mv
|
336
336
|
end
|
337
|
-
|
337
|
+
|
338
338
|
module RakeFileUtils #:nodoc:
|
339
339
|
def rake_merge_option(args, defaults)
|
340
340
|
defaults[:verbose] = false if defaults[:verbose] == :default
|
341
|
-
|
341
|
+
|
342
342
|
if Hash === args.last
|
343
343
|
defaults.update(args.last)
|
344
344
|
args.pop
|
@@ -348,56 +348,56 @@ if Buildr::Util.java_platform?
|
|
348
348
|
end
|
349
349
|
private :rake_merge_option
|
350
350
|
end
|
351
|
-
|
351
|
+
|
352
352
|
module Buildr
|
353
353
|
class ProcessStatus
|
354
354
|
attr_reader :pid, :termsig, :stopsig, :exitstatus
|
355
|
-
|
355
|
+
|
356
356
|
def initialize(pid, success, exitstatus)
|
357
357
|
@pid = pid
|
358
358
|
@success = success
|
359
359
|
@exitstatus = exitstatus
|
360
|
-
|
360
|
+
|
361
361
|
@termsig = nil
|
362
362
|
@stopsig = nil
|
363
363
|
end
|
364
|
-
|
364
|
+
|
365
365
|
def &(num)
|
366
366
|
pid & num
|
367
367
|
end
|
368
|
-
|
368
|
+
|
369
369
|
def ==(other)
|
370
370
|
pid == other.pid
|
371
371
|
end
|
372
|
-
|
372
|
+
|
373
373
|
def >>(num)
|
374
374
|
pid >> num
|
375
375
|
end
|
376
|
-
|
376
|
+
|
377
377
|
def coredump?
|
378
378
|
false
|
379
379
|
end
|
380
|
-
|
380
|
+
|
381
381
|
def exited?
|
382
382
|
true
|
383
383
|
end
|
384
|
-
|
384
|
+
|
385
385
|
def stopped?
|
386
386
|
false
|
387
387
|
end
|
388
|
-
|
388
|
+
|
389
389
|
def success?
|
390
390
|
@success
|
391
391
|
end
|
392
|
-
|
392
|
+
|
393
393
|
def to_i
|
394
394
|
pid
|
395
395
|
end
|
396
|
-
|
396
|
+
|
397
397
|
def to_int
|
398
398
|
pid
|
399
399
|
end
|
400
|
-
|
400
|
+
|
401
401
|
def to_s
|
402
402
|
pid.to_s
|
403
403
|
end
|
@@ -406,18 +406,21 @@ if Buildr::Util.java_platform?
|
|
406
406
|
|
407
407
|
module FileUtils
|
408
408
|
extend FFI::Library
|
409
|
+
|
410
|
+
ffi_lib FFI::Platform::LIBC
|
411
|
+
|
409
412
|
alias_method :__jruby_system__, :system
|
410
413
|
attach_function :system, [:string], :int
|
411
414
|
alias_method :__native_system__, :system
|
412
415
|
alias_method :system, :__jruby_system__
|
413
|
-
|
416
|
+
|
414
417
|
# code "borrowed" directly from Rake
|
415
418
|
def sh(*cmd, &block)
|
416
419
|
options = (Hash === cmd.last) ? cmd.pop : {}
|
417
420
|
unless block_given?
|
418
421
|
show_command = cmd.join(" ")
|
419
422
|
show_command = show_command[0,42] + "..."
|
420
|
-
|
423
|
+
|
421
424
|
block = lambda { |ok, status|
|
422
425
|
ok or fail "Command failed with status (#{status.exitstatus}): [#{show_command}]"
|
423
426
|
}
|
@@ -431,9 +434,16 @@ if Buildr::Util.java_platform?
|
|
431
434
|
rake_check_options options, :noop, :verbose
|
432
435
|
rake_output_message cmd.join(" ") if options[:verbose]
|
433
436
|
unless options[:noop]
|
434
|
-
|
437
|
+
if Buildr::Util.win_os?
|
438
|
+
# Ruby uses forward slashes regardless of platform,
|
439
|
+
# unfortunately cd c:/some/path fails on Windows
|
440
|
+
pwd = Dir.pwd.gsub(%r{/}, '\\')
|
441
|
+
cd = "cd /d \"#{pwd}\" && "
|
442
|
+
else
|
443
|
+
cd = "cd '#{Dir.pwd}' && "
|
444
|
+
end
|
435
445
|
args = if cmd.size > 1 then cmd[1..cmd.size] else [] end
|
436
|
-
|
446
|
+
|
437
447
|
res = if Buildr::Util.win_os? && cmd.size == 1
|
438
448
|
__native_system__("#{cd} call #{cmd.first}")
|
439
449
|
else
|
@@ -446,4 +456,48 @@ if Buildr::Util.java_platform?
|
|
446
456
|
end
|
447
457
|
|
448
458
|
end
|
459
|
+
else
|
460
|
+
module FileUtils
|
461
|
+
# code "borrowed" directly from Rake
|
462
|
+
def sh(*cmd, &block)
|
463
|
+
options = (Hash === cmd.last) ? cmd.pop : {}
|
464
|
+
unless block_given?
|
465
|
+
show_command = cmd.join(" ")
|
466
|
+
show_command = show_command[0,42] + "..."
|
467
|
+
|
468
|
+
block = lambda { |ok, status|
|
469
|
+
ok or fail "Command failed with status (#{status.exitstatus}): [#{show_command}]"
|
470
|
+
}
|
471
|
+
end
|
472
|
+
if RakeFileUtils.verbose_flag == :default
|
473
|
+
options[:verbose] = false
|
474
|
+
else
|
475
|
+
options[:verbose] ||= RakeFileUtils.verbose_flag
|
476
|
+
end
|
477
|
+
options[:noop] ||= RakeFileUtils.nowrite_flag
|
478
|
+
rake_check_options options, :noop, :verbose
|
479
|
+
rake_output_message cmd.join(" ") if options[:verbose]
|
480
|
+
unless options[:noop]
|
481
|
+
if Buildr::Util.win_os?
|
482
|
+
# Ruby uses forward slashes regardless of platform,
|
483
|
+
# unfortunately cd c:/some/path fails on Windows
|
484
|
+
pwd = Dir.pwd.gsub(%r{/}, '\\')
|
485
|
+
cd = "cd /d \"#{pwd}\" && "
|
486
|
+
else
|
487
|
+
cd = "cd '#{Dir.pwd}' && "
|
488
|
+
end
|
489
|
+
|
490
|
+
args = if cmd.size > 1 then cmd[1..cmd.size] else [] end
|
491
|
+
|
492
|
+
res = if Buildr::Util.win_os? && cmd.size == 1
|
493
|
+
system("#{cd} call #{cmd.first}")
|
494
|
+
else
|
495
|
+
arg_str = args.map { |a| "'#{a}'" }
|
496
|
+
system(cd + cmd.first + ' ' + arg_str.join(' '))
|
497
|
+
end
|
498
|
+
|
499
|
+
block.call(res, $?)
|
500
|
+
end
|
501
|
+
end
|
502
|
+
end
|
449
503
|
end
|