mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
ffd0820ab3
This removes the related tests, and puts the related specs behind version guards. This affects all code in lib, including some libraries that may want to support older versions of Ruby.
51 lines
960 B
Ruby
51 lines
960 B
Ruby
# frozen_string_literal: false
|
|
require 'test/unit'
|
|
|
|
class TestTrace < Test::Unit::TestCase
|
|
def test_trace
|
|
$x = 1234
|
|
$y = 0
|
|
trace_var :$x, proc{$y = $x}
|
|
$x = 40414
|
|
assert_equal($x, $y)
|
|
|
|
untrace_var :$x
|
|
$x = 19660208
|
|
assert_not_equal($x, $y)
|
|
|
|
trace_var :$x, proc{$x *= 2}
|
|
$x = 5
|
|
assert_equal(10, $x)
|
|
|
|
untrace_var :$x
|
|
end
|
|
|
|
def test_trace_proc_that_raises_exception
|
|
$x = 1234
|
|
trace_var :$x, proc { raise }
|
|
assert_raise(RuntimeError) { $x = 42 }
|
|
ensure
|
|
untrace_var :$x
|
|
end
|
|
|
|
def test_trace_string
|
|
$x = 1234
|
|
trace_var :$x, "$y = :bar"
|
|
$x = 42
|
|
assert_equal(:bar, $y)
|
|
ensure
|
|
untrace_var :$x
|
|
end
|
|
|
|
def test_trace_break
|
|
bug2722 = '[ruby-core:31783]'
|
|
a = Object.new.extend(Enumerable)
|
|
def a.each
|
|
yield
|
|
end
|
|
assert(Thread.start {
|
|
Thread.current.add_trace_func(proc{})
|
|
a.any? {true}
|
|
}.value, bug2722)
|
|
end
|
|
end
|