diff options
Diffstat (limited to 'test/rake/test_rake_application_options.rb')
-rw-r--r-- | test/rake/test_rake_application_options.rb | 468 |
1 files changed, 0 insertions, 468 deletions
diff --git a/test/rake/test_rake_application_options.rb b/test/rake/test_rake_application_options.rb deleted file mode 100644 index 250302685d..0000000000 --- a/test/rake/test_rake_application_options.rb +++ /dev/null @@ -1,468 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -TESTING_REQUIRE = [] - -class TestRakeApplicationOptions < Rake::TestCase - - def setup - super - - @testkey = ENV['TESTKEY'] - clear_argv - Rake::FileUtilsExt.verbose_flag = false - Rake::FileUtilsExt.nowrite_flag = false - TESTING_REQUIRE.clear - end - - def teardown - ENV['TESTKEY'] = @testkey - clear_argv - Rake::FileUtilsExt.verbose_flag = false - Rake::FileUtilsExt.nowrite_flag = false - - super - end - - def clear_argv - ARGV.pop until ARGV.empty? - end - - def test_default_options - opts = command_line - assert_nil opts.backtrace - assert_nil opts.dryrun - assert_nil opts.ignore_system - assert_nil opts.load_system - assert_nil opts.always_multitask - assert_nil opts.nosearch - assert_equal ['rakelib'], opts.rakelib - assert_nil opts.show_prereqs - assert_nil opts.show_task_pattern - assert_nil opts.show_tasks - assert_nil opts.silent - assert_nil opts.trace - assert_nil opts.thread_pool_size - assert_equal ['rakelib'], opts.rakelib - assert ! Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - - def test_dry_run - flags('--dry-run', '-n') do |opts| - assert opts.dryrun - assert opts.trace - assert Rake::FileUtilsExt.verbose_flag - assert Rake::FileUtilsExt.nowrite_flag - end - end - - def test_describe - flags('--describe') do |opts| - assert_equal :describe, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - end - end - - def test_describe_with_pattern - flags('--describe=X') do |opts| - assert_equal :describe, opts.show_tasks - assert_equal(/X/.to_s, opts.show_task_pattern.to_s) - end - end - - def test_execute - $xyzzy = 0 - flags('--execute=$xyzzy=1', '-e $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_continue - $xyzzy = 0 - flags('--execute-continue=$xyzzy=1', '-E $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - refute_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_print - $xyzzy = 0 - out, = capture_io do - flags('--execute-print=$xyzzy="pugh"', '-p $xyzzy="pugh"') do |opts| - assert_equal 'pugh', $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - assert_match(/^pugh$/, out) - end - - def test_help - out, = capture_io do - flags '--help', '-H', '-h' - end - - assert_match(/\Arake/, out) - assert_match(/\boptions\b/, out) - assert_match(/\btargets\b/, out) - assert_equal :exit, @exit - end - - def test_jobs - flags([]) do |opts| - assert_nil opts.thread_pool_size - end - flags(['--jobs', '0'], ['-j', '0']) do |opts| - assert_equal 0, opts.thread_pool_size - end - flags(['--jobs', '1'], ['-j', '1']) do |opts| - assert_equal 0, opts.thread_pool_size - end - flags(['--jobs', '4'], ['-j', '4']) do |opts| - assert_equal 3, opts.thread_pool_size - end - flags(['--jobs', 'asdas'], ['-j', 'asdas']) do |opts| - assert_equal Rake.suggested_thread_count-1, opts.thread_pool_size - end - flags('--jobs', '-j') do |opts| - assert opts.thread_pool_size > 1_000_000, "thread pool size should be huge (was #{opts.thread_pool_size})" - end - end - - def test_libdir - flags(['--libdir', 'xx'], ['-I', 'xx'], ['-Ixx']) do |opts| - $:.include?('xx') - end - ensure - $:.delete('xx') - end - - def test_multitask - flags('--multitask', '-m') do |opts| - assert_equal opts.always_multitask, true - end - end - - def test_rakefile - flags(['--rakefile', 'RF'], ['--rakefile=RF'], ['-f', 'RF'], ['-fRF']) do |opts| - assert_equal ['RF'], @app.instance_eval { @rakefiles } - end - end - - def test_rakelib - dirs = %w(A B C).join(File::PATH_SEPARATOR) - flags( - ['--rakelibdir', dirs], - ["--rakelibdir=#{dirs}"], - ['-R', dirs], - ["-R#{dirs}"]) do |opts| - assert_equal ['A', 'B', 'C'], opts.rakelib - end - end - - def test_require - $LOAD_PATH.unshift @tempdir - - open 'reqfile.rb', 'w' do |io| io << 'TESTING_REQUIRE << 1' end - open 'reqfile2.rb', 'w' do |io| io << 'TESTING_REQUIRE << 2' end - open 'reqfile3.rake', 'w' do |io| io << 'TESTING_REQUIRE << 3' end - - flags(['--require', 'reqfile'], '-rreqfile2', '-rreqfile3') - - assert_includes TESTING_REQUIRE, 1 - assert_includes TESTING_REQUIRE, 2 - assert_includes TESTING_REQUIRE, 3 - - assert_equal 3, TESTING_REQUIRE.size - ensure - $LOAD_PATH.delete @tempdir - end - - def test_missing_require - ex = assert_raises(LoadError) do - flags(['--require', 'test/missing']) do |opts| - end - end - assert_match(/such file/, ex.message) - assert_match(/test\/missing/, ex.message) - end - - def test_prereqs - flags('--prereqs', '-P') do |opts| - assert opts.show_prereqs - end - end - - def test_quiet - Rake::FileUtilsExt.verbose_flag = true - flags('--quiet', '-q') do |opts| - assert ! Rake::FileUtilsExt.verbose_flag, "verbose flag should be false" - assert ! opts.silent, "should not be silent" - end - end - - def test_no_search - flags('--nosearch', '--no-search', '-N') do |opts| - assert opts.nosearch - end - end - - def test_silent - Rake::FileUtilsExt.verbose_flag = true - flags('--silent', '-s') do |opts| - assert ! Rake::FileUtilsExt.verbose_flag, "verbose flag should be false" - assert opts.silent, "should be silent" - end - end - - def test_system - flags('--system', '-g') do |opts| - assert opts.load_system - end - end - - def test_no_system - flags('--no-system', '-G') do |opts| - assert opts.ignore_system - end - end - - def test_trace - flags('--trace', '-t') 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 ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_stdout - 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 - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_stderr - 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 - assert Rake::FileUtilsExt.verbose_flag - assert ! Rake::FileUtilsExt.nowrite_flag - end - end - - def test_trace_with_error - ex = assert_raises(Rake::CommandLineOptionError) do - flags('--trace=xyzzy') do |opts| end - end - 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" - end - end - - def test_backtrace_with_stdout - flags('--backtrace=stdout') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stdout, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_stderr - flags('--backtrace=stderr') do |opts| - assert opts.backtrace, "should enable backtrace option" - assert_equal $stderr, opts.trace_output - assert ! opts.trace, "should not enable trace option" - end - end - - def test_backtrace_with_error - ex = assert_raises(Rake::CommandLineOptionError) do - flags('--backtrace=xyzzy') do |opts| end - end - 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 - end - end - - def test_tasks - flags('--tasks', '-T') do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - assert_equal nil, opts.show_all_tasks - end - flags(['--tasks', 'xyz'], ['-Txyz']) do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal nil, opts.show_all_tasks - end - flags(['--tasks', 'xyz', '--comments']) do |opts| - assert_equal :tasks, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal false, opts.show_all_tasks - end - end - - def test_where - flags('--where', '-W') do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - assert_equal true, opts.show_all_tasks - end - flags(['--where', 'xyz'], ['-Wxyz']) do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal true, opts.show_all_tasks - end - flags(['--where', 'xyz', '--comments'], ['-Wxyz', '--comments']) do |opts| - assert_equal :lines, opts.show_tasks - assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s) - assert_equal false, opts.show_all_tasks - end - end - - def test_no_deprecated_messages - flags('--no-deprecation-warnings', '-X') do |opts| - assert opts.ignore_deprecate - end - end - - def test_verbose - capture_io do - flags('--verbose', '-v') do |opts| - assert Rake::FileUtilsExt.verbose_flag, "verbose should be true" - assert ! opts.silent, "opts should not be silent" - end - end - end - - def test_version - out, _ = capture_io do - flags '--version', '-V' - end - - assert_match(/\bversion\b/, out) - assert_match(/\b#{RAKEVERSION}\b/, out) - assert_equal :exit, @exit - end - - def test_bad_option - _, err = capture_io do - ex = assert_raises(OptionParser::InvalidOption) do - flags('--bad-option') - end - - if ex.message =~ /^While/ # Ruby 1.9 error message - assert_match(/while parsing/i, ex.message) - else # Ruby 1.8 error message - assert_match(/(invalid|unrecognized) option/i, ex.message) - assert_match(/--bad-option/, ex.message) - end - end - - assert_equal '', err - end - - def test_task_collection - command_line("a", "b") - assert_equal ["a", "b"], @tasks.sort - end - - def test_default_task_collection - command_line() - assert_equal ["default"], @tasks - end - - def test_environment_definition - ENV.delete('TESTKEY') - command_line("TESTKEY=12") - assert_equal '12', ENV['TESTKEY'] - end - - def test_multiline_environment_definition - ENV.delete('TESTKEY') - command_line("TESTKEY=a\nb\n") - assert_equal "a\nb\n", ENV['TESTKEY'] - end - - def test_environment_and_tasks_together - ENV.delete('TESTKEY') - command_line("a", "b", "TESTKEY=12") - assert_equal ["a", "b"], @tasks.sort - assert_equal '12', ENV['TESTKEY'] - end - - def test_rake_explicit_task_library - Rake.add_rakelib 'app/task', 'other' - - libs = Rake.application.options.rakelib - - assert libs.include?("app/task") - assert libs.include?("other") - end - - private - - def flags(*sets) - sets.each do |set| - ARGV.clear - - @exit = catch(:system_exit) { command_line(*set) } - - yield(@app.options) if block_given? - end - end - - def command_line(*options) - options.each do |opt| ARGV << opt end - @app = Rake::Application.new - def @app.exit(*args) - throw :system_exit, :exit - end - @app.instance_eval do - args = handle_options - collect_command_line_tasks(args) - end - @tasks = @app.top_level_tasks - @app.options - end -end |