summaryrefslogtreecommitdiff
path: root/test/lib
diff options
context:
space:
mode:
Diffstat (limited to 'test/lib')
-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)