summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-15 22:32:34 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-15 22:32:34 +0000
commit1b023030a88a35118875b068a1fd725c58a32083 (patch)
tree07bbdc25e71d98bfa4091f617d82fc87541364c5
parente9c28d0fce1fa34bd83e910273981190932ebf63 (diff)
* lib/rake*: Updated to rake 0.9.4
http://rake.rubyforge.org/doc/release_notes/rake-0_9_4_rdoc.html for a list of changes in 0.9.4. * test/rake*: ditto * NEWS: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37667 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--NEWS10
-rw-r--r--lib/rake/application.rb5
-rw-r--r--lib/rake/contrib/ftptools.rb4
-rw-r--r--lib/rake/contrib/sys.rb13
-rw-r--r--lib/rake/file_list.rb9
-rw-r--r--lib/rake/phony.rb6
-rw-r--r--lib/rake/rake_module.rb7
-rw-r--r--lib/rake/runtest.rb3
-rw-r--r--lib/rake/testtask.rb5
-rw-r--r--lib/rake/version.rb2
-rw-r--r--test/rake/helper.rb27
-rw-r--r--test/rake/test_rake_functional.rb19
13 files changed, 90 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index 5d3f998ed3..87c9f16930 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Fri Nov 16 07:23:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake*: Updated to rake 0.9.4
+ http://rake.rubyforge.org/doc/release_notes/rake-0_9_4_rdoc.html for
+ a list of changes in 0.9.4.
+ * test/rake*: ditto
+ * NEWS: ditto
+
Fri Nov 16 06:58:52 2012 Eric Hodel <drbrain@segment7.net>
* lib/rake*: Updated to rake 0.9.3. See
diff --git a/NEWS b/NEWS
index 9f27baed92..41e836fc44 100644
--- a/NEWS
+++ b/NEWS
@@ -182,12 +182,14 @@ with all sufficient information, see the ChangeLog file.
* Pathname#find returns an enumerator if no block is given.
* rake
- * rake has been updated to version 0.9.3.
+ * rake has been updated to version 0.9.4.
This version is backwards-compatible with previous rake versions and
- contains many bug fixes. See
- http://rake.rubyforge.org/doc/release_notes/rake-0_9_3_rdoc.html for a list
- of changes in rake 0.9.3
+ contains many bug fixes.
+
+ See
+ http://rake.rubyforge.org/doc/release_notes/rake-0_9_4_rdoc.html for a list
+ of changes in rake 0.9.3 and 0.9.4.
* resolv
* new methods:
diff --git a/lib/rake/application.rb b/lib/rake/application.rb
index 50930938bf..54796312d8 100644
--- a/lib/rake/application.rb
+++ b/lib/rake/application.rb
@@ -2,6 +2,7 @@ require 'shellwords'
require 'optparse'
require 'rake/task_manager'
+require 'rake/file_list'
require 'rake/thread_pool'
require 'rake/thread_history_display'
require 'rake/win32'
@@ -204,7 +205,7 @@ module Rake
def have_rakefile
@rakefiles.each do |fn|
if File.exist?(fn)
- others = Rake.glob(fn, File::FNM_CASEFOLD)
+ others = FileList.glob(fn, File::FNM_CASEFOLD)
return others.size == 1 ? others.first : fn
elsif fn == ''
return fn
@@ -609,7 +610,7 @@ module Rake
end
def glob(path, &block)
- Rake.glob(path.gsub("\\", '/')).each(&block)
+ FileList.glob(path.gsub("\\", '/')).each(&block)
end
private :glob
diff --git a/lib/rake/contrib/ftptools.rb b/lib/rake/contrib/ftptools.rb
index eaf8885262..d39cde8ed9 100644
--- a/lib/rake/contrib/ftptools.rb
+++ b/lib/rake/contrib/ftptools.rb
@@ -5,6 +5,7 @@
require 'date'
require 'net/ftp'
+require 'rake/file_list'
module Rake # :nodoc:
@@ -127,8 +128,7 @@ module Rake # :nodoc:
# Upload all files matching +wildcard+ to the uploader's root
# path.
def upload_files(wildcard)
- fail "OUCH"
- Rake.glob(wildcard).each do |fn|
+ FileList.glob(wildcard).each do |fn|
upload(fn)
end
end
diff --git a/lib/rake/contrib/sys.rb b/lib/rake/contrib/sys.rb
index aefd4a1913..5e31ea81b4 100644
--- a/lib/rake/contrib/sys.rb
+++ b/lib/rake/contrib/sys.rb
@@ -10,6 +10,7 @@ begin
rescue LoadError
end
require 'rbconfig'
+require 'rake/file_list'
######################################################################
# Sys provides a number of file manipulation tools for the convenience
@@ -27,7 +28,7 @@ module Sys
# Install all the files matching +wildcard+ into the +dest_dir+
# directory. The permission mode is set to +mode+.
def install(wildcard, dest_dir, mode)
- Rake.glob(wildcard).each do |fn|
+ FileList.glob(wildcard).each do |fn|
File.install(fn, dest_dir, mode, $verbose)
end
end
@@ -81,7 +82,7 @@ module Sys
# recursively delete directories.
def delete(*wildcards)
wildcards.each do |wildcard|
- Rake.glob(wildcard).each do |fn|
+ FileList.glob(wildcard).each do |fn|
if File.directory?(fn)
log "Deleting directory #{fn}"
Dir.delete(fn)
@@ -96,10 +97,10 @@ module Sys
# Recursively delete all files and directories matching +wildcard+.
def delete_all(*wildcards)
wildcards.each do |wildcard|
- Rake.glob(wildcard).each do |fn|
+ FileList.glob(wildcard).each do |fn|
next if ! File.exist?(fn)
if File.directory?(fn)
- Rake.glob("#{fn}/*").each do |subfn|
+ FileList.glob("#{fn}/*").each do |subfn|
next if subfn=='.' || subfn=='..'
delete_all(subfn)
end
@@ -161,7 +162,7 @@ module Sys
# Perform a block with each file matching a set of wildcards.
def for_files(*wildcards)
wildcards.each do |wildcard|
- Rake.glob(wildcard).each do |fn|
+ FileList.glob(wildcard).each do |fn|
yield(fn)
end
end
@@ -172,7 +173,7 @@ module Sys
private # ----------------------------------------------------------
def for_matching_files(wildcard, dest_dir)
- Rake.glob(wildcard).each do |fn|
+ FileList.glob(wildcard).each do |fn|
dest_file = File.join(dest_dir, fn)
parent = File.dirname(dest_file)
makedirs(parent) if ! File.directory?(parent)
diff --git a/lib/rake/file_list.rb b/lib/rake/file_list.rb
index b74ecac4cc..b9b9d7216a 100644
--- a/lib/rake/file_list.rb
+++ b/lib/rake/file_list.rb
@@ -340,7 +340,7 @@ module Rake
# Add matching glob patterns.
def add_matching(pattern)
- Rake.glob(pattern).each do |fn|
+ FileList.glob(pattern).each do |fn|
self << fn unless exclude?(fn)
end
end
@@ -383,6 +383,13 @@ module Rake
def [](*args)
new(*args)
end
+
+ # Get a sorted list of files matching the pattern. This method
+ # should be prefered to Dir[pattern] and Dir.glob[pattern] because
+ # the files returned are guaranteed to be sorted.
+ def glob(pattern, *args)
+ Dir.glob(pattern, *args).sort
+ end
end
end
end
diff --git a/lib/rake/phony.rb b/lib/rake/phony.rb
index 0552c26a33..29633ae066 100644
--- a/lib/rake/phony.rb
+++ b/lib/rake/phony.rb
@@ -8,6 +8,8 @@ require 'rake'
task :phony
-def (Rake::Task[:phony]).timestamp
- Time.at 0
+Rake::Task[:phony].tap do |task|
+ def task.timestamp # :nodoc:
+ Time.at 0
+ end
end
diff --git a/lib/rake/rake_module.rb b/lib/rake/rake_module.rb
index 6f77d1b674..fcf5800064 100644
--- a/lib/rake/rake_module.rb
+++ b/lib/rake/rake_module.rb
@@ -32,13 +32,6 @@ module Rake
application.options.rakelib << file
end
end
-
- # Get a sorted list of files matching the pattern. This method
- # should be prefered to Dir[pattern] and Dir.glob[pattern] because
- # the files returned are guaranteed to be sorted.
- def glob(pattern, *args)
- Dir.glob(pattern, *args).sort
- end
end
end
diff --git a/lib/rake/runtest.rb b/lib/rake/runtest.rb
index 9c6469d45e..bd816ccfde 100644
--- a/lib/rake/runtest.rb
+++ b/lib/rake/runtest.rb
@@ -1,11 +1,12 @@
require 'test/unit'
require 'test/unit/assertions'
+require 'rake/file_list'
module Rake
include Test::Unit::Assertions
def run_tests(pattern='test/test*.rb', log_enabled=false)
- Rake.glob(pattern).each { |fn|
+ FileList.glob(pattern).each { |fn|
$stderr.puts fn if log_enabled
begin
require fn
diff --git a/lib/rake/testtask.rb b/lib/rake/testtask.rb
index 99094df1c8..19592d80c8 100644
--- a/lib/rake/testtask.rb
+++ b/lib/rake/testtask.rb
@@ -96,9 +96,12 @@ module Rake
desc "Run tests" + (@name==:test ? "" : " for #{@name}")
task @name do
FileUtilsExt.verbose(@verbose) do
- ruby "#{ruby_opts_string} #{run_code} #{file_list_string} #{option_list}" do |ok, status|
+ args = "#{ruby_opts_string} #{run_code} #{file_list_string} #{option_list}"
+ ruby args do |ok, status|
if !ok && status.respond_to?(:signaled?) && status.signaled?
raise SignalException.new(status.termsig)
+ elsif !ok
+ fail "Command failed with status (#{status.exitstatus}): [ruby #{args}]"
end
end
end
diff --git a/lib/rake/version.rb b/lib/rake/version.rb
index 2515e25663..4379fc96ad 100644
--- a/lib/rake/version.rb
+++ b/lib/rake/version.rb
@@ -3,7 +3,7 @@ module Rake
NUMBERS = [
MAJOR = 0,
MINOR = 9,
- BUILD = 3,
+ BUILD = 4,
]
end
VERSION = Version::NUMBERS.join('.')
diff --git a/test/rake/helper.rb b/test/rake/helper.rb
index 5a373d3043..288ff0e3b2 100644
--- a/test/rake/helper.rb
+++ b/test/rake/helper.rb
@@ -519,4 +519,31 @@ task :default => :test
end
end
+ def rakefile_failing_test_task
+ rakefile <<-TEST_TASK
+require 'rake/testtask'
+
+task :default => :test
+Rake::TestTask.new(:test) do |t|
+ t.test_files = ['a_test.rb']
+end
+ TEST_TASK
+ open 'a_test.rb', 'w' do |io|
+ io << "require 'minitest/autorun'\n"
+ io << "class ExitTaskTest < MiniTest::Unit::TestCase\n"
+ io << " def test_exit\n"
+ io << " assert false, 'this should fail'\n"
+ io << " end\n"
+ io << "end\n"
+ end
+ end
+
+ def rakefile_stand_alone_filelist
+ open 'stand_alone_filelist.rb', 'w' do |io|
+ io << "require 'rake/file_list'\n"
+ io << "FL = Rake::FileList['*.rb']\n"
+ io << "puts FL\n"
+ end
+ end
+
end
diff --git a/test/rake/test_rake_functional.rb b/test/rake/test_rake_functional.rb
index ad59f7b9f8..2b97927e4c 100644
--- a/test/rake/test_rake_functional.rb
+++ b/test/rake/test_rake_functional.rb
@@ -439,6 +439,21 @@ class TestRakeFunctional < Rake::TestCase
end
end
+ def test_failing_test_sets_exit_status
+ rakefile_failing_test_task
+ rake
+ assert_equal 1, @exit.exitstatus
+ end
+
+ def test_stand_alone_filelist
+ rakefile_stand_alone_filelist
+
+ run_ruby @ruby_options + ["stand_alone_filelist.rb"]
+
+ assert_match(/^stand_alone_filelist\.rb$/, @out)
+ assert_equal 0, @exit.exitstatus
+ end
+
private
# Run a shell Ruby command with command line options (using the
@@ -458,14 +473,16 @@ class TestRakeFunctional < Rake::TestCase
def run_ruby(option_list)
puts "COMMAND: [#{RUBY} #{option_list.join ' '}]" if @verbose
- inn, out, err = Open3.popen3(Gem.ruby, *option_list)
+ inn, out, err, wait = Open3.popen3(Gem.ruby, *option_list)
inn.close
@out = out.read
@err = err.read
+ @exit = wait.value
puts "OUTPUT: [#{@out}]" if @verbose
puts "ERROR: [#{@err}]" if @verbose
+ puts "EXIT: [#{@exit.inspect}]" if @verbose
puts "PWD: [#{Dir.pwd}]" if @verbose
end