summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-06-28 02:45:29 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-06-28 02:45:29 +0000
commit2619f216fef06c9fca948ca729a0e23b62996f09 (patch)
tree01c462490ba269df417fad115570ace6a765a25f
parent84ece951630c61eddab8be47b80fc1a7f774175f (diff)
* lib/rake: Update rake to fix some bugs and hide deprecated features
from RDoc. * lib/rake/version.rb: Bump version to 0.9.2.1 to distinguish it from the released version. * NEWS: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--NEWS2
-rw-r--r--lib/rake.rb2
-rw-r--r--lib/rake/classic_namespace.rb2
-rw-r--r--lib/rake/clean.rb1
-rw-r--r--lib/rake/dsl_definition.rb9
-rw-r--r--lib/rake/ext/time.rb6
-rw-r--r--lib/rake/file_utils.rb16
-rw-r--r--lib/rake/file_utils_ext.rb5
-rw-r--r--lib/rake/gempackagetask.rb2
-rw-r--r--lib/rake/rake_test_loader.rb21
-rw-r--r--lib/rake/rdoctask.rb2
-rw-r--r--lib/rake/task_arguments.rb4
-rw-r--r--lib/rake/version.rb4
-rw-r--r--test/rake/test_rake_file_utils.rb19
-rw-r--r--test/rake/test_rake_functional.rb8
-rw-r--r--test/rake/test_rake_rake_test_loader.rb21
-rw-r--r--test/rake/test_rake_task_with_arguments.rb8
-rw-r--r--test/rake/test_rake_test_task.rb102
19 files changed, 164 insertions, 78 deletions
diff --git a/ChangeLog b/ChangeLog
index 8effab2551..45332bfd1f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Tue Jun 28 11:45:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake: Update rake to fix some bugs and hide deprecated features
+ from RDoc.
+ * lib/rake/version.rb: Bump version to 0.9.2.1 to distinguish it from
+ the released version.
+ * NEWS: ditto
+
Tue Jun 28 11:17:28 2011 Eric Hodel <drbrain@segment7.net>
* lib/rdoc: Update to RDoc 3.7 (final)
diff --git a/NEWS b/NEWS
index e67824e365..3e85f9acad 100644
--- a/NEWS
+++ b/NEWS
@@ -195,7 +195,7 @@ with all sufficient information, see the ChangeLog file.
* support for bash/zsh completion.
* Rake
- * Rake has been upgraded from 0.8.7 to 0.9.2. For full release notes see
+ * Rake has been upgraded from 0.8.7 to 0.9.2.1. For full release notes see
https://github.com/jimweirich/rake/blob/master/CHANGES
* RDoc
diff --git a/lib/rake.rb b/lib/rake.rb
index d88cf6cfe6..31fa1fa579 100644
--- a/lib/rake.rb
+++ b/lib/rake.rb
@@ -23,7 +23,9 @@
require 'rake/version'
+# :stopdoc:
RAKEVERSION = Rake::VERSION
+# :startdoc:
require 'rbconfig'
require 'fileutils'
diff --git a/lib/rake/classic_namespace.rb b/lib/rake/classic_namespace.rb
index d87aba0f33..6e71012da4 100644
--- a/lib/rake/classic_namespace.rb
+++ b/lib/rake/classic_namespace.rb
@@ -3,7 +3,9 @@
# referenced Task from the top level.
warn "WARNING: Classic namespaces are deprecated and will be removed from future versions of Rake."
+# :stopdoc:
Task = Rake::Task
FileTask = Rake::FileTask
FileCreationTask = Rake::FileCreationTask
RakeApp = Rake::Application
+# :startdoc:
diff --git a/lib/rake/clean.rb b/lib/rake/clean.rb
index 62f27d5751..5c9cbcdb24 100644
--- a/lib/rake/clean.rb
+++ b/lib/rake/clean.rb
@@ -13,6 +13,7 @@
require 'rake'
+# :stopdoc:
CLEAN = Rake::FileList["**/*~", "**/*.bak", "**/core"]
CLEAN.clear_exclude.exclude { |fn|
fn.pathmap("%f") == 'core' && File.directory?(fn)
diff --git a/lib/rake/dsl_definition.rb b/lib/rake/dsl_definition.rb
index e0b9c6fd0e..3294f9e6c0 100644
--- a/lib/rake/dsl_definition.rb
+++ b/lib/rake/dsl_definition.rb
@@ -2,11 +2,18 @@
require 'rake/file_utils_ext'
module Rake
+
+ ##
+ # DSL is a module that provides #task, #desc, #namespace, etc. Use this
+ # when you'd like to use rake outside the top level scope.
+
module DSL
+ #--
# Include the FileUtils file manipulation functions in the top
# level module, but mark them private so that they don't
# unintentionally define methods on other objects.
+ #++
include FileUtilsExt
private(*FileUtils.instance_methods(false))
@@ -139,7 +146,7 @@ module Rake
end
end
- module DeprecatedObjectDSL
+ module DeprecatedObjectDSL # :nodoc:
Commands = Object.new.extend DSL
DSL.private_instance_methods(false).each do |name|
line = __LINE__+1
diff --git a/lib/rake/ext/time.rb b/lib/rake/ext/time.rb
index ca3ea2a795..7877abf0ce 100644
--- a/lib/rake/ext/time.rb
+++ b/lib/rake/ext/time.rb
@@ -1,6 +1,6 @@
-# ###########################################################################
+#--
# Extensions to time to allow comparisons with an early time class.
-#
+
class Time
alias rake_original_time_compare :<=>
def <=>(other)
@@ -10,5 +10,5 @@ class Time
rake_original_time_compare(other)
end
end
-end # class Time
+end
diff --git a/lib/rake/file_utils.rb b/lib/rake/file_utils.rb
index 9e0198e644..e02d541ab8 100644
--- a/lib/rake/file_utils.rb
+++ b/lib/rake/file_utils.rb
@@ -1,10 +1,9 @@
require 'rbconfig'
require 'fileutils'
-# ###########################################################################
+#--
# This a FileUtils extension that defines several additional commands to be
# added to the FileUtils utility functions.
-#
module FileUtils
# Path to the currently running Ruby program
RUBY = File.join(
@@ -38,6 +37,7 @@ module FileUtils
options[:noop] ||= Rake::FileUtilsExt.nowrite_flag
Rake.rake_check_options options, :noop, :verbose
Rake.rake_output_message cmd.join(" ") if options[:verbose]
+
unless options[:noop]
res = rake_system(*cmd)
status = $?
@@ -46,7 +46,7 @@ module FileUtils
end
end
- def create_shell_runner(cmd)
+ def create_shell_runner(cmd) # :nodoc:
show_command = cmd.join(" ")
show_command = show_command[0,42] + "..." unless $trace
lambda { |ok, status|
@@ -55,14 +55,16 @@ module FileUtils
end
private :create_shell_runner
- def set_verbose_option(options)
- if options[:verbose].nil?
- options[:verbose] = Rake::FileUtilsExt.verbose_flag.nil? || Rake::FileUtilsExt.verbose_flag
+ def set_verbose_option(options) # :nodoc:
+ unless options.key? :verbose
+ options[:verbose] =
+ Rake::FileUtilsExt.verbose_flag == Rake::FileUtilsExt::DEFAULT ||
+ Rake::FileUtilsExt.verbose_flag
end
end
private :set_verbose_option
- def rake_system(*cmd)
+ def rake_system(*cmd) # :nodoc:
Rake::AltSystem.system(*cmd)
end
private :rake_system
diff --git a/lib/rake/file_utils_ext.rb b/lib/rake/file_utils_ext.rb
index 7c22f80687..557420df80 100644
--- a/lib/rake/file_utils_ext.rb
+++ b/lib/rake/file_utils_ext.rb
@@ -12,7 +12,10 @@ module Rake
class << self
attr_accessor :verbose_flag, :nowrite_flag
end
- FileUtilsExt.verbose_flag = nil
+
+ DEFAULT = Object.new
+
+ FileUtilsExt.verbose_flag = DEFAULT
FileUtilsExt.nowrite_flag = false
$fileutils_verbose = true
diff --git a/lib/rake/gempackagetask.rb b/lib/rake/gempackagetask.rb
index 51e92236fc..5f1fc4def8 100644
--- a/lib/rake/gempackagetask.rb
+++ b/lib/rake/gempackagetask.rb
@@ -7,6 +7,8 @@ require 'rubygems/package_task'
require 'rake'
+# :stopdoc:
+
module Rake
GemPackageTask = Gem::PackageTask
end
diff --git a/lib/rake/rake_test_loader.rb b/lib/rake/rake_test_loader.rb
index 045a12fdce..7e3a6b3f35 100644
--- a/lib/rake/rake_test_loader.rb
+++ b/lib/rake/rake_test_loader.rb
@@ -1,13 +1,22 @@
require 'rake'
# Load the test files from the command line.
+argv = ARGV.select do |argument|
+ case argument
+ when /^-/ then
+ argument
+ when /\*/ then
+ FileList[argument].to_a.each do |file|
+ require File.expand_path file
+ end
-ARGV.each do |f|
- next if f =~ /^-/
-
- if f =~ /\*/
- FileList[f].to_a.each { |fn| require File.expand_path(fn) }
+ false
else
- require File.expand_path(f)
+ require File.expand_path argument
+
+ false
end
end
+
+ARGV.replace argv
+
diff --git a/lib/rake/rdoctask.rb b/lib/rake/rdoctask.rb
index 5faf836b37..b6ae224a9e 100644
--- a/lib/rake/rdoctask.rb
+++ b/lib/rake/rdoctask.rb
@@ -13,6 +13,8 @@ begin
rescue LoadError, Gem::LoadError
end
+# :stopdoc:
+
if defined?(RDoc::Task) then
module Rake
RDocTask = RDoc::Task unless const_defined? :RDocTask
diff --git a/lib/rake/task_arguments.rb b/lib/rake/task_arguments.rb
index ab404d67f5..02d01b99f9 100644
--- a/lib/rake/task_arguments.rb
+++ b/lib/rake/task_arguments.rb
@@ -43,6 +43,10 @@ module Rake
@hash.each(&block)
end
+ def values_at(*keys)
+ keys.map { |k| lookup(k) }
+ end
+
def method_missing(sym, *args, &block)
lookup(sym.to_sym)
end
diff --git a/lib/rake/version.rb b/lib/rake/version.rb
index 7f22595640..3afad7f25a 100644
--- a/lib/rake/version.rb
+++ b/lib/rake/version.rb
@@ -1,7 +1,7 @@
module Rake
- VERSION = '0.9.2'
+ VERSION = '0.9.2.1'
- module Version
+ module Version # :nodoc: all
MAJOR, MINOR, BUILD = VERSION.split '.'
NUMBERS = [ MAJOR, MINOR, BUILD ]
end
diff --git a/test/rake/test_rake_file_utils.rb b/test/rake/test_rake_file_utils.rb
index fb7a4a5307..0f5ad3e7ab 100644
--- a/test/rake/test_rake_file_utils.rb
+++ b/test/rake/test_rake_file_utils.rb
@@ -6,6 +6,7 @@ class TestRakeFileUtils < Rake::TestCase
def teardown
FileUtils::LN_SUPPORTED[0] = true
+ RakeFileUtils.verbose_flag = Rake::FileUtilsExt::DEFAULT
super
end
@@ -101,7 +102,11 @@ class TestRakeFileUtils < Rake::TestCase
def test_file_utils_methods_are_available_at_top_level
create_file("a")
- rm_rf "a"
+
+ capture_io do
+ rm_rf "a"
+ end
+
refute File.exist?("a")
end
@@ -208,7 +213,7 @@ class TestRakeFileUtils < Rake::TestCase
assert_equal "shellcommand.rb\n", err
end
- def test_sh_no_verbose
+ def test_sh_verbose_false
shellcommand
_, err = capture_io do
@@ -220,6 +225,16 @@ class TestRakeFileUtils < Rake::TestCase
assert_equal '', err
end
+ def test_sh_verbose_flag_nil
+ shellcommand
+
+ RakeFileUtils.verbose_flag = nil
+
+ assert_silent do
+ sh %{shellcommand.rb}, :noop=>true
+ end
+ end
+
def test_ruby_with_a_single_string_argument
check_expansion
diff --git a/test/rake/test_rake_functional.rb b/test/rake/test_rake_functional.rb
index e27d3cf68b..f95a7689a7 100644
--- a/test/rake/test_rake_functional.rb
+++ b/test/rake/test_rake_functional.rb
@@ -117,7 +117,7 @@ class TestRakeFunctional < Rake::TestCase
rake
- assert_not_match %r{^BAD:}, @out
+ refute_match %r{^BAD:}, @out
end
def test_rbext
@@ -441,7 +441,7 @@ class TestRakeFunctional < Rake::TestCase
rake "-T"
- assert_not_match("t2", @out)
+ refute_match("t2", @out)
end
def test_comment_after_desc_is_ignored
@@ -476,10 +476,6 @@ class TestRakeFunctional < Rake::TestCase
private
- def assert_not_match(pattern, string, comment="'#{pattern}' was found (incorrectly) in '#{string}.inspect")
- assert_nil Regexp.new(pattern).match(string), comment
- end
-
# Run a shell Ruby command with command line options (using the
# default test options). Output is captured in @out, @err and
# @status.
diff --git a/test/rake/test_rake_rake_test_loader.rb b/test/rake/test_rake_rake_test_loader.rb
new file mode 100644
index 0000000000..5b5e81d06d
--- /dev/null
+++ b/test/rake/test_rake_rake_test_loader.rb
@@ -0,0 +1,21 @@
+require File.expand_path('../helper', __FILE__)
+
+class TestRakeRakeTestLoader < Rake::TestCase
+
+ def test_pattern
+ orig_LOADED_FEATURES = $:.dup
+ FileUtils.touch 'foo.rb'
+ FileUtils.touch 'test_a.rb'
+ FileUtils.touch 'test_b.rb'
+
+ ARGV.replace %w[foo.rb test_*.rb -v]
+
+ load File.join(@orig_PWD, 'lib/rake/rake_test_loader.rb')
+
+ assert_equal %w[-v], ARGV
+ ensure
+ $:.replace orig_LOADED_FEATURES
+ end
+
+end
+
diff --git a/test/rake/test_rake_task_with_arguments.rb b/test/rake/test_rake_task_with_arguments.rb
index bbbc82f99f..fe1bcf5a49 100644
--- a/test/rake/test_rake_task_with_arguments.rb
+++ b/test/rake/test_rake_task_with_arguments.rb
@@ -158,5 +158,13 @@ class TestRakeTaskWithArguments < Rake::TestCase
t = task(:t => [:pre])
t.invoke("bill", "1.2")
end
+
+ def test_values_at
+ t = task(:pre, [:a, :b, :c]) { |t, args|
+ a, b, c = args.values_at(:a, :b, :c)
+ assert_equal %w[1 2 3], [a, b, c]
+ }
+ t.invoke(*%w[1 2 3])
+ end
end
diff --git a/test/rake/test_rake_test_task.rb b/test/rake/test_rake_test_task.rb
index 81b4df3cd5..7d490a0f6c 100644
--- a/test/rake/test_rake_test_task.rb
+++ b/test/rake/test_rake_test_task.rb
@@ -4,18 +4,7 @@ require 'rake/testtask'
class TestRakeTestTask < Rake::TestCase
include Rake
- def setup
- super
-
- Task.clear
- ENV.delete('TEST')
- end
-
- def test_no_task
- assert ! Task.task_defined?(:test)
- end
-
- def test_defaults
+ def test_initialize
tt = Rake::TestTask.new do |t| end
refute_nil tt
assert_equal :test, tt.name
@@ -25,7 +14,7 @@ class TestRakeTestTask < Rake::TestCase
assert Task.task_defined?(:test)
end
- def test_non_defaults
+ def test_initialize_override
tt = Rake::TestTask.new(:example) do |t|
t.libs = ['src', 'ext']
t.pattern = 'test/tc_*.rb'
@@ -39,29 +28,43 @@ class TestRakeTestTask < Rake::TestCase
assert Task.task_defined?(:example)
end
- def test_pattern
- tt = Rake::TestTask.new do |t|
- t.pattern = '*.rb'
- end
- assert_equal ['*.rb'], tt.file_list.to_a
- end
-
- def test_env_test
+ def test_file_list_ENV_TEST
ENV['TEST'] = 'testfile.rb'
tt = Rake::TestTask.new do |t|
t.pattern = '*'
end
+
assert_equal ["testfile.rb"], tt.file_list.to_a
+ ensure
+ ENV.delete 'TEST'
end
- def test_test_files
+ def test_libs_equals
+ test_task = Rake::TestTask.new do |t|
+ t.libs << ["A", "B"]
+ end
+
+ path = %w[lib A B].join File::PATH_SEPARATOR
+
+ assert_equal "-I\"#{path}\"", test_task.ruby_opts_string
+ end
+
+ def test_libs_equals_empty
+ test_task = Rake::TestTask.new do |t|
+ t.libs = []
+ end
+
+ assert_equal '', test_task.ruby_opts_string
+ end
+
+ def test_pattern_equals
tt = Rake::TestTask.new do |t|
- t.test_files = FileList['a.rb', 'b.rb']
+ t.pattern = '*.rb'
end
- assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a
+ assert_equal ['*.rb'], tt.file_list.to_a
end
- def test_both_pattern_and_test_files
+ def test_pattern_equals_test_files_equals
tt = Rake::TestTask.new do |t|
t.test_files = FileList['a.rb', 'b.rb']
t.pattern = '*.rb'
@@ -69,48 +72,49 @@ class TestRakeTestTask < Rake::TestCase
assert_equal ['a.rb', 'b.rb', '*.rb'], tt.file_list.to_a
end
- def test_direct_run_has_quoted_paths
- test_task = Rake::TestTask.new(:tx) do |t|
+ def test_run_code_direct
+ test_task = Rake::TestTask.new do |t|
t.loader = :direct
end
- assert_match(/-e ".*"/, test_task.run_code)
+
+ assert_equal '-e "ARGV.each{|f| require f}"', test_task.run_code
+ end
+
+ def test_run_code_rake
+ test_task = Rake::TestTask.new do |t|
+ t.loader = :rake
+ end
+
+ assert_match(/-I".*?" ".*?"/, test_task.run_code)
end
- def test_testrb_run_has_quoted_paths_on_ruby_182
- test_task = Rake::TestTask.new(:tx) do |t|
+ def test_run_code_testrb_ruby_1_8_2
+ test_task = Rake::TestTask.new do |t|
t.loader = :testrb
end
+
flexmock(test_task).should_receive(:ruby_version).and_return('1.8.2')
+
assert_match(/^-S testrb +".*"$/, test_task.run_code)
end
- def test_testrb_run_has_quoted_paths_on_ruby_186
- test_task = Rake::TestTask.new(:tx) do |t|
+ def test_run_code_testrb_ruby_1_8_6
+ test_task = Rake::TestTask.new do |t|
t.loader = :testrb
end
+
flexmock(test_task).should_receive(:ruby_version).and_return('1.8.6')
+
assert_match(/^-S testrb +$/, test_task.run_code)
end
- def test_rake_run_has_quoted_paths
- test_task = Rake::TestTask.new(:tx) do |t|
- t.loader = :rake
+ def test_test_files_equals
+ tt = Rake::TestTask.new do |t|
+ t.test_files = FileList['a.rb', 'b.rb']
end
- assert_match(/".*"/, test_task.run_code)
- end
- def test_nested_libs_will_be_flattened
- test_task = Rake::TestTask.new(:tx) do |t|
- t.libs << ["A", "B"]
- end
- sep = File::PATH_SEPARATOR
- assert_match(/lib#{sep}A#{sep}B/, test_task.ruby_opts_string)
+ assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a
end
- def test_empty_lib_path_implies_no_dash_I_option
- test_task = Rake::TestTask.new(:tx) do |t|
- t.libs = []
- end
- refute_match(/-I/, test_task.ruby_opts_string)
- end
end
+