summaryrefslogtreecommitdiff
path: root/test/irb
diff options
context:
space:
mode:
Diffstat (limited to 'test/irb')
-rw-r--r--test/irb/test_cmd.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/irb/test_cmd.rb b/test/irb/test_cmd.rb
index 106e4d2add..045ce0f0e7 100644
--- a/test/irb/test_cmd.rb
+++ b/test/irb/test_cmd.rb
@@ -276,6 +276,40 @@ module TestIRB
assert_match(/\A=> 3\nCUSTOM is added\.\n=> nil\ncustom processing time: .+\n=> 3\n=> nil\n=> 3\n/, out)
end
+ def test_measure_with_proc
+ IRB.init_config(nil)
+ IRB.conf[:PROMPT] = {
+ DEFAULT: {
+ PROMPT_I: '> ',
+ PROMPT_S: '> ',
+ PROMPT_C: '> ',
+ PROMPT_N: '> '
+ }
+ }
+ IRB.conf[:VERBOSE] = false
+ IRB.conf[:PROMPT_MODE] = :DEFAULT
+ IRB.conf[:MEASURE] = false
+ input = TestInputMethod.new([
+ "3\n",
+ "measure { |context, code, line_no, &block|\n",
+ " result = block.()\n",
+ " puts 'aaa' if IRB.conf[:MEASURE]\n",
+ "}\n",
+ "3\n",
+ "measure :off\n",
+ "3\n",
+ ])
+ c = Class.new(Object)
+ irb = IRB::Irb.new(IRB::WorkSpace.new(c.new), input)
+ irb.context.return_format = "=> %s\n"
+ out, err = capture_output do
+ irb.eval_input
+ end
+ assert_empty err
+ assert_match(/\A=> 3\nBLOCK is added\.\n=> nil\naaa\n=> 3\n=> nil\n=> 3\n/, out)
+ assert_empty(c.class_variables)
+ end
+
def test_irb_source
IRB.init_config(nil)
File.write("#{@tmpdir}/a.rb", "a = 'hi'\n")