def run_with_catching_error &b e = nil begin b.call rescue => _e e = _e end return e end assert("sleep works") do e = run_with_catching_error { sleep 1 } assert_nil e end assert("sleep would not accept negative value") do e = run_with_catching_error { sleep -1 } assert_not_equal e, nil assert_equal e.class, ArgumentError end assert("usleep works") do e = run_with_catching_error { usleep 100 } assert_nil e end assert("usleep would not accept negative value") do e = run_with_catching_error { usleep -100 } assert_not_equal e, nil assert_equal e.class, ArgumentError end