diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/rake.rb | 2 | ||||
-rw-r--r-- | lib/rake/application.rb | 25 | ||||
-rw-r--r-- | lib/rake/dsl_definition.rb | 2 | ||||
-rw-r--r-- | test/rake/test_rake_application.rb | 24 | ||||
-rw-r--r-- | test/rake/test_rake_application_options.rb | 4 | ||||
-rw-r--r-- | test/rake/test_rake_test_task.rb | 19 |
7 files changed, 47 insertions, 34 deletions
@@ -1,3 +1,8 @@ +Sat Dec 6 09:22:45 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com> + + * lib/rake: Update to rake 10.4.2 + * test/rake: ditto. + Sat Dec 6 06:48:03 2014 Eric Wong <e@80x24.org> * compile.c (rb_iseq_build_from_ary): remove misc handling diff --git a/lib/rake.rb b/lib/rake.rb index ab04a7f385..7366862ad0 100644 --- a/lib/rake.rb +++ b/lib/rake.rb @@ -21,7 +21,7 @@ #++ module Rake - VERSION = '10.4.0' + VERSION = '10.4.2' end require 'rake/version' diff --git a/lib/rake/application.rb b/lib/rake/application.rb index 96f907b077..bd72a2efae 100644 --- a/lib/rake/application.rb +++ b/lib/rake/application.rb @@ -20,9 +20,6 @@ module Rake include TaskManager include TraceOutput - # The command-line arguments rake is using (defaults to ARGV) - attr_reader :argv # :nodoc: - # The name of the application (typically 'rake') attr_reader :name @@ -48,7 +45,6 @@ module Rake # Initialize a Rake::Application object. def initialize super - @argv = ARGV.dup @name = 'rake' @rakefiles = DEFAULT_RAKEFILES.dup @rakefile = nil @@ -77,8 +73,6 @@ module Rake # call +top_level+ to run your top level tasks. def run standard_exception_handling do - @argv = argv - init load_rakefile top_level @@ -89,8 +83,8 @@ module Rake def init(app_name='rake') standard_exception_handling do @name = app_name - handle_options - collect_command_line_tasks + args = handle_options + collect_command_line_tasks(args) end end @@ -622,7 +616,9 @@ module Rake end private :select_trace_output - # Read and handle the command line options. + # Read and handle the command line options. Returns the command line + # arguments that we didn't understand, which should (in theory) be just + # task names and env vars. def handle_options # :nodoc: options.rakelib = ['rakelib'] options.trace_output = $stderr @@ -639,7 +635,7 @@ module Rake standard_rake_options.each { |args| opts.on(*args) } opts.environment('RAKEOPT') - end.parse! @argv + end.parse(ARGV) end # Similar to the regular Ruby +require+ command, but will check @@ -733,9 +729,14 @@ module Rake # Collect the list of tasks on the command line. If no tasks are # given, return a list containing only the default task. # Environmental assignments are processed at this time as well. - def collect_command_line_tasks # :nodoc: + # + # `args` is the list of arguments to peruse to get the list of tasks. + # It should be the command line that was given to rake, less any + # recognised command-line options, which OptionParser.parse will + # have taken care of already. + def collect_command_line_tasks(args) # :nodoc: @top_level_tasks = [] - @argv.each do |arg| + args.each do |arg| if arg =~ /^(\w+)=(.*)$/m ENV[$1] = $2 else diff --git a/lib/rake/dsl_definition.rb b/lib/rake/dsl_definition.rb index b521b7dc5c..26f4ca828c 100644 --- a/lib/rake/dsl_definition.rb +++ b/lib/rake/dsl_definition.rb @@ -159,6 +159,8 @@ module Rake end # Describes the next rake task. Duplicate descriptions are discarded. + # Descriptions are shown with <code>rake -T</code> (up to the first + # sentence) and <code>rake -D</code> (the entire description). # # Example: # desc "Run the Unit Tests" diff --git a/test/rake/test_rake_application.rb b/test/rake/test_rake_application.rb index 19e5005989..c010889176 100644 --- a/test/rake/test_rake_application.rb +++ b/test/rake/test_rake_application.rb @@ -10,9 +10,9 @@ class TestRakeApplication < Rake::TestCase end def setup_command_line(*options) - @app.argv.clear + ARGV.clear options.each do |option| - @app.argv << option + ARGV << option end end @@ -268,7 +268,7 @@ class TestRakeApplication < Rake::TestCase end def test_load_rakefile_not_found - @app.argv.clear + ARGV.clear Dir.chdir @tempdir ENV['RAKE_SYSTEM'] = 'not_exist' @@ -370,7 +370,7 @@ class TestRakeApplication < Rake::TestCase # HACK no assertions end - def test_handle_options_should_strip_options_from_argv + def test_handle_options_should_not_strip_options_from_argv assert !@app.options.trace valid_option = '--trace' @@ -378,7 +378,7 @@ class TestRakeApplication < Rake::TestCase @app.handle_options - assert !@app.argv.include?(valid_option) + assert ARGV.include?(valid_option) assert @app.options.trace end @@ -406,14 +406,14 @@ class TestRakeApplication < Rake::TestCase setup_command_line("--trace", "sometask") @app.handle_options - assert @app.argv.include?("sometask") + assert ARGV.include?("sometask") assert @app.options.trace end def test_good_run ran = false - @app.argv << '--rakelib=""' + ARGV << '--rakelib=""' @app.options.silent = true @@ -468,7 +468,7 @@ class TestRakeApplication < Rake::TestCase } assert_match(/see full trace/i, err) ensure - @app.argv.clear + ARGV.clear end def test_bad_run_with_trace @@ -479,7 +479,7 @@ class TestRakeApplication < Rake::TestCase } refute_match(/see full trace/i, err) ensure - @app.argv.clear + ARGV.clear end def test_bad_run_with_backtrace @@ -492,7 +492,7 @@ class TestRakeApplication < Rake::TestCase } refute_match(/see full trace/, err) ensure - @app.argv.clear + ARGV.clear end CustomError = Class.new(RuntimeError) @@ -549,7 +549,7 @@ class TestRakeApplication < Rake::TestCase end assert_match(/Secondary Error/, err) ensure - @app.argv.clear + ARGV.clear end def test_run_with_bad_options @@ -559,7 +559,7 @@ class TestRakeApplication < Rake::TestCase capture_io { @app.run } } ensure - @app.argv.clear + ARGV.clear end def test_standard_exception_handling_invalid_option diff --git a/test/rake/test_rake_application_options.rb b/test/rake/test_rake_application_options.rb index a9ae4d9c00..37adfacd7d 100644 --- a/test/rake/test_rake_application_options.rb +++ b/test/rake/test_rake_application_options.rb @@ -457,8 +457,8 @@ class TestRakeApplicationOptions < Rake::TestCase throw :system_exit, :exit end @app.instance_eval do - handle_options - collect_command_line_tasks + args = handle_options + collect_command_line_tasks(args) end @tasks = @app.top_level_tasks @app.options diff --git a/test/rake/test_rake_test_task.rb b/test/rake/test_rake_test_task.rb index 80fe9a28b4..5c4be797c6 100644 --- a/test/rake/test_rake_test_task.rb +++ b/test/rake/test_rake_test_task.rb @@ -97,17 +97,22 @@ class TestRakeTestTask < Rake::TestCase end def test_run_code_rake_default_gem + skip 'this ruby does not have default gems' unless + Gem::Specification.method_defined? :default_specifications_dir + default_spec = Gem::Specification.new 'rake', 0 default_spec.loaded_from = File.join Gem::Specification.default_specifications_dir, 'rake-0.gemspec' - rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], default_spec + begin + rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], default_spec - test_task = Rake::TestTask.new do |t| - t.loader = :rake - end + test_task = Rake::TestTask.new do |t| + t.loader = :rake + end - assert_match(/\A(-I".*?" *)* ".*?"\Z/, test_task.run_code) - ensure - Gem.loaded_specs['rake'] = rake + assert_match(/\A(-I".*?" *)* ".*?"\Z/, test_task.run_code) + ensure + Gem.loaded_specs['rake'] = rake + end end def test_run_code_testrb_ruby_1_8_2 |