@@ -286,6 +286,82 @@ def test_omit_on_assignment
286
286
assert_equal ( "" , out )
287
287
end
288
288
289
+ def test_omit_multiline_on_assignment
290
+ input = TestInputMethod . new ( [
291
+ "class A; def inspect; ([?* * 1000] * 3).join(%{\\ n}); end; end; a = A.new\n " ,
292
+ "a\n "
293
+ ] )
294
+ value = ( [ ?* * 1000 ] * 3 ) . join ( %{\n } )
295
+ value_first_line = ( ?* * 1000 ) . to_s
296
+ irb = IRB ::Irb . new ( IRB ::WorkSpace . new ( Object . new ) , input )
297
+ irb . context . return_format = "=> %s\n "
298
+
299
+ irb . context . echo = true
300
+ irb . context . echo_on_assignment = false
301
+ irb . context . omit_on_assignment = true
302
+ out , err = capture_io do
303
+ irb . eval_input
304
+ end
305
+ assert_empty err
306
+ assert_equal ( "=> \n #{ value } \n " , out )
307
+ irb . context . evaluate ( 'A.remove_method(:inspect)' , 0 )
308
+
309
+ input . reset
310
+ irb . context . echo = true
311
+ irb . context . echo_on_assignment = true
312
+ irb . context . omit_on_assignment = true
313
+ out , err = capture_io do
314
+ irb . eval_input
315
+ end
316
+ assert_empty err
317
+ assert_equal ( "=> #{ value_first_line [ 0 ..( input . winsize . last - 9 ) ] } ...\e [0m\n => \n #{ value } \n " , out )
318
+ irb . context . evaluate ( 'A.remove_method(:inspect)' , 0 )
319
+
320
+ input . reset
321
+ irb . context . echo = true
322
+ irb . context . echo_on_assignment = true
323
+ irb . context . omit_on_assignment = false
324
+ out , err = capture_io do
325
+ irb . eval_input
326
+ end
327
+ assert_empty err
328
+ assert_equal ( "=> \n #{ value } \n => \n #{ value } \n " , out )
329
+ irb . context . evaluate ( 'A.remove_method(:inspect)' , 0 )
330
+
331
+ input . reset
332
+ irb . context . echo = false
333
+ irb . context . echo_on_assignment = false
334
+ irb . context . omit_on_assignment = true
335
+ out , err = capture_io do
336
+ irb . eval_input
337
+ end
338
+ assert_empty err
339
+ assert_equal ( "" , out )
340
+ irb . context . evaluate ( 'A.remove_method(:inspect)' , 0 )
341
+
342
+ input . reset
343
+ irb . context . echo = false
344
+ irb . context . echo_on_assignment = true
345
+ irb . context . omit_on_assignment = true
346
+ out , err = capture_io do
347
+ irb . eval_input
348
+ end
349
+ assert_empty err
350
+ assert_equal ( "" , out )
351
+ irb . context . evaluate ( 'A.remove_method(:inspect)' , 0 )
352
+
353
+ input . reset
354
+ irb . context . echo = false
355
+ irb . context . echo_on_assignment = true
356
+ irb . context . omit_on_assignment = false
357
+ out , err = capture_io do
358
+ irb . eval_input
359
+ end
360
+ assert_empty err
361
+ assert_equal ( "" , out )
362
+ irb . context . evaluate ( 'A.remove_method(:inspect)' , 0 )
363
+ end
364
+
289
365
def test_echo_on_assignment_conf
290
366
# Default
291
367
IRB . conf [ :ECHO ] = nil
0 commit comments