From fb2008a73a46066481b77f53c62de8630a153efe Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 13 Nov 2014 16:05:37 +0000 Subject: * test/lib/envutil.rb: Moved from test/ruby/. * test/lib/find_executable.rb: Ditto. * test/lib/memory_status.rb: Ditto. * test/lib/test/unit.rb: require envutil. * test/: Don't require envutil in test files. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/-ext-/bug_reporter/test_bug_reporter.rb | 1 - test/-ext-/exception/test_data_error.rb | 1 - test/-ext-/exception/test_ensured.rb | 1 - test/-ext-/marshal/test_usrmarshal.rb | 1 - test/-ext-/string/test_modify_expand.rb | 1 - test/-ext-/struct/test_member.rb | 1 - test/-ext-/test_bug-3571.rb | 1 - test/-ext-/test_recursion.rb | 1 - test/-ext-/tracepoint/test_tracepoint.rb | 1 - test/-ext-/win32/test_dln.rb | 1 - test/-ext-/win32/test_fd_setsize.rb | 1 - test/bigdecimal/test_bigdecimal.rb | 1 - test/bigdecimal/test_bigmath.rb | 1 - test/cgi/test_cgi_multipart.rb | 1 - test/drb/drbtest.rb | 1 - test/dtrace/helper.rb | 1 - test/fiddle/helper.rb | 1 - test/fiddle/test_function.rb | 1 - test/fiddle/test_handle.rb | 1 - test/fiddle/test_pointer.rb | 1 - test/fileutils/test_fileutils.rb | 1 - test/gdbm/test_gdbm.rb | 1 - test/io/console/test_io_console.rb | 1 - test/irb/test_completion.rb | 1 - test/irb/test_option.rb | 1 - test/irb/test_raise_no_backtrace_exception.rb | 1 - test/json/test_json_generate.rb | 1 - test/lib/envutil.rb | 596 +++++++++++++++++++++++++ test/lib/find_executable.rb | 21 + test/lib/memory_status.rb | 111 +++++ test/lib/test/unit.rb | 1 + test/logger/test_logdevice.rb | 1 - test/mkmf/test_config.rb | 1 - test/net/http/test_http.rb | 1 - test/objspace/test_objspace.rb | 1 - test/openssl/test_x509store.rb | 1 - test/openssl/utils.rb | 1 - test/pathname/test_pathname.rb | 1 - test/rake/helper.rb | 1 - test/readline/test_readline.rb | 1 - test/rinda/test_rinda.rb | 1 - test/ripper/test_files.rb | 3 +- test/ripper/test_parser_events.rb | 1 - test/ruby/envutil.rb | 597 -------------------------- test/ruby/find_executable.rb | 21 - test/ruby/memory_status.rb | 111 ----- test/ruby/test_alias.rb | 1 - test/ruby/test_argf.rb | 1 - test/ruby/test_array.rb | 1 - test/ruby/test_autoload.rb | 1 - test/ruby/test_beginendblock.rb | 1 - test/ruby/test_case.rb | 1 - test/ruby/test_class.rb | 1 - test/ruby/test_comparable.rb | 1 - test/ruby/test_const.rb | 1 - test/ruby/test_continuation.rb | 1 - test/ruby/test_defined.rb | 1 - test/ruby/test_dir_m17n.rb | 1 - test/ruby/test_econv.rb | 1 - test/ruby/test_encoding.rb | 1 - test/ruby/test_enumerator.rb | 1 - test/ruby/test_env.rb | 1 - test/ruby/test_eval.rb | 1 - test/ruby/test_exception.rb | 1 - test/ruby/test_fiber.rb | 1 - test/ruby/test_file.rb | 1 - test/ruby/test_file_exhaustive.rb | 1 - test/ruby/test_flip.rb | 1 - test/ruby/test_float.rb | 1 - test/ruby/test_fnmatch.rb | 1 - test/ruby/test_gc.rb | 2 - test/ruby/test_hash.rb | 1 - test/ruby/test_io.rb | 1 - test/ruby/test_io_m17n.rb | 1 - test/ruby/test_iseq.rb | 1 - test/ruby/test_keyword.rb | 1 - test/ruby/test_lazy_enumerator.rb | 1 - test/ruby/test_literal.rb | 1 - test/ruby/test_m17n.rb | 1 - test/ruby/test_method.rb | 1 - test/ruby/test_module.rb | 1 - test/ruby/test_numeric.rb | 1 - test/ruby/test_object.rb | 1 - test/ruby/test_objectspace.rb | 1 - test/ruby/test_proc.rb | 1 - test/ruby/test_process.rb | 1 - test/ruby/test_rand.rb | 1 - test/ruby/test_range.rb | 1 - test/ruby/test_refinement.rb | 1 - test/ruby/test_regexp.rb | 1 - test/ruby/test_require.rb | 1 - test/ruby/test_rubyoptions.rb | 2 - test/ruby/test_settracefunc.rb | 1 - test/ruby/test_signal.rb | 1 - test/ruby/test_string.rb | 1 - test/ruby/test_struct.rb | 1 - test/ruby/test_super.rb | 1 - test/ruby/test_syntax.rb | 3 +- test/ruby/test_system.rb | 1 - test/ruby/test_thread.rb | 2 - test/ruby/test_threadgroup.rb | 1 - test/ruby/test_time.rb | 1 - test/ruby/test_transcode.rb | 2 +- test/ruby/test_unicode_escape.rb | 1 - test/ruby/test_variable.rb | 1 - test/ruby/test_weakmap.rb | 1 - test/ruby/test_whileuntil.rb | 1 - test/runner.rb | 1 - test/sdbm/test_sdbm.rb | 1 - test/shell/test_command_processor.rb | 1 - test/test_mathn.rb | 1 - test/test_open3.rb | 1 - test/test_pstore.rb | 1 - test/test_pty.rb | 1 - test/test_tempfile.rb | 1 - test/test_time.rb | 1 - test/test_tracer.rb | 1 - test/test_weakref.rb | 1 - test/testunit/test_rake_integration.rb | 1 - test/thread/test_cv.rb | 1 - test/thread/test_queue.rb | 1 - test/uri/test_common.rb | 1 - test/webrick/utils.rb | 1 - 123 files changed, 732 insertions(+), 850 deletions(-) create mode 100644 test/lib/envutil.rb create mode 100644 test/lib/find_executable.rb create mode 100644 test/lib/memory_status.rb delete mode 100644 test/ruby/envutil.rb delete mode 100644 test/ruby/find_executable.rb delete mode 100644 test/ruby/memory_status.rb (limited to 'test') diff --git a/test/-ext-/bug_reporter/test_bug_reporter.rb b/test/-ext-/bug_reporter/test_bug_reporter.rb index f36f7a08ff..6ac5b8f995 100644 --- a/test/-ext-/bug_reporter/test_bug_reporter.rb +++ b/test/-ext-/bug_reporter/test_bug_reporter.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'tmpdir' -require_relative "../../ruby/envutil" class TestBugReporter < Test::Unit::TestCase def test_bug_reporter_add diff --git a/test/-ext-/exception/test_data_error.rb b/test/-ext-/exception/test_data_error.rb index 140de5bd5a..53cbb28438 100644 --- a/test/-ext-/exception/test_data_error.rb +++ b/test/-ext-/exception/test_data_error.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative '../../ruby/envutil' module Bug class TestException < Test::Unit::TestCase diff --git a/test/-ext-/exception/test_ensured.rb b/test/-ext-/exception/test_ensured.rb index 103250c678..97d9794186 100644 --- a/test/-ext-/exception/test_ensured.rb +++ b/test/-ext-/exception/test_ensured.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative '../../ruby/envutil' module Bug class Bug7802 < RuntimeError diff --git a/test/-ext-/marshal/test_usrmarshal.rb b/test/-ext-/marshal/test_usrmarshal.rb index ae23223e15..8d8db012ac 100644 --- a/test/-ext-/marshal/test_usrmarshal.rb +++ b/test/-ext-/marshal/test_usrmarshal.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative '../../ruby/envutil' require '-test-/marshal/usr' module Bug end diff --git a/test/-ext-/string/test_modify_expand.rb b/test/-ext-/string/test_modify_expand.rb index 1d20db4e6c..34b7be7bba 100644 --- a/test/-ext-/string/test_modify_expand.rb +++ b/test/-ext-/string/test_modify_expand.rb @@ -1,6 +1,5 @@ require 'test/unit' require "-test-/string/string" -require_relative '../../ruby/envutil' class Test_StringModifyExpand < Test::Unit::TestCase def test_modify_expand_memory_leak diff --git a/test/-ext-/struct/test_member.rb b/test/-ext-/struct/test_member.rb index 4e6295c218..18e98085a0 100644 --- a/test/-ext-/struct/test_member.rb +++ b/test/-ext-/struct/test_member.rb @@ -1,6 +1,5 @@ require 'test/unit' require "-test-/struct" -require_relative '../../ruby/envutil' class Bug::Struct::Test_Member < Test::Unit::TestCase S = Bug::Struct.new(:a) diff --git a/test/-ext-/test_bug-3571.rb b/test/-ext-/test_bug-3571.rb index cd43d0330d..d7c26d1ff0 100644 --- a/test/-ext-/test_bug-3571.rb +++ b/test/-ext-/test_bug-3571.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative '../ruby/envutil' class Test_BUG_3571 < Test::Unit::TestCase def test_block_call_id diff --git a/test/-ext-/test_recursion.rb b/test/-ext-/test_recursion.rb index 43a256f942..06faf6dc7a 100644 --- a/test/-ext-/test_recursion.rb +++ b/test/-ext-/test_recursion.rb @@ -1,6 +1,5 @@ # -*- coding: us-ascii -*- require 'test/unit' -require_relative '../ruby/envutil' class TestRecursion < Test::Unit::TestCase require '-test-/recursion' diff --git a/test/-ext-/tracepoint/test_tracepoint.rb b/test/-ext-/tracepoint/test_tracepoint.rb index cc630e895b..b5a6e769d6 100644 --- a/test/-ext-/tracepoint/test_tracepoint.rb +++ b/test/-ext-/tracepoint/test_tracepoint.rb @@ -1,6 +1,5 @@ require 'test/unit' require '-test-/tracepoint' -require_relative '../../ruby/envutil' class TestTracepointObj < Test::Unit::TestCase def test_not_available_from_ruby diff --git a/test/-ext-/win32/test_dln.rb b/test/-ext-/win32/test_dln.rb index c9065e66fb..2801ebe3c9 100644 --- a/test/-ext-/win32/test_dln.rb +++ b/test/-ext-/win32/test_dln.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'tmpdir' require 'rbconfig' -require_relative '../../ruby/envutil' module Bug module Win32 diff --git a/test/-ext-/win32/test_fd_setsize.rb b/test/-ext-/win32/test_fd_setsize.rb index 0881971969..6fe889c941 100644 --- a/test/-ext-/win32/test_fd_setsize.rb +++ b/test/-ext-/win32/test_fd_setsize.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative '../../ruby/envutil' module Bug module Win32 diff --git a/test/bigdecimal/test_bigdecimal.rb b/test/bigdecimal/test_bigdecimal.rb index 23c540b338..042d11da0f 100644 --- a/test/bigdecimal/test_bigdecimal.rb +++ b/test/bigdecimal/test_bigdecimal.rb @@ -1,5 +1,4 @@ require_relative "testbase" -require_relative "../ruby/envutil" require 'bigdecimal/math' require 'thread' diff --git a/test/bigdecimal/test_bigmath.rb b/test/bigdecimal/test_bigmath.rb index 88c2e2e120..740c755eae 100644 --- a/test/bigdecimal/test_bigmath.rb +++ b/test/bigdecimal/test_bigmath.rb @@ -1,5 +1,4 @@ require_relative "testbase" -require_relative "../ruby/envutil" require "bigdecimal/math" class TestBigMath < Test::Unit::TestCase diff --git a/test/cgi/test_cgi_multipart.rb b/test/cgi/test_cgi_multipart.rb index 806adbd013..1325798e95 100644 --- a/test/cgi/test_cgi_multipart.rb +++ b/test/cgi/test_cgi_multipart.rb @@ -2,7 +2,6 @@ require 'test/unit' require 'cgi' require 'tempfile' require 'stringio' -require_relative '../ruby/envutil' ## diff --git a/test/drb/drbtest.rb b/test/drb/drbtest.rb index da44a96baa..aac705c831 100644 --- a/test/drb/drbtest.rb +++ b/test/drb/drbtest.rb @@ -3,7 +3,6 @@ require 'drb/drb' require 'drb/extservm' require 'timeout' require 'shellwords' -require_relative '../ruby/envutil' module DRbTests diff --git a/test/dtrace/helper.rb b/test/dtrace/helper.rb index 318857c8dd..ccc708147d 100644 --- a/test/dtrace/helper.rb +++ b/test/dtrace/helper.rb @@ -1,7 +1,6 @@ # -*- coding: us-ascii -*- require 'test/unit' require 'tempfile' -require_relative '../ruby/envutil' if Process.euid == 0 ok = true diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb index f58077e7bc..bc98f858ba 100644 --- a/test/fiddle/helper.rb +++ b/test/fiddle/helper.rb @@ -2,7 +2,6 @@ require 'minitest/autorun' require 'fiddle' # FIXME: this is stolen from DL and needs to be refactored. -require_relative '../ruby/envutil' libc_so = libm_so = nil diff --git a/test/fiddle/test_function.rb b/test/fiddle/test_function.rb index 63dfbd6e5d..de7c9585f7 100644 --- a/test/fiddle/test_function.rb +++ b/test/fiddle/test_function.rb @@ -1,6 +1,5 @@ begin require_relative 'helper' - require_relative '../ruby/envutil' rescue LoadError end diff --git a/test/fiddle/test_handle.rb b/test/fiddle/test_handle.rb index cde3fa816d..ffbde41626 100644 --- a/test/fiddle/test_handle.rb +++ b/test/fiddle/test_handle.rb @@ -1,6 +1,5 @@ begin require_relative 'helper' - require_relative '../ruby/envutil' rescue LoadError end diff --git a/test/fiddle/test_pointer.rb b/test/fiddle/test_pointer.rb index 2ba11b4ed7..3ea9bc86dd 100644 --- a/test/fiddle/test_pointer.rb +++ b/test/fiddle/test_pointer.rb @@ -1,6 +1,5 @@ begin require_relative 'helper' - require_relative '../ruby/envutil' rescue LoadError end diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb index 5a9c1b1243..fe9a1b327d 100644 --- a/test/fileutils/test_fileutils.rb +++ b/test/fileutils/test_fileutils.rb @@ -6,7 +6,6 @@ require_relative 'fileasserts' require 'pathname' require 'tmpdir' require 'test/unit' -require_relative '../ruby/envutil' class TestFileUtils < Test::Unit::TestCase TMPROOT = "#{Dir.tmpdir}/fileutils.rb.#{$$}" diff --git a/test/gdbm/test_gdbm.rb b/test/gdbm/test_gdbm.rb index b707118162..07a1bb3386 100644 --- a/test/gdbm/test_gdbm.rb +++ b/test/gdbm/test_gdbm.rb @@ -7,7 +7,6 @@ if defined? GDBM require 'test/unit' require 'tmpdir' require 'fileutils' - require_relative '../ruby/envutil' class TestGDBM_RDONLY < Test::Unit::TestCase def TestGDBM_RDONLY.uname_s diff --git a/test/io/console/test_io_console.rb b/test/io/console/test_io_console.rb index 9cddd991a6..8b4fca5064 100644 --- a/test/io/console/test_io_console.rb +++ b/test/io/console/test_io_console.rb @@ -4,7 +4,6 @@ begin require 'pty' rescue LoadError end -require_relative '../../ruby/envutil' class TestIO_Console < Test::Unit::TestCase Bug6116 = '[ruby-dev:45309]' diff --git a/test/irb/test_completion.rb b/test/irb/test_completion.rb index e8baa0d8f5..eeeda1234c 100644 --- a/test/irb/test_completion.rb +++ b/test/irb/test_completion.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative '../ruby/envutil' module TestIRB class TestCompletion < Test::Unit::TestCase diff --git a/test/irb/test_option.rb b/test/irb/test_option.rb index 5e29803bb6..a7dd663112 100644 --- a/test/irb/test_option.rb +++ b/test/irb/test_option.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative '../ruby/envutil' module TestIRB class TestOption < Test::Unit::TestCase diff --git a/test/irb/test_raise_no_backtrace_exception.rb b/test/irb/test_raise_no_backtrace_exception.rb index e8204d7a1b..67fb5b66cc 100644 --- a/test/irb/test_raise_no_backtrace_exception.rb +++ b/test/irb/test_raise_no_backtrace_exception.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative '../ruby/envutil' module TestIRB class TestRaiseNoBacktraceException < Test::Unit::TestCase diff --git a/test/json/test_json_generate.rb b/test/json/test_json_generate.rb index 618b933bac..2d4e1eea52 100755 --- a/test/json/test_json_generate.rb +++ b/test/json/test_json_generate.rb @@ -215,7 +215,6 @@ EOT end def test_gc - require_relative '../ruby/envutil.rb' assert_in_out_err(%w[-rjson --disable-gems], <<-EOS, [], []) bignum_too_long_to_embed_as_string = 1234567890123456789012345 expect = bignum_too_long_to_embed_as_string.to_s diff --git a/test/lib/envutil.rb b/test/lib/envutil.rb new file mode 100644 index 0000000000..001753a9f0 --- /dev/null +++ b/test/lib/envutil.rb @@ -0,0 +1,596 @@ +# -*- coding: us-ascii -*- +require "open3" +require "timeout" +require_relative "find_executable" + +module EnvUtil + def rubybin + if ruby = ENV["RUBY"] + return ruby + end + ruby = "ruby" + exeext = RbConfig::CONFIG["EXEEXT"] + rubyexe = (ruby + exeext if exeext and !exeext.empty?) + 3.times do + if File.exist? ruby and File.executable? ruby and !File.directory? ruby + return File.expand_path(ruby) + end + if rubyexe and File.exist? rubyexe and File.executable? rubyexe + return File.expand_path(rubyexe) + end + ruby = File.join("..", ruby) + end + if defined?(RbConfig.ruby) + RbConfig.ruby + else + "ruby" + end + end + module_function :rubybin + + LANG_ENVS = %w"LANG LC_ALL LC_CTYPE" + + def invoke_ruby(args, stdin_data = "", capture_stdout = false, capture_stderr = false, + encoding: nil, timeout: 10, reprieve: 1, + stdout_filter: nil, stderr_filter: nil, + rubybin: EnvUtil.rubybin, + **opt) + in_c, in_p = IO.pipe + out_p, out_c = IO.pipe if capture_stdout + err_p, err_c = IO.pipe if capture_stderr && capture_stderr != :merge_to_stdout + opt[:in] = in_c + opt[:out] = out_c if capture_stdout + opt[:err] = capture_stderr == :merge_to_stdout ? out_c : err_c if capture_stderr + if encoding + out_p.set_encoding(encoding) if out_p + err_p.set_encoding(encoding) if err_p + end + c = "C" + child_env = {} + LANG_ENVS.each {|lc| child_env[lc] = c} + if Array === args and Hash === args.first + child_env.update(args.shift) + end + args = [args] if args.kind_of?(String) + pid = spawn(child_env, rubybin, *args, **opt) + in_c.close + out_c.close if capture_stdout + err_c.close if capture_stderr && capture_stderr != :merge_to_stdout + if block_given? + return yield in_p, out_p, err_p, pid + else + th_stdout = Thread.new { out_p.read } if capture_stdout + th_stderr = Thread.new { err_p.read } if capture_stderr && capture_stderr != :merge_to_stdout + in_p.write stdin_data.to_str unless stdin_data.empty? + in_p.close + if (!th_stdout || th_stdout.join(timeout)) && (!th_stderr || th_stderr.join(timeout)) + stdout = th_stdout.value if capture_stdout + stderr = th_stderr.value if capture_stderr && capture_stderr != :merge_to_stdout + else + signal = /mswin|mingw/ =~ RUBY_PLATFORM ? :KILL : :TERM + begin + Process.kill signal, pid + Timeout.timeout((reprieve unless signal == :KILL)) do + Process.wait(pid) + end + rescue Errno::ESRCH + break + rescue Timeout::Error + raise if signal == :KILL + signal = :KILL + else + break + end while true + bt = caller_locations + raise Timeout::Error, "execution of #{bt.shift.label} expired", bt.map(&:to_s) + end + out_p.close if capture_stdout + err_p.close if capture_stderr && capture_stderr != :merge_to_stdout + Process.wait pid + status = $? + stdout = stdout_filter.call(stdout) if stdout_filter + stderr = stderr_filter.call(stderr) if stderr_filter + return stdout, stderr, status + end + ensure + [th_stdout, th_stderr].each do |th| + th.kill if th + end + [in_c, in_p, out_c, out_p, err_c, err_p].each do |io| + io.close if io && !io.closed? + end + [th_stdout, th_stderr].each do |th| + th.join if th + end + end + module_function :invoke_ruby + + alias rubyexec invoke_ruby + class << self + alias rubyexec invoke_ruby + end + + def verbose_warning + class << (stderr = "") + alias write << + end + stderr, $stderr, verbose, $VERBOSE = $stderr, stderr, $VERBOSE, true + yield stderr + return $stderr + ensure + stderr, $stderr, $VERBOSE = $stderr, stderr, verbose + end + module_function :verbose_warning + + def default_warning + verbose, $VERBOSE = $VERBOSE, false + yield + ensure + $VERBOSE = verbose + end + module_function :default_warning + + def suppress_warning + verbose, $VERBOSE = $VERBOSE, nil + yield + ensure + $VERBOSE = verbose + end + module_function :suppress_warning + + def under_gc_stress(stress = true) + stress, GC.stress = GC.stress, stress + yield + ensure + GC.stress = stress + end + module_function :under_gc_stress + + def with_default_external(enc) + verbose, $VERBOSE = $VERBOSE, nil + origenc, Encoding.default_external = Encoding.default_external, enc + $VERBOSE = verbose + yield + ensure + verbose, $VERBOSE = $VERBOSE, nil + Encoding.default_external = origenc + $VERBOSE = verbose + end + module_function :with_default_external + + def with_default_internal(enc) + verbose, $VERBOSE = $VERBOSE, nil + origenc, Encoding.default_internal = Encoding.default_internal, enc + $VERBOSE = verbose + yield + ensure + verbose, $VERBOSE = $VERBOSE, nil + Encoding.default_internal = origenc + $VERBOSE = verbose + end + module_function :with_default_internal + + def labeled_module(name, &block) + Module.new do + singleton_class.class_eval {define_method(:to_s) {name}; alias inspect to_s} + class_eval(&block) if block + end + end + module_function :labeled_module + + def labeled_class(name, superclass = Object, &block) + Class.new(superclass) do + singleton_class.class_eval {define_method(:to_s) {name}; alias inspect to_s} + class_eval(&block) if block + end + end + module_function :labeled_class + + if /darwin/ =~ RUBY_PLATFORM + DIAGNOSTIC_REPORTS_PATH = File.expand_path("~/Library/Logs/DiagnosticReports") + DIAGNOSTIC_REPORTS_TIMEFORMAT = '%Y-%m-%d-%H%M%S' + def self.diagnostic_reports(signame, cmd, pid, now) + return unless %w[ABRT QUIT SEGV ILL].include?(signame) + cmd = File.basename(cmd) + path = DIAGNOSTIC_REPORTS_PATH + timeformat = DIAGNOSTIC_REPORTS_TIMEFORMAT + pat = "#{path}/#{cmd}_#{now.strftime(timeformat)}[-_]*.crash" + first = true + 30.times do + first ? (first = false) : sleep(0.1) + Dir.glob(pat) do |name| + log = File.read(name) rescue next + if /\AProcess:\s+#{cmd} \[#{pid}\]$/ =~ log + File.unlink(name) + File.unlink("#{path}/.#{File.basename(name)}.plist") rescue nil + return log + end + end + end + nil + end + else + def self.diagnostic_reports(signame, cmd, pid, now) + end + end +end + +module Test + module Unit + module Assertions + public + def assert_valid_syntax(code, fname = caller_locations(1, 1)[0], mesg = fname.to_s, verbose: nil) + code = code.dup.force_encoding("ascii-8bit") + code.sub!(/\A(?:\xef\xbb\xbf)?(\s*\#.*$)*(\n)?/n) { + "#$&#{"\n" if $1 && !$2}BEGIN{throw tag, :ok}\n" + } + code.force_encoding(Encoding::UTF_8) + verbose, $VERBOSE = $VERBOSE, verbose + yield if defined?(yield) + case + when Array === fname + fname, line = *fname + when defined?(fname.path) && defined?(fname.lineno) + fname, line = fname.path, fname.lineno + else + line = 0 + end + assert_nothing_raised(SyntaxError, mesg) do + assert_equal(:ok, catch {|tag| eval(code, binding, fname, line)}, mesg) + end + ensure + $VERBOSE = verbose + end + + def assert_syntax_error(code, error, fname = caller_locations(1, 1)[0], mesg = fname.to_s) + code = code.dup.force_encoding("ascii-8bit") + code.sub!(/\A(?:\xef\xbb\xbf)?(\s*\#.*$)*(\n)?/n) { + "#$&#{"\n" if $1 && !$2}BEGIN{throw tag, :ng}\n" + } + code.force_encoding("us-ascii") + verbose, $VERBOSE = $VERBOSE, nil + yield if defined?(yield) + case + when Array === fname + fname, line = *fname + when defined?(fname.path) && defined?(fname.lineno) + fname, line = fname.path, fname.lineno + else + line = 0 + end + e = assert_raise(SyntaxError, mesg) do + catch {|tag| eval(code, binding, fname, line)} + end + assert_match(error, e.message, mesg) + ensure + $VERBOSE = verbose + end + + def assert_normal_exit(testsrc, message = '', child_env: nil, **opt) + assert_valid_syntax(testsrc, caller_locations(1, 1)[0]) + if child_env + child_env = [child_env] + else + child_env = [] + end + out, _, status = EnvUtil.invoke_ruby(child_env + %W'-W0', testsrc, true, :merge_to_stdout, **opt) + assert !status.signaled?, FailDesc[status, message, out] + end + + FailDesc = proc do |status, message = "", out = ""| + pid = status.pid + now = Time.now + faildesc = proc do + if signo = status.termsig + signame = Signal.signame(signo) + sigdesc = "signal #{signo}" + end + log = EnvUtil.diagnostic_reports(signame, EnvUtil.rubybin, pid, now) + if signame + sigdesc = "SIG#{signame} (#{sigdesc})" + end + if status.coredump? + sigdesc << " (core dumped)" + end + full_message = '' + if message and !message.empty? + full_message << message << "\n" + end + full_message << "pid #{pid} killed by #{sigdesc}" + if out and !out.empty? + full_message << "\n#{out.gsub(/^/, '| ')}" + full_message << "\n" if /\n\z/ !~ full_message + end + if log + full_message << "\n#{log.gsub(/^/, '| ')}" + end + full_message + end + faildesc + end + + def assert_in_out_err(args, test_stdin = "", test_stdout = [], test_stderr = [], message = nil, **opt) + stdout, stderr, status = EnvUtil.invoke_ruby(args, test_stdin, true, true, **opt) + if signo = status.termsig + sleep 0.1 + EnvUtil.diagnostic_reports(Signal.signame(signo), EnvUtil.rubybin, status.pid, Time.now) + end + if block_given? + raise "test_stdout ignored, use block only or without block" if test_stdout != [] + raise "test_stderr ignored, use block only or without block" if test_stderr != [] + yield(stdout.lines.map {|l| l.chomp }, stderr.lines.map {|l| l.chomp }, status) + else + errs = [] + [[test_stdout, stdout], [test_stderr, stderr]].each do |exp, act| + begin + if exp.is_a?(Regexp) + assert_match(exp, act, message) + else + assert_equal(exp, act.lines.map {|l| l.chomp }, message) + end + rescue MiniTest::Assertion => e + errs << e.message + message = nil + end + end + raise MiniTest::Assertion, errs.join("\n---\n") unless errs.empty? + status + end + end + + def assert_ruby_status(args, test_stdin="", message=nil, **opt) + out, _, status = EnvUtil.invoke_ruby(args, test_stdin, true, :merge_to_stdout, **opt) + assert(!status.signaled?, FailDesc[status, message, out]) + message ||= "ruby exit status is not success:" + assert(status.success?, "#{message} (#{status.inspect})") + end + + ABORT_SIGNALS = Signal.list.values_at(*%w"ILL ABRT BUS SEGV") + + def assert_separately(args, file = nil, line = nil, src, ignore_stderr: nil, **opt) + unless file and line + loc, = caller_locations(1,1) + file ||= loc.path + line ||= loc.lineno + end + line -= 5 # lines until src + src = < marshal_error + ignore_stderr = nil + end + if res + if bt = res.backtrace + bt.each do |l| + l.sub!(/\A-:(\d+)/){"#{file}:#{line + $1.to_i}"} + end + bt.concat(caller) + else + res.set_backtrace(caller) + end + raise res + end + + # really is it succeed? + unless ignore_stderr + # the body of assert_separately must not output anything to detect error + assert_equal("", stderr, "assert_separately failed with error message") + end + assert_equal(0, status, "assert_separately failed: '#{stderr}'") + raise marshal_error if marshal_error + end + + def assert_warning(pat, msg = nil) + stderr = EnvUtil.verbose_warning { yield } + msg = message(msg) {diff pat, stderr} + assert(pat === stderr, msg) + end + + def assert_warn(*args) + assert_warning(*args) {$VERBOSE = false; yield} + end + + case RUBY_PLATFORM + when /solaris2\.(?:9|[1-9][0-9])/i # Solaris 9, 10, 11,... + bits = [nil].pack('p').size == 8 ? 64 : 32 + if ENV['LD_PRELOAD'].to_s.empty? && + ENV["LD_PRELOAD_#{bits}"].to_s.empty? && + (ENV['UMEM_OPTIONS'].to_s.empty? || + ENV['UMEM_OPTIONS'] == 'backend=mmap') then + envs = { + 'LD_PRELOAD' => 'libumem.so', + 'UMEM_OPTIONS' => 'backend=mmap' + } + args = [ + envs, + "--disable=gems", + "-v", "-", + ] + _, err, status = EnvUtil.invoke_ruby(args, "exit(0)", true, true) + if status.exitstatus == 0 && err.to_s.empty? then + NO_MEMORY_LEAK_ENVS = envs + end + end + end #case RUBY_PLATFORM + + def assert_no_memory_leak(args, prepare, code, message=nil, limit: 1.5, rss: false, **opt) + require_relative 'memory_status' + token = "\e[7;1m#{$$.to_s}:#{Time.now.strftime('%s.%L')}:#{rand(0x10000).to_s(16)}:\e[m" + token_dump = token.dump + token_re = Regexp.quote(token) + envs = args.shift if Array === args and Hash === args.first + args = [ + "--disable=gems", + "-r", File.expand_path("../memory_status", __FILE__), + *args, + "-v", "-", + ] + if defined? NO_MEMORY_LEAK_ENVS then + envs ||= {} + newenvs = envs.merge(NO_MEMORY_LEAK_ENVS) { |_, _, _| break } + envs = newenvs if newenvs + end + args.unshift(envs) if envs + cmd = [ + 'END {STDERR.puts '"#{token_dump}"'"FINAL=#{Memory::Status.new}"}', + prepare, + 'STDERR.puts('"#{token_dump}"'"START=#{$initial_status = Memory::Status.new}")', + '$initial_size = $initial_status.size', + code, + 'GC.start', + ].join("\n") + _, err, status = EnvUtil.invoke_ruby(args, cmd, true, true, **opt) + before = err.sub!(/^#{token_re}START=(\{.*\})\n/, '') && Memory::Status.parse($1) + after = err.sub!(/^#{token_re}FINAL=(\{.*\})\n/, '') && Memory::Status.parse($1) + assert_equal([true, ""], [status.success?, err], message) + ([:size, (rss && :rss)] & after.members).each do |n| + b = before[n] + a = after[n] + next unless a > 0 and b > 0 + assert_operator(a.fdiv(b), :<, limit, message(message) {"#{n}: #{b} => #{a}"}) + end + end + + def assert_is_minus_zero(f) + assert(1.0/f == -Float::INFINITY, "#{f} is not -0.0") + end + + def assert_file + AssertFile + end + + # pattern_list is an array which contains regexp and :*. + # :* means any sequence. + # + # pattern_list is anchored. + # Use [:*, regexp, :*] for non-anchored match. + def assert_pattern_list(pattern_list, actual, message=nil) + rest = actual + anchored = true + pattern_list.each_with_index {|pattern, i| + if pattern == :* + anchored = false + else + if anchored + match = /\A#{pattern}/.match(rest) + else + match = pattern.match(rest) + end + unless match + msg = message(msg) { + expect_msg = "Expected #{mu_pp pattern}\n" + if /\n[^\n]/ =~ rest + actual_mesg = "to match\n" + rest.scan(/.*\n+/) { + actual_mesg << ' ' << $&.inspect << "+\n" + } + actual_mesg.sub!(/\+\n\z/, '') + else + actual_mesg = "to match #{mu_pp rest}" + end + actual_mesg << "\nafter #{i} patterns with #{actual.length - rest.length} characters" + expect_msg + actual_mesg + } + assert false, msg + end + rest = match.post_match + anchored = true + end + } + if anchored + assert_equal("", rest) + end + end + + # threads should respond to shift method. + # Array can be used. + def assert_join_threads(threads, message = nil) + errs = [] + values = [] + while th = threads.shift + begin + values << th.value + rescue Exception + errs << [th, $!] + end + end + if !errs.empty? + msg = "exceptions on #{errs.length} threads:\n" + + errs.map {|t, err| + "#{t.inspect}:\n" + + err.backtrace.map.with_index {|line, i| + if i == 0 + "#{line}: #{err.message} (#{err.class})" + else + "\tfrom #{line}" + end + }.join("\n") + }.join("\n---\n") + if message + msg = "#{message}\n#{msg}" + end + raise MiniTest::Assertion, msg + end + values + end + + class << (AssertFile = Struct.new(:failure_message).new) + include Assertions + def assert_file_predicate(predicate, *args) + if /\Anot_/ =~ predicate + predicate = $' + neg = " not" + end + result = File.__send__(predicate, *args) + result = !result if neg + mesg = "Expected file " << args.shift.inspect + mesg << "#{neg} to be #{predicate}" + mesg << mu_pp(args).sub(/\A\[(.*)\]\z/m, '(\1)') unless args.empty? + mesg << " #{failure_message}" if failure_message + assert(result, mesg) + end + alias method_missing assert_file_predicate + + def for(message) + clone.tap {|a| a.failure_message = message} + end + end + end + end +end + +begin + require 'rbconfig' +rescue LoadError +else + module RbConfig + @ruby = EnvUtil.rubybin + class << self + undef ruby if method_defined?(:ruby) + attr_reader :ruby + end + dir = File.dirname(ruby) + name = File.basename(ruby, CONFIG['EXEEXT']) + CONFIG['bindir'] = dir + CONFIG['ruby_install_name'] = name + CONFIG['RUBY_INSTALL_NAME'] = name + Gem::ConfigMap[:bindir] = dir if defined?(Gem::ConfigMap) + end +end diff --git a/test/lib/find_executable.rb b/test/lib/find_executable.rb new file mode 100644 index 0000000000..4ba9a0533e --- /dev/null +++ b/test/lib/find_executable.rb @@ -0,0 +1,21 @@ +require "rbconfig" + +module EnvUtil + def find_executable(cmd, *args) + exts = RbConfig::CONFIG["EXECUTABLE_EXTS"].split | [RbConfig::CONFIG["EXEEXT"]] + ENV["PATH"].split(File::PATH_SEPARATOR).each do |path| + next if path.empty? + path = File.join(path, cmd) + exts.each do |ext| + cmdline = [path + ext, *args] + begin + return cmdline if yield(IO.popen(cmdline, "r", err: [:child, :out], &:read)) + rescue + next + end + end + end + nil + end + module_function :find_executable +end diff --git a/test/lib/memory_status.rb b/test/lib/memory_status.rb new file mode 100644 index 0000000000..071c5f67c4 --- /dev/null +++ b/test/lib/memory_status.rb @@ -0,0 +1,111 @@ +module Memory + keys = [] + vals = [] + + case + when File.exist?(procfile = "/proc/self/status") && (pat = /^Vm(\w+):\s+(\d+)/) =~ File.binread(procfile) + PROC_FILE = procfile + VM_PAT = pat + def self.read_status + IO.foreach(PROC_FILE, encoding: Encoding::ASCII_8BIT) do |l| + yield($1.downcase.intern, $2.to_i * 1024) if VM_PAT =~ l + end + end + + read_status {|k, v| keys << k; vals << v} + + when /mswin|mingw/ =~ RUBY_PLATFORM + require 'fiddle/import' + require 'fiddle/types' + + module Win32 + extend Fiddle::Importer + dlload "kernel32.dll", "psapi.dll" + include Fiddle::Win32Types + typealias "SIZE_T", "size_t" + + PROCESS_MEMORY_COUNTERS = struct [ + "DWORD cb", + "DWORD PageFaultCount", + "SIZE_T PeakWorkingSetSize", + "SIZE_T WorkingSetSize", + "SIZE_T QuotaPeakPagedPoolUsage", + "SIZE_T QuotaPagedPoolUsage", + "SIZE_T QuotaPeakNonPagedPoolUsage", + "SIZE_T QuotaNonPagedPoolUsage", + "SIZE_T PagefileUsage", + "SIZE_T PeakPagefileUsage", + ] + + typealias "PPROCESS_MEMORY_COUNTERS", "PROCESS_MEMORY_COUNTERS*" + + extern "HANDLE GetCurrentProcess()", :stdcall + extern "BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD)", :stdcall + + module_function + def memory_info + size = PROCESS_MEMORY_COUNTERS.size + data = PROCESS_MEMORY_COUNTERS.malloc + data.cb = size + data if GetProcessMemoryInfo(GetCurrentProcess(), data, size) + end + end + + keys << :peak << :size + def self.read_status + if info = Win32.memory_info + yield :peak, info.PeakPagefileUsage + yield :size, info.PagefileUsage + end + end + else + PAT = /^\s*(\d+)\s+(\d+)$/ + require_relative '../lib/find_executable' + if PSCMD = EnvUtil.find_executable("ps", "-ovsz=", "-orss=", "-p", $$.to_s) {|out| PAT =~ out} + PSCMD.pop + end + raise MiniTest::Skip, "ps command not found" unless PSCMD + + keys << :size << :rss + def self.read_status + if PAT =~ IO.popen(PSCMD + [$$.to_s], "r", err: [:child, :out], &:read) + yield :size, $1.to_i*1024 + yield :rss, $2.to_i*1024 + end + end + end + + Status = Struct.new(*keys) + + class Status + def _update + Memory.read_status do |key, val| + self[key] = val + end + end + end + + class Status + Header = members.map {|k| k.to_s.upcase.rjust(6)}.join('') + Format = "%6d" + + def initialize + _update + end + + def to_s + status = each_pair.map {|n,v| + "#{n}:#{v}" + } + "{#{status.join(",")}}" + end + + def self.parse(str) + status = allocate + str.scan(/(?:\A\{|\G,)(#{members.join('|')}):(\d+)(?=,|\}\z)/) do + status[$1] = $2.to_i + end + status + end + end +end diff --git a/test/lib/test/unit.rb b/test/lib/test/unit.rb index c4fdf6713f..cfafbba357 100644 --- a/test/lib/test/unit.rb +++ b/test/lib/test/unit.rb @@ -4,6 +4,7 @@ rescue Gem::LoadError end require 'minitest/unit' require 'test/unit/assertions' +require_relative '../envutil' require 'test/unit/testcase' require 'optparse' diff --git a/test/logger/test_logdevice.rb b/test/logger/test_logdevice.rb index 78eb12e3c9..a563635d14 100644 --- a/test/logger/test_logdevice.rb +++ b/test/logger/test_logdevice.rb @@ -3,7 +3,6 @@ require 'test/unit' require 'logger' require 'tempfile' require 'tmpdir' -require_relative '../ruby/envutil' class TestLogDevice < Test::Unit::TestCase class LogExcnRaiser diff --git a/test/mkmf/test_config.rb b/test/mkmf/test_config.rb index 4a9be57e0a..7bf537e693 100644 --- a/test/mkmf/test_config.rb +++ b/test/mkmf/test_config.rb @@ -2,7 +2,6 @@ $extmk = true require 'test/unit' require 'mkmf' -require_relative '../ruby/envutil' class TestMkmf < Test::Unit::TestCase class TestConfig < Test::Unit::TestCase diff --git a/test/net/http/test_http.rb b/test/net/http/test_http.rb index 90336b21ce..2cd883da79 100644 --- a/test/net/http/test_http.rb +++ b/test/net/http/test_http.rb @@ -3,7 +3,6 @@ require 'test/unit' require 'net/http' require 'stringio' require_relative 'utils' -require_relative '../../ruby/envutil' class TestNetHTTP < Test::Unit::TestCase diff --git a/test/objspace/test_objspace.rb b/test/objspace/test_objspace.rb index 8a5ed3400f..f507562b80 100644 --- a/test/objspace/test_objspace.rb +++ b/test/objspace/test_objspace.rb @@ -1,6 +1,5 @@ require "test/unit" require "objspace" -require_relative "../ruby/envutil" class TestObjSpace < Test::Unit::TestCase def test_memsize_of diff --git a/test/openssl/test_x509store.rb b/test/openssl/test_x509store.rb index 082e405371..439c9de26e 100644 --- a/test/openssl/test_x509store.rb +++ b/test/openssl/test_x509store.rb @@ -1,4 +1,3 @@ -require_relative "../ruby/envutil" require_relative "utils" if defined?(OpenSSL) diff --git a/test/openssl/utils.rb b/test/openssl/utils.rb index 7d9f133464..84cd48dbc1 100644 --- a/test/openssl/utils.rb +++ b/test/openssl/utils.rb @@ -12,7 +12,6 @@ require "digest/md5" require 'tempfile' require "rbconfig" require "socket" -require_relative '../ruby/envutil' module OpenSSL::TestUtils TEST_KEY_RSA1024 = OpenSSL::PKey::RSA.new <<-_end_of_pem_ diff --git a/test/pathname/test_pathname.rb b/test/pathname/test_pathname.rb index f77552cc9a..046f3f034f 100644 --- a/test/pathname/test_pathname.rb +++ b/test/pathname/test_pathname.rb @@ -5,7 +5,6 @@ require 'fileutils' require 'tmpdir' require 'enumerator' -require_relative '../ruby/envutil' class TestPathname < Test::Unit::TestCase def self.define_assertion(name, linenum, &block) diff --git a/test/rake/helper.rb b/test/rake/helper.rb index 992c6bffae..526eb306fe 100644 --- a/test/rake/helper.rb +++ b/test/rake/helper.rb @@ -13,7 +13,6 @@ require File.expand_path('../file_creation', __FILE__) begin - require_relative '../ruby/envutil' require_relative 'support/ruby_runner' require_relative 'support/rakefile_definitions' rescue NoMethodError, LoadError diff --git a/test/readline/test_readline.rb b/test/readline/test_readline.rb index ed71e00285..3a5f972fcd 100644 --- a/test/readline/test_readline.rb +++ b/test/readline/test_readline.rb @@ -509,7 +509,6 @@ class TestReadline < Test::Unit::TestCase def assert_under_utf8 return false if ENV['LC_ALL'] == 'UTF-8' loc = caller_locations(1, 1)[0].base_label.to_s - require_relative "../ruby/envutil" assert_separately([{"LC_ALL"=>"UTF-8"}, "-r", __FILE__], < e - errs << e.message - message = nil - end - end - raise MiniTest::Assertion, errs.join("\n---\n") unless errs.empty? - status - end - end - - def assert_ruby_status(args, test_stdin="", message=nil, **opt) - out, _, status = EnvUtil.invoke_ruby(args, test_stdin, true, :merge_to_stdout, **opt) - assert(!status.signaled?, FailDesc[status, message, out]) - message ||= "ruby exit status is not success:" - assert(status.success?, "#{message} (#{status.inspect})") - end - - ABORT_SIGNALS = Signal.list.values_at(*%w"ILL ABRT BUS SEGV") - - def assert_separately(args, file = nil, line = nil, src, ignore_stderr: nil, **opt) - unless file and line - loc, = caller_locations(1,1) - file ||= loc.path - line ||= loc.lineno - end - line -= 5 # lines until src - src = < marshal_error - ignore_stderr = nil - end - if res - if bt = res.backtrace - bt.each do |l| - l.sub!(/\A-:(\d+)/){"#{file}:#{line + $1.to_i}"} - end - bt.concat(caller) - else - res.set_backtrace(caller) - end - raise res - end - - # really is it succeed? - unless ignore_stderr - # the body of assert_separately must not output anything to detect error - assert_equal("", stderr, "assert_separately failed with error message") - end - assert_equal(0, status, "assert_separately failed: '#{stderr}'") - raise marshal_error if marshal_error - end - - def assert_warning(pat, msg = nil) - stderr = EnvUtil.verbose_warning { yield } - msg = message(msg) {diff pat, stderr} - assert(pat === stderr, msg) - end - - def assert_warn(*args) - assert_warning(*args) {$VERBOSE = false; yield} - end - - case RUBY_PLATFORM - when /solaris2\.(?:9|[1-9][0-9])/i # Solaris 9, 10, 11,... - bits = [nil].pack('p').size == 8 ? 64 : 32 - if ENV['LD_PRELOAD'].to_s.empty? && - ENV["LD_PRELOAD_#{bits}"].to_s.empty? && - (ENV['UMEM_OPTIONS'].to_s.empty? || - ENV['UMEM_OPTIONS'] == 'backend=mmap') then - envs = { - 'LD_PRELOAD' => 'libumem.so', - 'UMEM_OPTIONS' => 'backend=mmap' - } - args = [ - envs, - "--disable=gems", - "-v", "-", - ] - _, err, status = EnvUtil.invoke_ruby(args, "exit(0)", true, true) - if status.exitstatus == 0 && err.to_s.empty? then - NO_MEMORY_LEAK_ENVS = envs - end - end - end #case RUBY_PLATFORM - - def assert_no_memory_leak(args, prepare, code, message=nil, limit: 1.5, rss: false, **opt) - require_relative 'memory_status' - token = "\e[7;1m#{$$.to_s}:#{Time.now.strftime('%s.%L')}:#{rand(0x10000).to_s(16)}:\e[m" - token_dump = token.dump - token_re = Regexp.quote(token) - envs = args.shift if Array === args and Hash === args.first - args = [ - "--disable=gems", - "-r", File.expand_path("../memory_status", __FILE__), - *args, - "-v", "-", - ] - if defined? NO_MEMORY_LEAK_ENVS then - envs ||= {} - newenvs = envs.merge(NO_MEMORY_LEAK_ENVS) { |_, _, _| break } - envs = newenvs if newenvs - end - args.unshift(envs) if envs - cmd = [ - 'END {STDERR.puts '"#{token_dump}"'"FINAL=#{Memory::Status.new}"}', - prepare, - 'STDERR.puts('"#{token_dump}"'"START=#{$initial_status = Memory::Status.new}")', - '$initial_size = $initial_status.size', - code, - 'GC.start', - ].join("\n") - _, err, status = EnvUtil.invoke_ruby(args, cmd, true, true, **opt) - before = err.sub!(/^#{token_re}START=(\{.*\})\n/, '') && Memory::Status.parse($1) - after = err.sub!(/^#{token_re}FINAL=(\{.*\})\n/, '') && Memory::Status.parse($1) - assert_equal([true, ""], [status.success?, err], message) - ([:size, (rss && :rss)] & after.members).each do |n| - b = before[n] - a = after[n] - next unless a > 0 and b > 0 - assert_operator(a.fdiv(b), :<, limit, message(message) {"#{n}: #{b} => #{a}"}) - end - end - - def assert_is_minus_zero(f) - assert(1.0/f == -Float::INFINITY, "#{f} is not -0.0") - end - - def assert_file - AssertFile - end - - # pattern_list is an array which contains regexp and :*. - # :* means any sequence. - # - # pattern_list is anchored. - # Use [:*, regexp, :*] for non-anchored match. - def assert_pattern_list(pattern_list, actual, message=nil) - rest = actual - anchored = true - pattern_list.each_with_index {|pattern, i| - if pattern == :* - anchored = false - else - if anchored - match = /\A#{pattern}/.match(rest) - else - match = pattern.match(rest) - end - unless match - msg = message(msg) { - expect_msg = "Expected #{mu_pp pattern}\n" - if /\n[^\n]/ =~ rest - actual_mesg = "to match\n" - rest.scan(/.*\n+/) { - actual_mesg << ' ' << $&.inspect << "+\n" - } - actual_mesg.sub!(/\+\n\z/, '') - else - actual_mesg = "to match #{mu_pp rest}" - end - actual_mesg << "\nafter #{i} patterns with #{actual.length - rest.length} characters" - expect_msg + actual_mesg - } - assert false, msg - end - rest = match.post_match - anchored = true - end - } - if anchored - assert_equal("", rest) - end - end - - # threads should respond to shift method. - # Array can be used. - def assert_join_threads(threads, message = nil) - errs = [] - values = [] - while th = threads.shift - begin - values << th.value - rescue Exception - errs << [th, $!] - end - end - if !errs.empty? - msg = "exceptions on #{errs.length} threads:\n" + - errs.map {|t, err| - "#{t.inspect}:\n" + - err.backtrace.map.with_index {|line, i| - if i == 0 - "#{line}: #{err.message} (#{err.class})" - else - "\tfrom #{line}" - end - }.join("\n") - }.join("\n---\n") - if message - msg = "#{message}\n#{msg}" - end - raise MiniTest::Assertion, msg - end - values - end - - class << (AssertFile = Struct.new(:failure_message).new) - include Assertions - def assert_file_predicate(predicate, *args) - if /\Anot_/ =~ predicate - predicate = $' - neg = " not" - end - result = File.__send__(predicate, *args) - result = !result if neg - mesg = "Expected file " << args.shift.inspect - mesg << "#{neg} to be #{predicate}" - mesg << mu_pp(args).sub(/\A\[(.*)\]\z/m, '(\1)') unless args.empty? - mesg << " #{failure_message}" if failure_message - assert(result, mesg) - end - alias method_missing assert_file_predicate - - def for(message) - clone.tap {|a| a.failure_message = message} - end - end - end - end -end - -begin - require 'rbconfig' -rescue LoadError -else - module RbConfig - @ruby = EnvUtil.rubybin - class << self - undef ruby if method_defined?(:ruby) - attr_reader :ruby - end - dir = File.dirname(ruby) - name = File.basename(ruby, CONFIG['EXEEXT']) - CONFIG['bindir'] = dir - CONFIG['ruby_install_name'] = name - CONFIG['RUBY_INSTALL_NAME'] = name - Gem::ConfigMap[:bindir] = dir if defined?(Gem::ConfigMap) - end -end diff --git a/test/ruby/find_executable.rb b/test/ruby/find_executable.rb deleted file mode 100644 index 4ba9a0533e..0000000000 --- a/test/ruby/find_executable.rb +++ /dev/null @@ -1,21 +0,0 @@ -require "rbconfig" - -module EnvUtil - def find_executable(cmd, *args) - exts = RbConfig::CONFIG["EXECUTABLE_EXTS"].split | [RbConfig::CONFIG["EXEEXT"]] - ENV["PATH"].split(File::PATH_SEPARATOR).each do |path| - next if path.empty? - path = File.join(path, cmd) - exts.each do |ext| - cmdline = [path + ext, *args] - begin - return cmdline if yield(IO.popen(cmdline, "r", err: [:child, :out], &:read)) - rescue - next - end - end - end - nil - end - module_function :find_executable -end diff --git a/test/ruby/memory_status.rb b/test/ruby/memory_status.rb deleted file mode 100644 index 6c6b3f8934..0000000000 --- a/test/ruby/memory_status.rb +++ /dev/null @@ -1,111 +0,0 @@ -module Memory - keys = [] - vals = [] - - case - when File.exist?(procfile = "/proc/self/status") && (pat = /^Vm(\w+):\s+(\d+)/) =~ File.binread(procfile) - PROC_FILE = procfile - VM_PAT = pat - def self.read_status - IO.foreach(PROC_FILE, encoding: Encoding::ASCII_8BIT) do |l| - yield($1.downcase.intern, $2.to_i * 1024) if VM_PAT =~ l - end - end - - read_status {|k, v| keys << k; vals << v} - - when /mswin|mingw/ =~ RUBY_PLATFORM - require 'fiddle/import' - require 'fiddle/types' - - module Win32 - extend Fiddle::Importer - dlload "kernel32.dll", "psapi.dll" - include Fiddle::Win32Types - typealias "SIZE_T", "size_t" - - PROCESS_MEMORY_COUNTERS = struct [ - "DWORD cb", - "DWORD PageFaultCount", - "SIZE_T PeakWorkingSetSize", - "SIZE_T WorkingSetSize", - "SIZE_T QuotaPeakPagedPoolUsage", - "SIZE_T QuotaPagedPoolUsage", - "SIZE_T QuotaPeakNonPagedPoolUsage", - "SIZE_T QuotaNonPagedPoolUsage", - "SIZE_T PagefileUsage", - "SIZE_T PeakPagefileUsage", - ] - - typealias "PPROCESS_MEMORY_COUNTERS", "PROCESS_MEMORY_COUNTERS*" - - extern "HANDLE GetCurrentProcess()", :stdcall - extern "BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD)", :stdcall - - module_function - def memory_info - size = PROCESS_MEMORY_COUNTERS.size - data = PROCESS_MEMORY_COUNTERS.malloc - data.cb = size - data if GetProcessMemoryInfo(GetCurrentProcess(), data, size) - end - end - - keys << :peak << :size - def self.read_status - if info = Win32.memory_info - yield :peak, info.PeakPagefileUsage - yield :size, info.PagefileUsage - end - end - else - PAT = /^\s*(\d+)\s+(\d+)$/ - require_relative 'find_executable' - if PSCMD = EnvUtil.find_executable("ps", "-ovsz=", "-orss=", "-p", $$.to_s) {|out| PAT =~ out} - PSCMD.pop - end - raise MiniTest::Skip, "ps command not found" unless PSCMD - - keys << :size << :rss - def self.read_status - if PAT =~ IO.popen(PSCMD + [$$.to_s], "r", err: [:child, :out], &:read) - yield :size, $1.to_i*1024 - yield :rss, $2.to_i*1024 - end - end - end - - Status = Struct.new(*keys) - - class Status - def _update - Memory.read_status do |key, val| - self[key] = val - end - end - end - - class Status - Header = members.map {|k| k.to_s.upcase.rjust(6)}.join('') - Format = "%6d" - - def initialize - _update - end - - def to_s - status = each_pair.map {|n,v| - "#{n}:#{v}" - } - "{#{status.join(",")}}" - end - - def self.parse(str) - status = allocate - str.scan(/(?:\A\{|\G,)(#{members.join('|')}):(\d+)(?=,|\}\z)/) do - status[$1] = $2.to_i - end - status - end - end -end diff --git a/test/ruby/test_alias.rb b/test/ruby/test_alias.rb index dec61f6d63..8901fc243c 100644 --- a/test/ruby/test_alias.rb +++ b/test/ruby/test_alias.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestAlias < Test::Unit::TestCase class Alias0 diff --git a/test/ruby/test_argf.rb b/test/ruby/test_argf.rb index 95d694116f..6975b83a28 100644 --- a/test/ruby/test_argf.rb +++ b/test/ruby/test_argf.rb @@ -3,7 +3,6 @@ require 'timeout' require 'tmpdir' require 'tempfile' require 'fileutils' -require_relative 'envutil' class TestArgf < Test::Unit::TestCase def setup diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index d728bb78f0..4116736fcf 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -1,6 +1,5 @@ # coding: US-ASCII require 'test/unit' -require_relative 'envutil' class TestArray < Test::Unit::TestCase def setup diff --git a/test/ruby/test_autoload.rb b/test/ruby/test_autoload.rb index 0dbf613fea..b2b969a749 100644 --- a/test/ruby/test_autoload.rb +++ b/test/ruby/test_autoload.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'tempfile' require 'thread' -require_relative 'envutil' class TestAutoload < Test::Unit::TestCase def test_autoload_so diff --git a/test/ruby/test_beginendblock.rb b/test/ruby/test_beginendblock.rb index d15f21060d..9c9d6b5e61 100644 --- a/test/ruby/test_beginendblock.rb +++ b/test/ruby/test_beginendblock.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'tempfile' require 'timeout' -require_relative 'envutil' class TestBeginEndBlock < Test::Unit::TestCase DIR = File.dirname(File.expand_path(__FILE__)) diff --git a/test/ruby/test_case.rb b/test/ruby/test_case.rb index f17f9aad9b..f20d1dfd7e 100644 --- a/test/ruby/test_case.rb +++ b/test/ruby/test_case.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil.rb' class TestCase < Test::Unit::TestCase def test_case diff --git a/test/ruby/test_class.rb b/test/ruby/test_class.rb index 293524b079..e17f56f913 100644 --- a/test/ruby/test_class.rb +++ b/test/ruby/test_class.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestClass < Test::Unit::TestCase # ------------------ diff --git a/test/ruby/test_comparable.rb b/test/ruby/test_comparable.rb index 1912472423..efa630f8d9 100644 --- a/test/ruby/test_comparable.rb +++ b/test/ruby/test_comparable.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestComparable < Test::Unit::TestCase def setup diff --git a/test/ruby/test_const.rb b/test/ruby/test_const.rb index c4a4d93249..8b3acfb683 100644 --- a/test/ruby/test_const.rb +++ b/test/ruby/test_const.rb @@ -1,6 +1,5 @@ # -*- coding: us-ascii -*- require 'test/unit' -require_relative 'envutil' class TestConst < Test::Unit::TestCase TEST1 = 1 diff --git a/test/ruby/test_continuation.rb b/test/ruby/test_continuation.rb index 52d8de482c..81125183ff 100644 --- a/test/ruby/test_continuation.rb +++ b/test/ruby/test_continuation.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'continuation' require 'fiber' -require_relative 'envutil' class TestContinuation < Test::Unit::TestCase def test_create diff --git a/test/ruby/test_defined.rb b/test/ruby/test_defined.rb index 657f7934f8..d5e84185cc 100644 --- a/test/ruby/test_defined.rb +++ b/test/ruby/test_defined.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestDefined < Test::Unit::TestCase class Foo diff --git a/test/ruby/test_dir_m17n.rb b/test/ruby/test_dir_m17n.rb index 091c12c797..0547f2e62e 100644 --- a/test/ruby/test_dir_m17n.rb +++ b/test/ruby/test_dir_m17n.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'tmpdir' -require_relative 'envutil' class TestDir_M17N < Test::Unit::TestCase def with_tmpdir diff --git a/test/ruby/test_econv.rb b/test/ruby/test_econv.rb index 6bfd6ba136..f423ebfc9e 100644 --- a/test/ruby/test_econv.rb +++ b/test/ruby/test_econv.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestEncodingConverter < Test::Unit::TestCase def check_ec(edst, esrc, eres, dst, src, ec, off, len, opts=nil) diff --git a/test/ruby/test_encoding.rb b/test/ruby/test_encoding.rb index e3b15eb277..63c56e2cd3 100644 --- a/test/ruby/test_encoding.rb +++ b/test/ruby/test_encoding.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestEncoding < Test::Unit::TestCase diff --git a/test/ruby/test_enumerator.rb b/test/ruby/test_enumerator.rb index f2a7afa3c1..b5ced3b12c 100644 --- a/test/ruby/test_enumerator.rb +++ b/test/ruby/test_enumerator.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestEnumerator < Test::Unit::TestCase def setup diff --git a/test/ruby/test_env.rb b/test/ruby/test_env.rb index 52cc487858..88a7631863 100644 --- a/test/ruby/test_env.rb +++ b/test/ruby/test_env.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestEnv < Test::Unit::TestCase IGNORE_CASE = /bccwin|mswin|mingw/ =~ RUBY_PLATFORM diff --git a/test/ruby/test_eval.rb b/test/ruby/test_eval.rb index 315cc72599..1ad186f869 100644 --- a/test/ruby/test_eval.rb +++ b/test/ruby/test_eval.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestEval < Test::Unit::TestCase diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index bb291c08d4..4659def1ea 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'tempfile' -require_relative 'envutil' class TestException < Test::Unit::TestCase def test_exception_rescued diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb index ed071acb39..4acfb139e0 100644 --- a/test/ruby/test_fiber.rb +++ b/test/ruby/test_fiber.rb @@ -2,7 +2,6 @@ require 'test/unit' require 'fiber' require 'continuation' require 'tmpdir' -require_relative './envutil' class TestFiber < Test::Unit::TestCase def test_normal diff --git a/test/ruby/test_file.rb b/test/ruby/test_file.rb index 974752c853..0825c5dd7b 100644 --- a/test/ruby/test_file.rb +++ b/test/ruby/test_file.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'tempfile' require "thread" -require_relative 'envutil' require_relative 'ut_eof' class TestFile < Test::Unit::TestCase diff --git a/test/ruby/test_file_exhaustive.rb b/test/ruby/test_file_exhaustive.rb index bd69addef6..59ed117db8 100644 --- a/test/ruby/test_file_exhaustive.rb +++ b/test/ruby/test_file_exhaustive.rb @@ -1,7 +1,6 @@ require "test/unit" require "fileutils" require "tmpdir" -require_relative "envutil" class TestFileExhaustive < Test::Unit::TestCase DRIVE = Dir.pwd[%r'\A(?:[a-z]:|//[^/]+/[^/]+)'i] diff --git a/test/ruby/test_flip.rb b/test/ruby/test_flip.rb index fc62d93ae6..84f7bf0562 100644 --- a/test/ruby/test_flip.rb +++ b/test/ruby/test_flip.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestFlip < Test::Unit::TestCase def test_hidden_key diff --git a/test/ruby/test_float.rb b/test/ruby/test_float.rb index 30725e8395..ac2d84352b 100644 --- a/test/ruby/test_float.rb +++ b/test/ruby/test_float.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestFloat < Test::Unit::TestCase include EnvUtil diff --git a/test/ruby/test_fnmatch.rb b/test/ruby/test_fnmatch.rb index 15e5d79e35..a0eab545e4 100644 --- a/test/ruby/test_fnmatch.rb +++ b/test/ruby/test_fnmatch.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestFnmatch < Test::Unit::TestCase diff --git a/test/ruby/test_gc.rb b/test/ruby/test_gc.rb index 6d1f93c2c6..9baf429279 100644 --- a/test/ruby/test_gc.rb +++ b/test/ruby/test_gc.rb @@ -1,7 +1,5 @@ require 'test/unit' -require_relative "envutil" - class TestGc < Test::Unit::TestCase class S def initialize(a) diff --git a/test/ruby/test_hash.rb b/test/ruby/test_hash.rb index 4431552dd9..da07df94b6 100644 --- a/test/ruby/test_hash.rb +++ b/test/ruby/test_hash.rb @@ -1,7 +1,6 @@ # -*- coding: us-ascii -*- require 'test/unit' require 'continuation' -require_relative 'envutil' class TestHash < Test::Unit::TestCase diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index af77da2777..2d8072a830 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -8,7 +8,6 @@ require 'stringio' require 'timeout' require 'tempfile' require 'weakref' -require_relative 'envutil' class TestIO < Test::Unit::TestCase module Feature diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb index de64a78f83..97512f0d61 100644 --- a/test/ruby/test_io_m17n.rb +++ b/test/ruby/test_io_m17n.rb @@ -2,7 +2,6 @@ require 'test/unit' require 'tmpdir' require 'timeout' -require_relative 'envutil' class TestIO_M17N < Test::Unit::TestCase ENCS = [ diff --git a/test/ruby/test_iseq.rb b/test/ruby/test_iseq.rb index 94a814ce1b..79c41bb900 100644 --- a/test/ruby/test_iseq.rb +++ b/test/ruby/test_iseq.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestISeq < Test::Unit::TestCase ISeq = RubyVM::InstructionSequence diff --git a/test/ruby/test_keyword.rb b/test/ruby/test_keyword.rb index 95cbcc209c..d71108fd6f 100644 --- a/test/ruby/test_keyword.rb +++ b/test/ruby/test_keyword.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestKeywordArguments < Test::Unit::TestCase def f1(str: "foo", num: 424242) diff --git a/test/ruby/test_lazy_enumerator.rb b/test/ruby/test_lazy_enumerator.rb index 7bf9903ddc..75f24580ca 100644 --- a/test/ruby/test_lazy_enumerator.rb +++ b/test/ruby/test_lazy_enumerator.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestLazyEnumerator < Test::Unit::TestCase class Step diff --git a/test/ruby/test_literal.rb b/test/ruby/test_literal.rb index e4c35e03d9..036be5f470 100644 --- a/test/ruby/test_literal.rb +++ b/test/ruby/test_literal.rb @@ -1,6 +1,5 @@ # -*- coding: us-ascii -*- require 'test/unit' -require_relative 'envutil' class TestRubyLiteral < Test::Unit::TestCase diff --git a/test/ruby/test_m17n.rb b/test/ruby/test_m17n.rb index 6537b070c5..bbaf31f52a 100644 --- a/test/ruby/test_m17n.rb +++ b/test/ruby/test_m17n.rb @@ -1,6 +1,5 @@ # coding: US-ASCII require 'test/unit' -require_relative 'envutil' class TestM17N < Test::Unit::TestCase def assert_encoding(encname, actual, message=nil) diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb index 97cc43071a..9fc2ab10eb 100644 --- a/test/ruby/test_method.rb +++ b/test/ruby/test_method.rb @@ -1,6 +1,5 @@ # -*- coding: us-ascii -*- require 'test/unit' -require_relative 'envutil' class TestMethod < Test::Unit::TestCase def setup diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index 324d45fb7a..5b1f787be0 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'pp' -require_relative 'envutil' $m0 = Module.nesting diff --git a/test/ruby/test_numeric.rb b/test/ruby/test_numeric.rb index b42509dd1a..e818d52e3f 100644 --- a/test/ruby/test_numeric.rb +++ b/test/ruby/test_numeric.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestNumeric < Test::Unit::TestCase class DummyNumeric < Numeric diff --git a/test/ruby/test_object.rb b/test/ruby/test_object.rb index a0f245a453..0fe9471fa6 100644 --- a/test/ruby/test_object.rb +++ b/test/ruby/test_object.rb @@ -1,6 +1,5 @@ # -*- coding: us-ascii -*- require 'test/unit' -require_relative 'envutil' class TestObject < Test::Unit::TestCase def setup diff --git a/test/ruby/test_objectspace.rb b/test/ruby/test_objectspace.rb index de7c6be916..4b8ae74a3c 100644 --- a/test/ruby/test_objectspace.rb +++ b/test/ruby/test_objectspace.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestObjectSpace < Test::Unit::TestCase def self.deftest_id2ref(obj) diff --git a/test/ruby/test_proc.rb b/test/ruby/test_proc.rb index 17778dfede..f760cce3ee 100644 --- a/test/ruby/test_proc.rb +++ b/test/ruby/test_proc.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestProc < Test::Unit::TestCase def setup diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb index 5d252e116b..15a83a33ba 100644 --- a/test/ruby/test_process.rb +++ b/test/ruby/test_process.rb @@ -2,7 +2,6 @@ require 'test/unit' require 'tempfile' require 'timeout' require 'io/wait' -require_relative 'envutil' require 'rbconfig' class TestProcess < Test::Unit::TestCase diff --git a/test/ruby/test_rand.rb b/test/ruby/test_rand.rb index 62efecb833..d2a1244b0b 100644 --- a/test/ruby/test_rand.rb +++ b/test/ruby/test_rand.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestRand < Test::Unit::TestCase def assert_random_int(ws, m, init = 0) diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index e3880bff93..f81047df06 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -2,7 +2,6 @@ require 'test/unit' require 'delegate' require 'timeout' require 'bigdecimal' -require_relative 'envutil' class TestRange < Test::Unit::TestCase def test_range_string diff --git a/test/ruby/test_refinement.rb b/test/ruby/test_refinement.rb index 5a60a6afe9..11077b6e4d 100644 --- a/test/ruby/test_refinement.rb +++ b/test/ruby/test_refinement.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' # to supress warnings for future calls of Module#refine EnvUtil.suppress_warning do diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb index 1ef5bb2d1b..e16075ad38 100644 --- a/test/ruby/test_regexp.rb +++ b/test/ruby/test_regexp.rb @@ -1,6 +1,5 @@ # coding: US-ASCII require 'test/unit' -require_relative 'envutil' class TestRegexp < Test::Unit::TestCase def setup diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb index 971140afff..3b7f6a7977 100644 --- a/test/ruby/test_require.rb +++ b/test/ruby/test_require.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'tempfile' -require_relative 'envutil' require 'tmpdir' class TestRequire < Test::Unit::TestCase diff --git a/test/ruby/test_rubyoptions.rb b/test/ruby/test_rubyoptions.rb index ac7cc7b210..31fe9aecb0 100644 --- a/test/ruby/test_rubyoptions.rb +++ b/test/ruby/test_rubyoptions.rb @@ -4,8 +4,6 @@ require 'test/unit' require 'tmpdir' require 'tempfile' -require_relative 'envutil' - class TestRubyOptions < Test::Unit::TestCase def write_file(filename, content) File.open(filename, "w") {|f| diff --git a/test/ruby/test_settracefunc.rb b/test/ruby/test_settracefunc.rb index b13eea09bd..44a9edee11 100644 --- a/test/ruby/test_settracefunc.rb +++ b/test/ruby/test_settracefunc.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestSetTraceFunc < Test::Unit::TestCase def setup diff --git a/test/ruby/test_signal.rb b/test/ruby/test_signal.rb index e74a2c4e1e..4a59aa66c8 100644 --- a/test/ruby/test_signal.rb +++ b/test/ruby/test_signal.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'timeout' require 'tempfile' -require_relative 'envutil' class TestSignal < Test::Unit::TestCase def test_signal diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb index 543c1389bd..c0fd83e107 100644 --- a/test/ruby/test_string.rb +++ b/test/ruby/test_string.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' # use of $= is deprecated after 1.7.1 def pre_1_7_1 diff --git a/test/ruby/test_struct.rb b/test/ruby/test_struct.rb index 37366c317e..71d93fb09d 100644 --- a/test/ruby/test_struct.rb +++ b/test/ruby/test_struct.rb @@ -1,7 +1,6 @@ # -*- coding: us-ascii -*- require 'test/unit' require 'timeout' -require_relative 'envutil' module TestStruct def test_struct diff --git a/test/ruby/test_super.rb b/test/ruby/test_super.rb index e4d3b8d57a..7d4048b342 100644 --- a/test/ruby/test_super.rb +++ b/test/ruby/test_super.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestSuper < Test::Unit::TestCase class Base diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index e70470555c..00e21606c6 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1,11 +1,10 @@ require 'test/unit' -require_relative 'envutil' class TestSyntax < Test::Unit::TestCase def assert_syntax_files(test) srcdir = File.expand_path("../../..", __FILE__) srcdir = File.join(srcdir, test) - assert_separately(%W[--disable-gem -r#{__dir__}/envutil - #{srcdir}], + assert_separately(%W[--disable-gem - #{srcdir}], __FILE__, __LINE__, <<-'eom', timeout: Float::INFINITY) dir = ARGV.shift for script in Dir["#{dir}/**/*.rb"].sort diff --git a/test/ruby/test_system.rb b/test/ruby/test_system.rb index 9e4369540a..b328cbcc1d 100644 --- a/test/ruby/test_system.rb +++ b/test/ruby/test_system.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'tmpdir' -require_relative 'envutil' class TestSystem < Test::Unit::TestCase def test_system diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb index 65636d9855..fba4737009 100644 --- a/test/ruby/test_thread.rb +++ b/test/ruby/test_thread.rb @@ -1,7 +1,6 @@ # -*- coding: us-ascii -*- require 'test/unit' require 'thread' -require_relative 'envutil' class TestThread < Test::Unit::TestCase class Thread < ::Thread @@ -124,7 +123,6 @@ class TestThread < Test::Unit::TestCase dir = File.dirname(__FILE__) lbtest = File.join(dir, "lbtest.rb") $:.unshift File.join(File.dirname(dir), 'ruby') - require 'envutil' $:.shift 3.times { `#{EnvUtil.rubybin} #{lbtest}` diff --git a/test/ruby/test_threadgroup.rb b/test/ruby/test_threadgroup.rb index f4c03de67e..e158f5ada4 100644 --- a/test/ruby/test_threadgroup.rb +++ b/test/ruby/test_threadgroup.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'thread' -require_relative 'envutil' class TestThreadGroup < Test::Unit::TestCase def test_thread_init diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index a57cd5d72c..cfbf42d6f6 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -2,7 +2,6 @@ require 'test/unit' require 'delegate' require 'timeout' require 'delegate' -require_relative 'envutil' class TestTime < Test::Unit::TestCase def setup diff --git a/test/ruby/test_transcode.rb b/test/ruby/test_transcode.rb index 5f3f51a676..0306dc3e87 100644 --- a/test/ruby/test_transcode.rb +++ b/test/ruby/test_transcode.rb @@ -2,7 +2,7 @@ # some of the comments are in UTF-8 require 'test/unit' -require_relative 'envutil' + class TestTranscode < Test::Unit::TestCase def test_errors assert_raise(Encoding::ConverterNotFoundError) { 'abc'.encode('foo', 'bar') } diff --git a/test/ruby/test_unicode_escape.rb b/test/ruby/test_unicode_escape.rb index 2561b49486..9d0d787e98 100644 --- a/test/ruby/test_unicode_escape.rb +++ b/test/ruby/test_unicode_escape.rb @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- require 'test/unit' -require_relative 'envutil' class TestUnicodeEscape < Test::Unit::TestCase def test_basic diff --git a/test/ruby/test_variable.rb b/test/ruby/test_variable.rb index 308839df14..8dc5c2fe55 100644 --- a/test/ruby/test_variable.rb +++ b/test/ruby/test_variable.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestVariable < Test::Unit::TestCase class Gods diff --git a/test/ruby/test_weakmap.rb b/test/ruby/test_weakmap.rb index 94590a07ff..1279944a37 100644 --- a/test/ruby/test_weakmap.rb +++ b/test/ruby/test_weakmap.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'envutil' class TestWeakMap < Test::Unit::TestCase def setup diff --git a/test/ruby/test_whileuntil.rb b/test/ruby/test_whileuntil.rb index ca853af944..3d8dbee994 100644 --- a/test/ruby/test_whileuntil.rb +++ b/test/ruby/test_whileuntil.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'tmpdir' -require_relative 'envutil' class TestWhileuntil < Test::Unit::TestCase def test_while diff --git a/test/runner.rb b/test/runner.rb index 0e6ee3bea4..11db537596 100644 --- a/test/runner.rb +++ b/test/runner.rb @@ -5,7 +5,6 @@ $LOAD_PATH << src_testdir $LOAD_PATH.unshift "#{src_testdir}/lib" require 'test/unit' -require_relative 'ruby/envutil' module Gem end diff --git a/test/sdbm/test_sdbm.rb b/test/sdbm/test_sdbm.rb index 7a42e78e98..f415584fa2 100644 --- a/test/sdbm/test_sdbm.rb +++ b/test/sdbm/test_sdbm.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'tmpdir' -require_relative '../ruby/envutil' begin require 'sdbm' diff --git a/test/shell/test_command_processor.rb b/test/shell/test_command_processor.rb index 2d3f8a4b1a..66e4244ad3 100644 --- a/test/shell/test_command_processor.rb +++ b/test/shell/test_command_processor.rb @@ -1,6 +1,5 @@ require 'shell' require 'tmpdir' -require_relative '../ruby/envutil' class TestShell < Test::Unit::TestCase end diff --git a/test/test_mathn.rb b/test/test_mathn.rb index bbb88517cf..8a482f3fed 100644 --- a/test/test_mathn.rb +++ b/test/test_mathn.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'ruby/envutil' # mathn redefines too much. It must be isolated to child processes. class TestMathn < Test::Unit::TestCase diff --git a/test/test_open3.rb b/test/test_open3.rb index cd63034f1e..46a991da2d 100644 --- a/test/test_open3.rb +++ b/test/test_open3.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'open3' -require_relative 'ruby/envutil' class TestOpen3 < Test::Unit::TestCase RUBY = EnvUtil.rubybin diff --git a/test/test_pstore.rb b/test/test_pstore.rb index 522f2d1fb3..e028ed68b4 100644 --- a/test/test_pstore.rb +++ b/test/test_pstore.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'pstore' require 'tmpdir' -require_relative 'ruby/envutil' class PStoreTest < Test::Unit::TestCase def setup diff --git a/test/test_pty.rb b/test/test_pty.rb index 7639f6ac77..0ec4f967bd 100644 --- a/test/test_pty.rb +++ b/test/test_pty.rb @@ -1,5 +1,4 @@ require 'test/unit' -require_relative 'ruby/envutil' require 'shellwords' require 'tmpdir' diff --git a/test/test_tempfile.rb b/test/test_tempfile.rb index eb61120b69..2fe62d37c5 100644 --- a/test/test_tempfile.rb +++ b/test/test_tempfile.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'tempfile' require 'thread' -require_relative 'ruby/envutil' class TestTempfile < Test::Unit::TestCase def initialize(*) diff --git a/test/test_time.rb b/test/test_time.rb index dff559f951..f39713b249 100644 --- a/test/test_time.rb +++ b/test/test_time.rb @@ -1,6 +1,5 @@ require 'time' require 'test/unit' -require_relative 'ruby/envutil.rb' class TestTimeExtension < Test::Unit::TestCase # :nodoc: def test_rfc822 diff --git a/test/test_tracer.rb b/test/test_tracer.rb index c8336953d2..ff3ba87be6 100644 --- a/test/test_tracer.rb +++ b/test/test_tracer.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'tmpdir' -require_relative 'ruby/envutil' class TestTracer < Test::Unit::TestCase include EnvUtil diff --git a/test/test_weakref.rb b/test/test_weakref.rb index f12e943423..129c1e6ed1 100644 --- a/test/test_weakref.rb +++ b/test/test_weakref.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'weakref' -require_relative './ruby/envutil' class TestWeakRef < Test::Unit::TestCase def make_weakref(level = 10) diff --git a/test/testunit/test_rake_integration.rb b/test/testunit/test_rake_integration.rb index 0770404287..0d0f8ef4f9 100644 --- a/test/testunit/test_rake_integration.rb +++ b/test/testunit/test_rake_integration.rb @@ -1,6 +1,5 @@ require 'minitest/autorun' require 'tmpdir' -require_relative '../ruby/envutil' class RakeIntegration < MiniTest::Unit::TestCase include Test::Unit::Assertions diff --git a/test/thread/test_cv.rb b/test/thread/test_cv.rb index db6067e71c..b399b479f4 100644 --- a/test/thread/test_cv.rb +++ b/test/thread/test_cv.rb @@ -1,7 +1,6 @@ require 'test/unit' require 'thread' require 'tmpdir' -require_relative '../ruby/envutil' class TestConditionVariable < Test::Unit::TestCase def test_initialized diff --git a/test/thread/test_queue.rb b/test/thread/test_queue.rb index 4f495ccb8c..2bd71dbfc9 100644 --- a/test/thread/test_queue.rb +++ b/test/thread/test_queue.rb @@ -2,7 +2,6 @@ require 'test/unit' require 'thread' require 'tmpdir' require 'timeout' -require_relative '../ruby/envutil' class TestQueue < Test::Unit::TestCase def test_queue_initialized diff --git a/test/uri/test_common.rb b/test/uri/test_common.rb index 24a5325522..562041535e 100644 --- a/test/uri/test_common.rb +++ b/test/uri/test_common.rb @@ -1,6 +1,5 @@ require 'test/unit' require 'uri' -require_relative '../ruby/envutil' module URI diff --git a/test/webrick/utils.rb b/test/webrick/utils.rb index 0e94ad34da..71559a5628 100644 --- a/test/webrick/utils.rb +++ b/test/webrick/utils.rb @@ -1,4 +1,3 @@ -require_relative '../ruby/envutil' require "webrick" begin require "webrick/https" -- cgit v1.2.3