From 2619f216fef06c9fca948ca729a0e23b62996f09 Mon Sep 17 00:00:00 2001 From: drbrain Date: Tue, 28 Jun 2011 02:45:29 +0000 Subject: * 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 --- ChangeLog | 8 +++ NEWS | 2 +- lib/rake.rb | 2 + lib/rake/classic_namespace.rb | 2 + lib/rake/clean.rb | 1 + lib/rake/dsl_definition.rb | 9 ++- lib/rake/ext/time.rb | 6 +- lib/rake/file_utils.rb | 16 +++-- lib/rake/file_utils_ext.rb | 5 +- lib/rake/gempackagetask.rb | 2 + lib/rake/rake_test_loader.rb | 21 ++++-- lib/rake/rdoctask.rb | 2 + lib/rake/task_arguments.rb | 4 ++ lib/rake/version.rb | 4 +- test/rake/test_rake_file_utils.rb | 19 +++++- test/rake/test_rake_functional.rb | 8 +-- test/rake/test_rake_rake_test_loader.rb | 21 ++++++ test/rake/test_rake_task_with_arguments.rb | 8 +++ test/rake/test_rake_test_task.rb | 102 +++++++++++++++-------------- 19 files changed, 164 insertions(+), 78 deletions(-) create mode 100644 test/rake/test_rake_rake_test_loader.rb 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 + + * 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 * 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 + -- cgit v1.2.3