summaryrefslogtreecommitdiff
path: root/test/rake/test_rake_file_utils.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/rake/test_rake_file_utils.rb')
-rw-r--r--test/rake/test_rake_file_utils.rb314
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