5
5
require "tempfile"
6
6
7
7
class ErrorHighlightTest < Test ::Unit ::TestCase
8
- ErrorHighlight ::DefaultFormatter . viewport_size = 80
8
+ ErrorHighlight ::DefaultFormatter . snippet_max_width = 80
9
9
10
10
class DummyFormatter
11
11
def self . message_for ( corrections )
@@ -1287,7 +1287,7 @@ def test_no_final_newline
1287
1287
end
1288
1288
end
1289
1289
1290
- def test_errors_on_small_viewports_at_the_end
1290
+ def test_errors_on_small_terminal_window_at_the_end
1291
1291
assert_error_message ( NoMethodError , <<~END ) do
1292
1292
undefined method `time' for #{ ONE_RECV_MESSAGE }
1293
1293
@@ -1299,7 +1299,7 @@ def test_errors_on_small_viewports_at_the_end
1299
1299
end
1300
1300
end
1301
1301
1302
- def test_errors_on_small_viewports_at_the_beginning
1302
+ def test_errors_on_small_terminal_window_at_the_beginning
1303
1303
assert_error_message ( NoMethodError , <<~END ) do
1304
1304
undefined method `time' for #{ ONE_RECV_MESSAGE }
1305
1305
@@ -1312,19 +1312,88 @@ def test_errors_on_small_viewports_at_the_beginning
1312
1312
end
1313
1313
end
1314
1314
1315
- def test_errors_on_small_viewports_at_the_middle
1315
+ def test_errors_on_small_terminal_window_at_the_middle_near_beginning
1316
+ assert_error_message ( NoMethodError , <<~END ) do
1317
+ undefined method `time' for #{ ONE_RECV_MESSAGE }
1318
+
1319
+ 100000000000000000000000000000000000000 + 1.time { 1000000000000000000000...
1320
+ ^^^^^
1321
+ END
1322
+
1323
+ 100000000000000000000000000000000000000 + 1 . time { 100000000000000000000000000000000000000 }
1324
+ end
1325
+ end
1326
+
1327
+ def test_errors_on_small_terminal_window_at_the_middle
1316
1328
assert_error_message ( NoMethodError , <<~END ) do
1317
1329
undefined method `time' for #{ ONE_RECV_MESSAGE }
1318
1330
1319
1331
...000000000000000000000000000000000 + 1.time { 10000000000000000000000000000...
1320
1332
^^^^^
1321
1333
END
1322
1334
1323
- 100000000000000000000000000000000000000 + 1 . time { 100000000000000000000000000000000000000 }
1335
+ 10000000000000000000000000000000000000000000000000000000000000000000000 + 1 . time { 1000000000000000000000000000000 }
1336
+ end
1337
+ end
1338
+
1339
+ def test_errors_on_extremely_small_terminal_window
1340
+ custom_max_width = 30
1341
+ original_max_width = ErrorHighlight ::DefaultFormatter . snippet_max_width
1342
+
1343
+ ErrorHighlight ::DefaultFormatter . snippet_max_width = custom_max_width
1344
+
1345
+ assert_error_message ( NoMethodError , <<~END ) do
1346
+ undefined method `time' for #{ ONE_RECV_MESSAGE }
1347
+
1348
+ ...00000000 + 1.time { 1000...
1349
+ ^^^^^
1350
+ END
1351
+
1352
+ 100000000000000 + 1 . time { 100000000000000 }
1353
+ end
1354
+ ensure
1355
+ ErrorHighlight ::DefaultFormatter . snippet_max_width = original_max_width
1356
+ end
1357
+
1358
+ def test_errors_on_terminal_window_smaller_than_min_width
1359
+ custom_max_width = 5
1360
+ original_max_width = ErrorHighlight ::DefaultFormatter . snippet_max_width
1361
+
1362
+ ErrorHighlight ::DefaultFormatter . snippet_max_width = custom_max_width
1363
+
1364
+ assert_error_message ( NoMethodError , <<~END ) do
1365
+ undefined method `time' for #{ ONE_RECV_MESSAGE }
1366
+
1367
+ ...000 + 1.time {...
1368
+ ^^^^^
1369
+ END
1370
+
1371
+ 100000000000000 + 1 . time { 100000000000000 }
1372
+ end
1373
+ ensure
1374
+ ErrorHighlight ::DefaultFormatter . snippet_max_width = original_max_width
1375
+ end
1376
+
1377
+ def test_errors_on_terminal_window_when_truncation_is_disabled
1378
+ custom_max_width = nil
1379
+ original_max_width = ErrorHighlight ::DefaultFormatter . snippet_max_width
1380
+
1381
+ ErrorHighlight ::DefaultFormatter . snippet_max_width = custom_max_width
1382
+
1383
+ assert_error_message ( NoMethodError , <<~END ) do
1384
+ undefined method `time' for #{ ONE_RECV_MESSAGE }
1385
+
1386
+ 10000000000000000000000000000000000000000000000000000000000000000000000 + 1.time { 1000000000000000000000000000000 }
1387
+ ^^^^^
1388
+ END
1389
+
1390
+ 10000000000000000000000000000000000000000000000000000000000000000000000 + 1 . time { 1000000000000000000000000000000 }
1324
1391
end
1392
+ ensure
1393
+ ErrorHighlight ::DefaultFormatter . snippet_max_width = original_max_width
1325
1394
end
1326
1395
1327
- def test_errors_on_small_viewports_when_larger_than_viewport
1396
+ def test_errors_on_small_terminal_window_when_larger_than_viewport
1328
1397
assert_error_message ( NoMethodError , <<~END ) do
1329
1398
undefined method `timessssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss!' for #{ ONE_RECV_MESSAGE }
1330
1399
@@ -1336,7 +1405,7 @@ def test_errors_on_small_viewports_when_larger_than_viewport
1336
1405
end
1337
1406
end
1338
1407
1339
- def test_errors_on_small_viewports_when_exact_size_of_viewport
1408
+ def test_errors_on_small_terminal_window_when_exact_size_of_viewport
1340
1409
assert_error_message ( NoMethodError , <<~END ) do
1341
1410
undefined method `timessssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss!' for #{ ONE_RECV_MESSAGE }
1342
1411
0 commit comments