mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* regparse.c (parse_char_class): should match with a hyphen after a
range in a character class. * test/ruby/test_regexp.rb (TestRegexp#test_char_class): fixed wrong test. * test/ruby/test_regexp.rb (TestRegexp#check): now can accept the error message. * test/ruby/test_regexp.rb (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): renamed because the previous name was wrong. * test/ruby/test_regexp.rb (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): added more test pattern. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37175 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
872a47c1bf
commit
be3a6b8c40
3 changed files with 27 additions and 8 deletions
19
ChangeLog
19
ChangeLog
|
@ -1,3 +1,22 @@
|
||||||
|
Sat Oct 13 23:15:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
|
|
||||||
|
* regparse.c (parse_char_class): should match with a hyphen after a
|
||||||
|
range in a character class.
|
||||||
|
|
||||||
|
* test/ruby/test_regexp.rb (TestRegexp#test_char_class): fixed wrong
|
||||||
|
test.
|
||||||
|
|
||||||
|
* test/ruby/test_regexp.rb (TestRegexp#check): now can accept the
|
||||||
|
error message.
|
||||||
|
|
||||||
|
* test/ruby/test_regexp.rb
|
||||||
|
(TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): renamed
|
||||||
|
because the previous name was wrong.
|
||||||
|
|
||||||
|
* test/ruby/test_regexp.rb
|
||||||
|
(TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): added
|
||||||
|
more test pattern.
|
||||||
|
|
||||||
Sat Oct 13 03:01:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Sat Oct 13 03:01:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* file.c (realpath_rec): prevent link from GC while link_names refers
|
* file.c (realpath_rec): prevent link from GC while link_names refers
|
||||||
|
|
|
@ -4706,7 +4706,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
|
||||||
|
|
||||||
if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) {
|
if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) {
|
||||||
CC_ESC_WARN(env, (UChar* )"-");
|
CC_ESC_WARN(env, (UChar* )"-");
|
||||||
goto sb_char; /* [0-9-a] is allowed as [0-9\-a] */
|
goto range_end_val; /* [0-9-a] is allowed as [0-9\-a] */
|
||||||
}
|
}
|
||||||
r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS;
|
r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS;
|
||||||
goto err;
|
goto err;
|
||||||
|
|
|
@ -542,17 +542,17 @@ class TestRegexp < Test::Unit::TestCase
|
||||||
assert(m.tainted?)
|
assert(m.tainted?)
|
||||||
end
|
end
|
||||||
|
|
||||||
def check(re, ss, fs = [])
|
def check(re, ss, fs = [], msg = nil)
|
||||||
re = Regexp.new(re) unless re.is_a?(Regexp)
|
re = Regexp.new(re) unless re.is_a?(Regexp)
|
||||||
ss = [ss] unless ss.is_a?(Array)
|
ss = [ss] unless ss.is_a?(Array)
|
||||||
ss.each do |e, s|
|
ss.each do |e, s|
|
||||||
s ||= e
|
s ||= e
|
||||||
assert_match(re, s)
|
assert_match(re, s, msg)
|
||||||
m = re.match(s)
|
m = re.match(s)
|
||||||
assert_equal(e, m[0])
|
assert_equal(e, m[0], msg)
|
||||||
end
|
end
|
||||||
fs = [fs] unless fs.is_a?(Array)
|
fs = [fs] unless fs.is_a?(Array)
|
||||||
fs.each {|s| assert_no_match(re, s) }
|
fs.each {|s| assert_no_match(re, s, msg) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def failcheck(re)
|
def failcheck(re)
|
||||||
|
@ -732,7 +732,7 @@ class TestRegexp < Test::Unit::TestCase
|
||||||
check(/\A[a-b-]\z/, %w(a b -), ["", "c"])
|
check(/\A[a-b-]\z/, %w(a b -), ["", "c"])
|
||||||
check('\A[a-b-&&\w]\z', %w(a b), ["", "-"])
|
check('\A[a-b-&&\w]\z', %w(a b), ["", "-"])
|
||||||
check('\A[a-b-&&\W]\z', "-", ["", "a", "b"])
|
check('\A[a-b-&&\W]\z', "-", ["", "a", "b"])
|
||||||
check('\A[a-c-e]\z', %w(a b c e), %w(- d)) # is it OK?
|
check('\A[a-c-e]\z', %w(a b c e -), %w(d))
|
||||||
check(/\A[a-f&&[^b-c]&&[^e]]\z/, %w(a d f), %w(b c e g 0))
|
check(/\A[a-f&&[^b-c]&&[^e]]\z/, %w(a d f), %w(b c e g 0))
|
||||||
check(/\A[[^b-c]&&[^e]&&a-f]\z/, %w(a d f), %w(b c e g 0))
|
check(/\A[[^b-c]&&[^e]&&a-f]\z/, %w(a d f), %w(b c e g 0))
|
||||||
check(/\A[\n\r\t]\z/, ["\n", "\r", "\t"])
|
check(/\A[\n\r\t]\z/, ["\n", "\r", "\t"])
|
||||||
|
@ -912,11 +912,11 @@ class TestRegexp < Test::Unit::TestCase
|
||||||
assert_equal(1, error.message.scan(/.*invalid .*escape.*/i).size, bug3539)
|
assert_equal(1, error.message.scan(/.*invalid .*escape.*/i).size, bug3539)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_raw_hyphen_and_type_char_after_range
|
def test_raw_hyphen_and_tk_char_type_after_range
|
||||||
bug6853 = '[ruby-core:47115]'
|
bug6853 = '[ruby-core:47115]'
|
||||||
begin
|
begin
|
||||||
verbose, $VERBOSE = $VERBOSE, nil
|
verbose, $VERBOSE = $VERBOSE, nil
|
||||||
assert_match(/[0-1-\s]/, ' ', bug6853)
|
check(/[0-1-\s]/, [' ', '-'], [], bug6853)
|
||||||
ensure
|
ensure
|
||||||
$VERBOSE = verbose
|
$VERBOSE = verbose
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue