diff options
Diffstat (limited to 'test/rake/test_rake_file_utils.rb')
-rw-r--r-- | test/rake/test_rake_file_utils.rb | 314 |
1 files changed, 0 insertions, 314 deletions
diff --git a/test/rake/test_rake_file_utils.rb b/test/rake/test_rake_file_utils.rb deleted file mode 100644 index 90e01dfbf8..0000000000 --- a/test/rake/test_rake_file_utils.rb +++ /dev/null @@ -1,314 +0,0 @@ -require File.expand_path('../helper', __FILE__) -require 'fileutils' -require 'stringio' - -class TestRakeFileUtils < Rake::TestCase - def setup - super - @rake_test_sh = ENV['RAKE_TEST_SH'] - end - - def teardown - FileUtils::LN_SUPPORTED[0] = true - RakeFileUtils.verbose_flag = Rake::FileUtilsExt::DEFAULT - ENV['RAKE_TEST_SH'] = @rake_test_sh - - super - end - - def test_rm_one_file - create_file("a") - FileUtils.rm_rf "a" - refute File.exist?("a") - end - - def test_rm_two_files - create_file("a") - create_file("b") - FileUtils.rm_rf ["a", "b"] - refute File.exist?("a") - refute File.exist?("b") - end - - def test_rm_filelist - list = Rake::FileList.new << "a" << "b" - list.each { |fn| create_file(fn) } - FileUtils.rm_r list - refute File.exist?("a") - refute File.exist?("b") - end - - def test_ln - open("a", "w") { |f| f.puts "TEST_LN" } - - Rake::FileUtilsExt.safe_ln("a", "b", :verbose => false) - - assert_equal "TEST_LN\n", File.read('b') - end - - class BadLink - include Rake::FileUtilsExt - attr_reader :cp_args - - def initialize(klass) - @failure_class = klass - end - - def cp(*args) - @cp_args = args - end - - def ln(*args) - fail @failure_class, "ln not supported" - end - - public :safe_ln - end - - def test_safe_ln_failover_to_cp_on_standard_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(StandardError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - c.safe_ln "x", "y" - assert_equal ['x', 'y'], c.cp_args - end - - def test_safe_ln_failover_to_cp_on_not_implemented_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(NotImplementedError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - end - - def test_safe_ln_fails_on_script_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(ScriptError) - assert_raises(ScriptError) do c.safe_ln "a", "b" end - end - - def test_verbose - verbose true - assert_equal true, verbose - verbose false - assert_equal false, verbose - verbose(true) { - assert_equal true, verbose - } - assert_equal false, verbose - end - - def test_nowrite - nowrite true - assert_equal true, nowrite - nowrite false - assert_equal false, nowrite - nowrite(true) { - assert_equal true, nowrite - } - assert_equal false, nowrite - end - - def test_file_utils_methods_are_available_at_top_level - create_file("a") - - capture_io do - rm_rf "a" - end - - refute File.exist?("a") - end - - def test_fileutils_methods_dont_leak - obj = Object.new - assert_raises(NoMethodError) { obj.copy } # from FileUtils - assert_raises(NoMethodError) { obj.ruby "-v" } # from RubyFileUtils - end - - def test_sh - shellcommand - - verbose(false) { sh %{#{Rake::TestCase::RUBY} shellcommand.rb} } - assert true, "should not fail" - end - - def test_sh_with_a_single_string_argument - check_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - sh %{#{RUBY} check_expansion.rb #{env_var} someval} - } - end - - def test_sh_with_multiple_arguments - check_no_expansion - ENV['RAKE_TEST_SH'] = 'someval' - - verbose(false) { - sh RUBY, 'check_no_expansion.rb', env_var, 'someval' - } - end - - def test_sh_failure - shellcommand - - assert_raises(RuntimeError) { - verbose(false) { sh %{#{RUBY} shellcommand.rb 1} } - } - end - - def test_sh_special_handling - shellcommand - - count = 0 - verbose(false) { - sh(%{#{RUBY} shellcommand.rb}) do |ok, res| - assert(ok) - assert_equal 0, res.exitstatus - count += 1 - end - sh(%{#{RUBY} shellcommand.rb 1}) do |ok, res| - assert(!ok) - assert_equal 1, res.exitstatus - count += 1 - end - } - assert_equal 2, count, "Block count should be 2" - end - - def test_sh_noop - shellcommand - - verbose(false) { sh %{shellcommand.rb 1}, :noop=>true } - assert true, "should not fail" - end - - def test_sh_bad_option - shellcommand - - ex = assert_raises(ArgumentError) { - verbose(false) { sh %{shellcommand.rb}, :bad_option=>true } - } - assert_match(/bad_option/, ex.message) - end - - def test_sh_verbose - shellcommand - - _, err = capture_io do - verbose(true) { - sh %{shellcommand.rb}, :noop=>true - } - end - - assert_equal "shellcommand.rb\n", err - end - - def test_sh_verbose_false - shellcommand - - _, err = capture_io do - verbose(false) { - sh %{shellcommand.rb}, :noop=>true - } - end - - 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 - - ENV['RAKE_TEST_SH'] = 'someval' - - verbose(false) { - replace_ruby { - ruby %{check_expansion.rb #{env_var} someval} - } - } - end - - def test_ruby_with_multiple_arguments - check_no_expansion - - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - replace_ruby { - ruby 'check_no_expansion.rb', env_var, 'someval' - } - } - end - - def test_split_all - assert_equal ['a'], Rake::FileUtilsExt.split_all('a') - assert_equal ['..'], Rake::FileUtilsExt.split_all('..') - assert_equal ['/'], Rake::FileUtilsExt.split_all('/') - assert_equal ['a', 'b'], Rake::FileUtilsExt.split_all('a/b') - assert_equal ['/', 'a', 'b'], Rake::FileUtilsExt.split_all('/a/b') - assert_equal ['..', 'a', 'b'], Rake::FileUtilsExt.split_all('../a/b') - end - - def command(name, text) - open name, 'w', 0750 do |io| - io << text - end - end - - def check_no_expansion - command 'check_no_expansion.rb', <<-CHECK_EXPANSION -if ARGV[0] != ARGV[1] - exit 0 -else - exit 1 -end - CHECK_EXPANSION - end - - def check_expansion - command 'check_expansion.rb', <<-CHECK_EXPANSION -if ARGV[0] != ARGV[1] - exit 1 -else - exit 0 -end - CHECK_EXPANSION - end - - def replace_ruby - ruby = FileUtils::RUBY - FileUtils.send :remove_const, :RUBY - FileUtils.const_set :RUBY, RUBY - yield - ensure - FileUtils.send :remove_const, :RUBY - FileUtils.const_set:RUBY, ruby - end - - def shellcommand - command 'shellcommand.rb', <<-SHELLCOMMAND -#!/usr/bin/env ruby - -exit((ARGV[0] || "0").to_i) - SHELLCOMMAND - end - - def env_var - windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH' - end - - def windows? - ! File::ALT_SEPARATOR.nil? - end - -end |