mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* lib/rake/*: Updated to rake 0.9.5
* test/rake/*: ditto. * NEWS: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									40bae2f67c
								
							
						
					
					
						commit
						d1d4490a57
					
				
					 18 changed files with 181 additions and 41 deletions
				
			
		|  | @ -1,3 +1,9 @@ | |||
| Fri Nov 30 04:16:29 2012  Eric Hodel  <drbrain@segment7.net> | ||||
| 
 | ||||
| 	* lib/rake/*:  Updated to rake 0.9.5 | ||||
| 	* test/rake/*:  ditto. | ||||
| 	* NEWS:  ditto. | ||||
| 
 | ||||
| Fri Nov 30 02:53:47 2012  Aaron Patterson <aaron@tenderlovemaking.com> | ||||
| 
 | ||||
| 	* vm.c: add a return hook when a method raises an exception. | ||||
|  |  | |||
							
								
								
									
										6
									
								
								NEWS
									
										
									
									
									
								
							
							
						
						
									
										6
									
								
								NEWS
									
										
									
									
									
								
							|  | @ -269,14 +269,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.4. | ||||
|   * rake has been updated to version 0.9.5. | ||||
| 
 | ||||
|     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_4_rdoc.html for a list | ||||
|     of changes in rake 0.9.3 and 0.9.4. | ||||
|     http://rake.rubyforge.org/doc/release_notes/rake-0_9_5_rdoc.html for a list | ||||
|     of changes in rake 0.9.3, 0.9.4 and 0.9.5. | ||||
| 
 | ||||
| * rdoc | ||||
|   * rdoc has been updated to version 4.0 | ||||
|  |  | |||
|  | @ -43,6 +43,7 @@ require 'rake/win32' | |||
| require 'rake/task_argument_error' | ||||
| require 'rake/rule_recursion_overflow_error' | ||||
| require 'rake/rake_module' | ||||
| require 'rake/trace_output' | ||||
| require 'rake/pseudo_status' | ||||
| require 'rake/task_arguments' | ||||
| require 'rake/invocation_chain' | ||||
|  |  | |||
|  | @ -5,6 +5,7 @@ require 'rake/task_manager' | |||
| require 'rake/file_list' | ||||
| require 'rake/thread_pool' | ||||
| require 'rake/thread_history_display' | ||||
| require 'rake/trace_output' | ||||
| require 'rake/win32' | ||||
| 
 | ||||
| module Rake | ||||
|  | @ -17,6 +18,7 @@ module Rake | |||
|   # | ||||
|   class Application | ||||
|     include TaskManager | ||||
|     include TraceOutput | ||||
| 
 | ||||
|     # The name of the application (typically 'rake') | ||||
|     attr_reader :name | ||||
|  | @ -176,7 +178,7 @@ module Rake | |||
|       if options.backtrace | ||||
|         trace ex.backtrace.join("\n") | ||||
|       else | ||||
|         trace Backtrace.collapse(ex.backtrace) | ||||
|         trace Backtrace.collapse(ex.backtrace).join("\n") | ||||
|       end | ||||
|       trace "Tasks: #{ex.chain}" if has_chain?(ex) | ||||
|       trace "(See full trace by running task with --trace)" unless options.backtrace | ||||
|  | @ -314,9 +316,9 @@ module Rake | |||
|       end | ||||
|     end | ||||
| 
 | ||||
|     def trace(*str) | ||||
|     def trace(*strings) | ||||
|       options.trace_output ||= $stderr | ||||
|       options.trace_output.puts(*str) | ||||
|       trace_on(options.trace_output, *strings) | ||||
|     end | ||||
| 
 | ||||
|     def sort_options(options) | ||||
|  | @ -336,7 +338,7 @@ module Rake | |||
|               options.show_all_tasks = value | ||||
|             } | ||||
|           ], | ||||
|           ['--backtrace [OUT]', "Enable full backtrace.  OUT can be stderr (default) or stdout.", | ||||
|           ['--backtrace=[OUT]', "Enable full backtrace.  OUT can be stderr (default) or stdout.", | ||||
|             lambda { |value| | ||||
|               options.backtrace = true | ||||
|               select_trace_output(options, 'backtrace', value) | ||||
|  | @ -467,7 +469,7 @@ module Rake | |||
|               select_tasks_to_show(options, :tasks, value) | ||||
|             } | ||||
|           ], | ||||
|           ['--trace', '-t [OUT]', "Turn on invoke/execute tracing, enable full backtrace. OUT can be stderr (default) or stdout.", | ||||
|           ['--trace=[OUT]', '-t', "Turn on invoke/execute tracing, enable full backtrace. OUT can be stderr (default) or stdout.", | ||||
|             lambda { |value| | ||||
|               options.trace = true | ||||
|               options.backtrace = true | ||||
|  |  | |||
|  | @ -385,7 +385,7 @@ module Rake | |||
|       end | ||||
| 
 | ||||
|       # Get a sorted list of files matching the pattern. This method | ||||
|       # should be prefered to Dir[pattern] and Dir.glob[pattern] because | ||||
|       # 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 | ||||
|  |  | |||
|  | @ -105,7 +105,7 @@ module Rake | |||
| 
 | ||||
|     # Argument description (nil if none). | ||||
|     def arg_description # :nodoc: | ||||
|       @arg_names ? "[#{(arg_names || []).join(',')}]" : nil | ||||
|       @arg_names ? "[#{arg_names.join(',')}]" : nil | ||||
|     end | ||||
| 
 | ||||
|     # Name of arguments for this task. | ||||
|  | @ -182,18 +182,19 @@ module Rake | |||
|       if application.options.always_multitask | ||||
|         invoke_prerequisites_concurrently(task_args, invocation_chain) | ||||
|       else | ||||
|         prerequisite_tasks.each { |prereq| | ||||
|           prereq_args = task_args.new_scope(prereq.arg_names) | ||||
|           prereq.invoke_with_call_chain(prereq_args, invocation_chain) | ||||
|         prerequisite_tasks.each { |p| | ||||
|           prereq_args = task_args.new_scope(p.arg_names) | ||||
|           p.invoke_with_call_chain(prereq_args, invocation_chain) | ||||
|         } | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     # Invoke all the prerequisites of a task in parallel. | ||||
|     def invoke_prerequisites_concurrently(args, invocation_chain) # :nodoc: | ||||
|       futures = @prerequisites.collect do |p| | ||||
|     def invoke_prerequisites_concurrently(task_args, invocation_chain) # :nodoc: | ||||
|       futures = prerequisite_tasks.collect do |p| | ||||
|         prereq_args = task_args.new_scope(p.arg_names) | ||||
|         application.thread_pool.future(p) do |r| | ||||
|           application[r, @scope].invoke_with_call_chain(args, invocation_chain) | ||||
|           r.invoke_with_call_chain(prereq_args, invocation_chain) | ||||
|         end | ||||
|       end | ||||
|       futures.each { |f| f.value } | ||||
|  |  | |||
							
								
								
									
										19
									
								
								lib/rake/trace_output.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								lib/rake/trace_output.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| module Rake | ||||
|   module TraceOutput | ||||
| 
 | ||||
|     # Write trace output to output stream +out+. | ||||
|     # | ||||
|     # The write is done as a single IO call (to print) to lessen the | ||||
|     # chance that the trace output is interrupted by other tasks also | ||||
|     # producing output. | ||||
|     def trace_on(out, *strings) | ||||
|       sep = $\ || "\n" | ||||
|       if strings.empty? | ||||
|         output = sep | ||||
|       else | ||||
|         output = strings.map { |s| s.end_with?(sep) ? s : s + sep }.join | ||||
|       end | ||||
|       out.print(output) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | @ -1,10 +1,13 @@ | |||
| module Rake | ||||
|   VERSION = '0.9.5' | ||||
| 
 | ||||
|   module Version # :nodoc: all | ||||
|     MAJOR, MINOR, BUILD, = Rake::VERSION.split '.' | ||||
| 
 | ||||
|     NUMBERS = [ | ||||
|       MAJOR = 0, | ||||
|       MINOR = 9, | ||||
|       BUILD = 4, | ||||
|       MAJOR, | ||||
|       MINOR, | ||||
|       BUILD, | ||||
|     ] | ||||
|   end | ||||
|   VERSION = "0.9.4" | ||||
| end | ||||
|  |  | |||
|  | @ -31,6 +31,19 @@ class Rake::TestCase < MiniTest::Unit::TestCase | |||
|   def setup | ||||
|     ARGV.clear | ||||
| 
 | ||||
|     test_dir = File.basename File.dirname File.expand_path __FILE__ | ||||
| 
 | ||||
|     @rake_root = if test_dir == 'test' then | ||||
|                    # rake repository | ||||
|                    File.expand_path '../../', __FILE__ | ||||
|                  else | ||||
|                    # ruby repository | ||||
|                    File.expand_path '../../../', __FILE__ | ||||
|                  end | ||||
| 
 | ||||
|     @rake_exec = File.join @rake_root, 'bin', 'rake' | ||||
|     @rake_lib  = File.join @rake_root, 'lib' | ||||
| 
 | ||||
|     @orig_PWD = Dir.pwd | ||||
|     @orig_APPDATA      = ENV['APPDATA'] | ||||
|     @orig_HOME         = ENV['HOME'] | ||||
|  |  | |||
|  | @ -309,6 +309,37 @@ class TestRakeApplication < Rake::TestCase | |||
|     assert @app.options.trace | ||||
|   end | ||||
| 
 | ||||
|   def test_handle_options_trace_default_is_stderr | ||||
|     ARGV.clear | ||||
|     ARGV << "--trace" | ||||
| 
 | ||||
|     @app.handle_options | ||||
| 
 | ||||
|     assert_equal STDERR, @app.options.trace_output | ||||
|     assert @app.options.trace | ||||
|   end | ||||
| 
 | ||||
|   def test_handle_options_trace_overrides_to_stdout | ||||
|     ARGV.clear | ||||
|     ARGV << "--trace=stdout" | ||||
| 
 | ||||
|     @app.handle_options | ||||
| 
 | ||||
|     assert_equal STDOUT, @app.options.trace_output | ||||
|     assert @app.options.trace | ||||
|   end | ||||
| 
 | ||||
|   def test_handle_options_trace_does_not_eat_following_task_names | ||||
|     assert !@app.options.trace | ||||
| 
 | ||||
|     ARGV.clear | ||||
|     ARGV << "--trace" << "sometask" | ||||
| 
 | ||||
|     @app.handle_options | ||||
|     assert ARGV.include?("sometask") | ||||
|     assert @app.options.trace | ||||
|   end | ||||
| 
 | ||||
|   def test_good_run | ||||
|     ran = false | ||||
| 
 | ||||
|  |  | |||
|  | @ -228,7 +228,7 @@ class TestRakeApplicationOptions < Rake::TestCase | |||
|   end | ||||
| 
 | ||||
|   def test_trace_with_stdout | ||||
|     flags('--trace=stdout', '-tstdout', '-t stdout') do |opts| | ||||
|     flags('--trace=stdout', '-tstdout') do |opts| | ||||
|       assert opts.trace, "should enable trace option" | ||||
|       assert opts.backtrace, "should enabled backtrace option" | ||||
|       assert_equal $stdout, opts.trace_output | ||||
|  | @ -238,7 +238,7 @@ class TestRakeApplicationOptions < Rake::TestCase | |||
|   end | ||||
| 
 | ||||
|   def test_trace_with_stderr | ||||
|     flags('--trace=stderr', '-tstderr', '-t stderr') do |opts| | ||||
|     flags('--trace=stderr', '-tstderr') do |opts| | ||||
|       assert opts.trace, "should enable trace option" | ||||
|       assert opts.backtrace, "should enabled backtrace option" | ||||
|       assert_equal $stderr, opts.trace_output | ||||
|  | @ -254,13 +254,21 @@ class TestRakeApplicationOptions < Rake::TestCase | |||
|     assert_match(/un(known|recognized).*\btrace\b.*xyzzy/i, ex.message) | ||||
|   end | ||||
| 
 | ||||
|   def test_trace_with_following_task_name | ||||
|     flags(['--trace', 'taskname'], ['-t', 'taskname']) do |opts| | ||||
|       assert opts.trace, "should enable trace option" | ||||
|       assert opts.backtrace, "should enabled backtrace option" | ||||
|       assert_equal $stderr, opts.trace_output | ||||
|       assert Rake::FileUtilsExt.verbose_flag | ||||
|       assert_equal ['taskname'], @app.top_level_tasks | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def test_backtrace | ||||
|     flags('--backtrace') do |opts| | ||||
|       assert opts.backtrace, "should enable backtrace option" | ||||
|       assert_equal $stderr, opts.trace_output | ||||
|       assert ! opts.trace, "should not enable trace option" | ||||
|       assert ! Rake::FileUtilsExt.verbose_flag | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  | @ -269,7 +277,6 @@ class TestRakeApplicationOptions < Rake::TestCase | |||
|       assert opts.backtrace, "should enable backtrace option" | ||||
|       assert_equal $stdout, opts.trace_output | ||||
|       assert ! opts.trace, "should not enable trace option" | ||||
|       assert ! Rake::FileUtilsExt.verbose_flag | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  | @ -278,7 +285,6 @@ class TestRakeApplicationOptions < Rake::TestCase | |||
|       assert opts.backtrace, "should enable backtrace option" | ||||
|       assert_equal $stderr, opts.trace_output | ||||
|       assert ! opts.trace, "should not enable trace option" | ||||
|       assert ! Rake::FileUtilsExt.verbose_flag | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  | @ -289,6 +295,15 @@ class TestRakeApplicationOptions < Rake::TestCase | |||
|     assert_match(/un(known|recognized).*\bbacktrace\b.*xyzzy/i, ex.message) | ||||
|   end | ||||
| 
 | ||||
|   def test_backtrace_with_following_task_name | ||||
|     flags(['--backtrace', 'taskname']) do |opts| | ||||
|       assert ! opts.trace, "should enable trace option" | ||||
|       assert opts.backtrace, "should enabled backtrace option" | ||||
|       assert_equal $stderr, opts.trace_output | ||||
|       assert_equal ['taskname'], @app.top_level_tasks | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def test_trace_rules | ||||
|     flags('--rules') do |opts| | ||||
|       assert opts.trace_rules | ||||
|  |  | |||
|  | @ -4,9 +4,9 @@ require 'open3' | |||
| class TestRakeBacktrace < Rake::TestCase | ||||
|   # TODO: factor out similar code in test_rake_functional.rb | ||||
|   def rake(*args) | ||||
|     lib = File.expand_path('../../../lib', __FILE__) | ||||
|     bin_rake = File.expand_path('../../../bin/rake', __FILE__) | ||||
|     Open3.popen3(RUBY, "-I", lib, bin_rake, *args) { |_, _, err, _| err.read } | ||||
|     Open3.popen3(RUBY, "-I", @rake_lib, @rake_exec, *args) { |_, _, err, _| | ||||
|       err.read | ||||
|     } | ||||
|   end | ||||
| 
 | ||||
|   def invoke(task_name) | ||||
|  |  | |||
|  | @ -116,7 +116,7 @@ class TestRakeFileTask < Rake::TestCase | |||
|   end | ||||
| 
 | ||||
|   def load_phony | ||||
|     load File.expand_path('../../../lib/rake/phony.rb', __FILE__) | ||||
|     load File.join(@rake_lib, "rake/phony.rb") | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  |  | |||
|  | @ -5,9 +5,9 @@ require 'open3' | |||
| class TestRakeFunctional < Rake::TestCase | ||||
| 
 | ||||
|   def setup | ||||
|     @rake_path = File.expand_path("../../../bin/rake", __FILE__) | ||||
|     lib_path = File.expand_path("../../../lib", __FILE__) | ||||
|     @ruby_options = ["-I#{lib_path}", "-I."] | ||||
|     super | ||||
| 
 | ||||
|     @ruby_options = ["-I#{@rake_lib}", "-I."] | ||||
|     @verbose = ENV['VERBOSE'] | ||||
| 
 | ||||
|     if @verbose | ||||
|  | @ -17,8 +17,6 @@ class TestRakeFunctional < Rake::TestCase | |||
|       puts @__name__ | ||||
|       puts '-' * 80 | ||||
|     end | ||||
| 
 | ||||
|     super | ||||
|   end | ||||
| 
 | ||||
|   def test_rake_default | ||||
|  | @ -466,7 +464,7 @@ class TestRakeFunctional < Rake::TestCase | |||
|   # command line ruby options are included.  Output is captured in | ||||
|   # @out and @err | ||||
|   def rake(*rake_options) | ||||
|     run_ruby @ruby_options + [@rake_path] + rake_options | ||||
|     run_ruby @ruby_options + [@rake_exec] + rake_options | ||||
|   end | ||||
| 
 | ||||
|   # Low level ruby command runner ... | ||||
|  |  | |||
|  | @ -10,7 +10,7 @@ class TestRakeRakeTestLoader < Rake::TestCase | |||
| 
 | ||||
|     ARGV.replace %w[foo.rb test_*.rb -v] | ||||
| 
 | ||||
|     load File.expand_path('../../../lib/rake/rake_test_loader.rb', __FILE__) | ||||
|     load File.join(@rake_lib, 'rake/rake_test_loader.rb') | ||||
| 
 | ||||
|     assert_equal %w[-v], ARGV | ||||
|   ensure | ||||
|  |  | |||
|  | @ -4,9 +4,9 @@ require 'open3' | |||
| class TestRakeReduceCompat < Rake::TestCase | ||||
|   # TODO: factor out similar code in test_rake_functional.rb | ||||
|   def rake(*args) | ||||
|     lib =  File.expand_path('../../../lib', __FILE__) | ||||
|     bin_rake =  File.expand_path('../../../bin/rake', __FILE__) | ||||
|     Open3.popen3(RUBY, "-I", lib, bin_rake, *args) { |_, out, _, _| out.read } | ||||
|     Open3.popen3(RUBY, "-I", @rake_lib, @rake_exec, *args) { |_, out, _, _| | ||||
|       out.read | ||||
|     } | ||||
|   end | ||||
| 
 | ||||
|   def invoke_normal(task_name) | ||||
|  |  | |||
|  | @ -142,7 +142,7 @@ class TestRakeTaskWithArguments < Rake::TestCase | |||
|     assert_equal "1.2", value | ||||
|   end | ||||
| 
 | ||||
|   def test_args_not_passed_if_no_prereq_names | ||||
|   def test_args_not_passed_if_no_prereq_names_on_task | ||||
|     pre = task(:pre) { |t, args| | ||||
|       assert_equal({}, args.to_hash) | ||||
|       assert_equal "bill", args.name | ||||
|  | @ -151,6 +151,15 @@ class TestRakeTaskWithArguments < Rake::TestCase | |||
|     t.invoke("bill", "1.2") | ||||
|   end | ||||
| 
 | ||||
|   def test_args_not_passed_if_no_prereq_names_on_multitask | ||||
|     pre = task(:pre) { |t, args| | ||||
|       assert_equal({}, args.to_hash) | ||||
|       assert_equal "bill", args.name | ||||
|     } | ||||
|     t = multitask(:t, [:name, :rev] => [:pre]) | ||||
|     t.invoke("bill", "1.2") | ||||
|   end | ||||
| 
 | ||||
|   def test_args_not_passed_if_no_arg_names | ||||
|     pre = task(:pre, :rev) { |t, args| | ||||
|       assert_equal({}, args.to_hash) | ||||
|  | @ -170,4 +179,3 @@ class TestRakeTaskWithArguments < Rake::TestCase | |||
|     # HACK no assertions | ||||
|   end | ||||
| end | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										43
									
								
								test/rake/test_trace_output.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								test/rake/test_trace_output.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | |||
| require File.expand_path('../helper', __FILE__) | ||||
| require 'stringio' | ||||
| 
 | ||||
| class TestTraceOutput < Rake::TestCase | ||||
|   include Rake::TraceOutput | ||||
| 
 | ||||
|   class PrintSpy | ||||
|     attr_reader :result, :calls | ||||
|     def initialize | ||||
|       @result = "" | ||||
|       @calls = 0 | ||||
|     end | ||||
|     def print(string) | ||||
|       @result << string | ||||
|       @calls += 1 | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def test_trace_issues_single_io_for_args_with_empty_args | ||||
|     spy = PrintSpy.new | ||||
|     trace_on(spy) | ||||
|     assert_equal "\n", spy.result | ||||
|     assert_equal 1, spy.calls | ||||
|   end | ||||
| 
 | ||||
|   def test_trace_issues_single_io_for_args_multiple_strings | ||||
|     spy = PrintSpy.new | ||||
|     trace_on(spy, "HI\n", "LO") | ||||
|     assert_equal "HI\nLO\n", spy.result | ||||
|     assert_equal 1, spy.calls | ||||
|   end | ||||
| 
 | ||||
|   def test_trace_issues_single_io_for_args_multiple_strings_and_alternate_sep | ||||
|     old_sep = $\ | ||||
|     $\ = "\r" | ||||
|     spy = PrintSpy.new | ||||
|     trace_on(spy, "HI\r", "LO") | ||||
|     assert_equal "HI\rLO\r", spy.result | ||||
|     assert_equal 1, spy.calls | ||||
|   ensure | ||||
|     $\ = old_sep | ||||
|   end | ||||
| end | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 drbrain
						drbrain