summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/lib/leakchecker.rb33
1 files changed, 32 insertions, 1 deletions
diff --git a/test/lib/leakchecker.rb b/test/lib/leakchecker.rb
index a1093debcd..24f19dec56 100644
--- a/test/lib/leakchecker.rb
+++ b/test/lib/leakchecker.rb
@@ -3,13 +3,15 @@ class LeakChecker
@fd_info = find_fds
@tempfile_info = find_tempfiles
@thread_info = find_threads
+ @env_info = find_env
end
def check(test_name)
leaked1 = check_fd_leak(test_name)
leaked2 = check_thread_leak(test_name)
leaked3 = check_tempfile_leak(test_name)
- GC.start if leaked1 || leaked2 || leaked3
+ leaked4 = check_env(test_name)
+ GC.start if leaked1 || leaked2 || leaked3 || leaked4
end
def find_fds
@@ -161,6 +163,35 @@ class LeakChecker
return leaked
end
+ def find_env
+ ENV.to_h
+ end
+
+ def check_env(test_name)
+ old_env = @env_info
+ new_env = ENV.to_h
+ return false if old_env == new_env
+ (old_env.keys | new_env.keys).sort.each {|k|
+ if old_env.has_key?(k)
+ if new_env.has_key?(k)
+ if old_env[k] != new_env[k]
+ puts "Environment variable changed: #{test_name} : #{k.inspect} changed : #{old_env[k].inspect} -> #{new_env[k].inspect}"
+ end
+ else
+ puts "Environment variable changed: #{test_name} : #{k.inspect} deleted"
+ end
+ else
+ if new_env.has_key?(k)
+ puts "Environment variable changed: #{test_name} : #{k.inspect} added"
+ else
+ flunk "unreachable"
+ end
+ end
+ }
+ @env_info = new_env
+ return true
+ end
+
def puts(*a)
MiniTest::Unit.output.puts(*a)
end