summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-12 21:32:13 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-12 21:32:13 +0000
commitc895b54f14c7654bcd53a1683b8df3244156f7d9 (patch)
treea3bfeb71f3c7204cb2770203e56bfd94c54ee9ef
parent3f2305f15bb1134330c1fb47385d94db09b0fa38 (diff)
Check that global encodings are not changed in test-all
* Check that Encoding.default_internal and Encoding.default_external are the same before and after every test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61191 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--test/lib/leakchecker.rb24
1 files changed, 23 insertions, 1 deletions
diff --git a/test/lib/leakchecker.rb b/test/lib/leakchecker.rb
index 8094fcbde7..d236b7d7f0 100644
--- a/test/lib/leakchecker.rb
+++ b/test/lib/leakchecker.rb
@@ -5,6 +5,7 @@ class LeakChecker
@tempfile_info = find_tempfiles
@thread_info = find_threads
@env_info = find_env
+ @encoding_info = find_encodings
end
def check(test_name)
@@ -12,7 +13,8 @@ class LeakChecker
check_fd_leak(test_name),
check_thread_leak(test_name),
check_tempfile_leak(test_name),
- check_env(test_name)
+ check_env(test_name),
+ check_encodings(test_name),
]
GC.start if leaks.any?
end
@@ -197,6 +199,26 @@ class LeakChecker
return true
end
+ def find_encodings
+ [Encoding.default_internal, Encoding.default_external]
+ end
+
+ def check_encodings(test_name)
+ old_internal, old_external = @encoding_info
+ new_internal, new_external = find_encodings
+ leaked = false
+ if new_internal != old_internal
+ leaked = true
+ puts "Encoding.default_internal changed: #{test_name} : #{old_internal.inspect} to #{new_internal.inspect}"
+ end
+ if new_external != old_external
+ leaked = true
+ puts "Encoding.default_external changed: #{test_name} : #{old_external.inspect} to #{new_external.inspect}"
+ end
+ @encoding_info = [new_internal, new_external]
+ return leaked
+ end
+
def puts(*a)
output = MiniTest::Unit.output
if defined?(output.set_encoding)