@@ -24,21 +24,11 @@ class TestKernelPatches < Minitest::Test
2424 def setup
2525 @tracer1 = MockTracer . new ( "tracer1" )
2626 @tracer2 = MockTracer . new ( "tracer2" )
27- # Ensure a clean state before each test by attempting to clear any existing tracers
28- # This is a bit of a hack, ideally KernelPatches would offer a reset or more direct access
29- current_tracers = CodeTracer ::KernelPatches . class_variable_get ( :@@tracers ) . dup
30- current_tracers . each do |tracer |
31- CodeTracer ::KernelPatches . uninstall ( tracer )
32- end
27+ CodeTracer ::KernelPatches . reset
3328 end
3429
3530 def teardown
36- # Ensure all tracers are uninstalled after each test
37- current_tracers = CodeTracer ::KernelPatches . class_variable_get ( :@@tracers ) . dup
38- current_tracers . each do |tracer |
39- CodeTracer ::KernelPatches . uninstall ( tracer )
40- end
41- # Verify that original methods are restored if no tracers are left
31+ CodeTracer ::KernelPatches . reset
4232 assert_empty CodeTracer ::KernelPatches . class_variable_get ( :@@tracers ) , "Tracers should be empty after teardown"
4333 end
4434
@@ -116,6 +106,24 @@ def test_restoration_of_original_methods
116106 assert_empty @tracer1 . events , "Tracer should not record events after being uninstalled and patches removed"
117107 end
118108
109+ def test_reset_removes_all_tracers_and_restores_methods
110+ CodeTracer ::KernelPatches . install ( @tracer1 )
111+ CodeTracer ::KernelPatches . install ( @tracer2 )
112+
113+ CodeTracer ::KernelPatches . reset
114+
115+ assert_empty CodeTracer ::KernelPatches . class_variable_get ( :@@tracers ) , "No tracers should remain after reset"
116+
117+ p 'after reset'
118+
119+ assert_empty @tracer1 . events , "Tracer1 should not record after reset"
120+ assert_empty @tracer2 . events , "Tracer2 should not record after reset"
121+
122+ assert_equal Kernel . instance_method ( :codetracer_original_p ) , Kernel . instance_method ( :p )
123+ assert_equal Kernel . instance_method ( :codetracer_original_puts ) , Kernel . instance_method ( :puts )
124+ assert_equal Kernel . instance_method ( :codetracer_original_print ) , Kernel . instance_method ( :print )
125+ end
126+
119127 def test_correct_event_arguments
120128 CodeTracer ::KernelPatches . install ( @tracer1 )
121129
0 commit comments