diff options
| author | Kevin Newton <kddnewton@gmail.com> | 2024-06-05 11:11:22 -0400 |
|---|---|---|
| committer | Kevin Newton <kddnewton@gmail.com> | 2024-06-05 14:40:03 -0400 |
| commit | 0406efaf055d0db03d33ca215b407a2f74ce9bc1 (patch) | |
| tree | 3961771e56b167b03b969fcf9dcc3bc5be628254 /test | |
| parent | d604287626cc5fdb63e8671c9733f177d5824b4f (diff) | |
[ruby/prism] Add Onigmo error for invalid repeat and empty group name
https://github.com/ruby/prism/commit/953601e3c0
Diffstat (limited to 'test')
| -rw-r--r-- | test/prism/onigmo_test.rb | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/test/prism/onigmo_test.rb b/test/prism/onigmo_test.rb index 0815be2043..8b2160968f 100644 --- a/test/prism/onigmo_test.rb +++ b/test/prism/onigmo_test.rb @@ -20,12 +20,22 @@ module Prism assert_error("[]", "empty char-class") end + def test_ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED + assert_error("*", "target of repeat operator is not specified") + assert_error("+", "target of repeat operator is not specified") + assert_error("?", "target of repeat operator is not specified") + end + + def test_ONIGERR_EMPTY_GROUP_NAME + assert_error("(?<>)", "group name is empty") + end + private def assert_error(source, message) result = Prism.parse(%Q{/#{source}/ =~ ""}) - assert result.failure? + assert result.failure?, "Expected #{source.inspect} to error" assert_equal message, result.errors.first.message error = assert_raise(ArgumentError) { Onigmo.parse(source) } @@ -35,26 +45,9 @@ module Prism end __END__ -case ONIGERR_PREMATURE_END_OF_CHAR_CLASS: - p = "premature end of char-class"; break; -case ONIGERR_END_PATTERN_AT_ESCAPE: - p = "end pattern at escape"; break; -case ONIGERR_END_PATTERN_AT_META: - p = "end pattern at meta"; break; -case ONIGERR_END_PATTERN_AT_CONTROL: - p = "end pattern at control"; break; -case ONIGERR_META_CODE_SYNTAX: - p = "invalid meta-code syntax"; break; -case ONIGERR_CONTROL_CODE_SYNTAX: - p = "invalid control-code syntax"; break; -case ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE: - p = "char-class value at end of range"; break; + case ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS: p = "unmatched range specifier in char-class"; break; -case ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED: - p = "target of repeat operator is not specified"; break; -case ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID: - p = "target of repeat operator is invalid"; break; case ONIGERR_UNMATCHED_CLOSE_PARENTHESIS: p = "unmatched close parenthesis"; break; case ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS: @@ -112,13 +105,6 @@ case ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL: case ONIGERR_NEVER_ENDING_RECURSION: p = "never ending recursion"; break; #ifdef USE_CAPTURE_HISTORY -case ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY: - p = "group number is too big for capture history"; break; -#endif -case ONIGERR_INVALID_CHAR_PROPERTY_NAME: - p = "invalid character property name {%n}"; break; -case ONIGERR_TOO_MANY_CAPTURE_GROUPS: - p = "too many capture groups are specified"; break; case ONIGERR_INVALID_CODE_POINT_VALUE: p = "invalid code point value"; break; case ONIGERR_TOO_BIG_WIDE_CHAR_VALUE: |
