Skip to content

Commit

Permalink
Refresh shared spec for Regexp.quote/Regexp.escape
Browse files Browse the repository at this point in the history
This includes a spec for the escape of `$`, which means we can remove
our local spec for this.
  • Loading branch information
herwinw committed Sep 19, 2024
1 parent 1ffc88c commit 961682d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 13 deletions.
14 changes: 7 additions & 7 deletions spec/core/regexp/shared/quote.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

describe :regexp_quote, shared: true do
it "escapes any characters with special meaning in a regular expression" do
Regexp.send(@method, '\*?{}.+^[]()- ').should == '\\\\\*\?\{\}\.\+\^\[\]\(\)\-\\ '
Regexp.send(@method, "\*?{}.+^[]()- ").should == '\\*\\?\\{\\}\\.\\+\\^\\[\\]\\(\\)\\-\\ '
Regexp.send(@method, '\*?{}.+^$[]()- ').should == '\\\\\*\?\{\}\.\+\^\$\[\]\(\)\-\\ '
Regexp.send(@method, "\*?{}.+^$[]()- ").should == '\\*\\?\\{\\}\\.\\+\\^\\$\\[\\]\\(\\)\\-\\ '
Regexp.send(@method, '\n\r\f\t').should == '\\\\n\\\\r\\\\f\\\\t'
Regexp.send(@method, "\n\r\f\t").should == '\\n\\r\\f\\t'
end
Expand All @@ -18,23 +18,23 @@
end

it "works for broken strings" do
Regexp.send(@method, "a.\x85b.".force_encoding("US-ASCII")).should =="a\\.\x85b\\.".force_encoding("US-ASCII")
Regexp.send(@method, "a.\x80".force_encoding("UTF-8")).should == "a\\.\x80".force_encoding("UTF-8")
Regexp.send(@method, "a.\x85b.".dup.force_encoding("US-ASCII")).should =="a\\.\x85b\\.".dup.force_encoding("US-ASCII")
Regexp.send(@method, "a.\x80".dup.force_encoding("UTF-8")).should == "a\\.\x80".dup.force_encoding("UTF-8")
end

it "sets the encoding of the result to US-ASCII if there are only US-ASCII characters present in the input String" do
str = "abc".force_encoding("euc-jp")
str = "abc".dup.force_encoding("euc-jp")
Regexp.send(@method, str).encoding.should == Encoding::US_ASCII
end

it "sets the encoding of the result to the encoding of the String if any non-US-ASCII characters are present in an input String with valid encoding" do
str = "ありがとう".force_encoding("utf-8")
str = "ありがとう".dup.force_encoding("utf-8")
str.valid_encoding?.should be_true
Regexp.send(@method, str).encoding.should == Encoding::UTF_8
end

it "sets the encoding of the result to BINARY if any non-US-ASCII characters are present in an input String with invalid encoding" do
str = "\xff".force_encoding "us-ascii"
str = "\xff".dup.force_encoding "us-ascii"
str.valid_encoding?.should be_false
Regexp.send(@method, "\xff").encoding.should == Encoding::BINARY
end
Expand Down
6 changes: 0 additions & 6 deletions test/natalie/regexp_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,6 @@
end
end

describe '.escape and .quote' do
it 'escapes special characters' do
Regexp.escape('$').should == '\$'
end
end

describe '#==' do
it 'returns true if the regexp source is the same' do
/foo/.should == /foo/
Expand Down

0 comments on commit 961682d

Please sign in to comment.