summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2024-05-16 15:07:03 -0400
committergit <svn-admin@ruby-lang.org>2024-05-16 19:35:10 +0000
commit92af7054989e6bb605482178f97cee5e59ec9326 (patch)
tree2d8bc027af3d01d937e544dc8794546d9c8a0454 /test
parent98e1e610f6df95aa89481fd92a31a75a808ce2d1 (diff)
[ruby/prism] Truncate source lines in errors messages when too long
https://github.com/ruby/prism/commit/72518f5716
Diffstat (limited to 'test')
-rw-r--r--test/prism/format_errors_test.rb42
-rw-r--r--test/prism/newline_test.rb1
2 files changed, 39 insertions, 4 deletions
diff --git a/test/prism/format_errors_test.rb b/test/prism/format_errors_test.rb
index a1edbef2e8..63206d5765 100644
--- a/test/prism/format_errors_test.rb
+++ b/test/prism/format_errors_test.rb
@@ -6,19 +6,53 @@ return if Prism::BACKEND == :FFI
module Prism
class FormatErrorsTest < TestCase
- def test_format_errors
- assert_equal <<~ERROR, Debug.format_errors("<>", false)
+ def test_basic
+ expected = <<~ERROR
> 1 | <>
| ^ unexpected '<', ignoring it
| ^ unexpected '>', ignoring it
ERROR
- assert_equal <<~'ERROR', Debug.format_errors('"%W"\u"', false)
- > 1 | "%W"\u"
+ assert_equal expected, Debug.format_errors("<>", false)
+ end
+
+ def test_multiple
+ expected = <<~ERROR
+ > 1 | "%W"\\u"
| ^ unexpected backslash, ignoring it
| ^ unexpected local variable or method, expecting end-of-input
| ^ unterminated string meets end of file
ERROR
+
+ assert_equal expected, Debug.format_errors('"%W"\u"', false)
+ end
+
+ def test_truncate_start
+ expected = <<~ERROR
+ > 1 | ... <>
+ | ^ unexpected '<', ignoring it
+ | ^ unexpected '>', ignoring it
+ ERROR
+
+ assert_equal expected, Debug.format_errors("#{" " * 30}<>", false)
+ end
+
+ def test_truncate_end
+ expected = <<~ERROR
+ > 1 | <#{" " * 30} ...
+ | ^ unexpected '<', ignoring it
+ ERROR
+
+ assert_equal expected, Debug.format_errors("<#{" " * 30}a", false)
+ end
+
+ def test_truncate_both
+ expected = <<~ERROR
+ > 1 | ... <#{" " * 30} ...
+ | ^ unexpected '<', ignoring it
+ ERROR
+
+ assert_equal expected, Debug.format_errors("#{" " * 30}<#{" " * 30}a", false)
end
end
end
diff --git a/test/prism/newline_test.rb b/test/prism/newline_test.rb
index d31fb89bc6..f7511f665c 100644
--- a/test/prism/newline_test.rb
+++ b/test/prism/newline_test.rb
@@ -10,6 +10,7 @@ module Prism
filepaths = Dir["*.rb", base: base] - %w[
encoding_test.rb
errors_test.rb
+ format_errors_test.rb
parser_test.rb
regexp_test.rb
static_literals_test.rb