Skip to content
This repository was archived by the owner on Nov 30, 2024. It is now read-only.

Commit 7f44214

Browse files
committed
Assert EncodedString fails splitting a string with invalid byte sequence
1 parent ff988ae commit 7f44214

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

spec/rspec/support/encoded_string_spec.rb

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,23 @@ module RSpec::Support
2222
end
2323

2424
describe '#to_s' do
25-
if RUBY_VERSION == '1.9.2' && RSpec::Support::Ruby.mri?
25+
if RUBY_VERSION == '1.9.2' && Ruby.mri?
2626
it 'does nothing to an invalid byte sequence' do
2727
source_encoding = Encoding.find('UTF8-MAC')
2828
incompatible_encoding = Encoding.find('IBM737')
29-
string = "\xEF hi I am not going to work".force_encoding(source_encoding)
29+
string = "\xEF hi I am not going to change".force_encoding(source_encoding)
3030
resulting_string = build_encoded_string(string, incompatible_encoding)
3131

32-
expect(resulting_string.to_s).to eq("\xEF hi I am not going to work")
32+
expect(resulting_string.to_s).to eq("\xEF hi I am not going to change".force_encoding(incompatible_encoding))
3333
end
3434

3535
it 'does nothing to unconvertable characters' do
3636
source_encoding = Encoding.find('UTF-16LE')
3737
incompatible_encoding = Encoding.find('IBM737')
38-
string = "\xEF hi I am not going to work".force_encoding(source_encoding)
38+
string = "\xEF hi I am not going to change".force_encoding(source_encoding)
3939
resulting_string = build_encoded_string(string, incompatible_encoding)
4040

41-
expect(resulting_string.to_s).to eq("\xEF hi I am not going to work")
41+
expect(resulting_string.to_s).to eq("\xEF hi I am not going to change".force_encoding(incompatible_encoding))
4242
end
4343
else
4444

@@ -102,6 +102,14 @@ module RSpec::Support
102102
end
103103

104104
describe '#split' do
105+
it 'fails to split a string with an invalid byte sequence' do
106+
message_with_invalid_byte_sequence = "\xEF \255 \xAD I have bad bytes".force_encoding(target_encoding)
107+
resulting_string = build_encoded_string(message_with_invalid_byte_sequence, target_encoding)
108+
expect {
109+
resulting_string.split("\n")
110+
}.to raise_error(ArgumentError)
111+
end
112+
105113
it 'splits the string based on the delimiter accounting for encoding' do
106114
wrapped_string = "aaaaaaaaaaa#{ascii_arrow_symbol}aaaaa".force_encoding("ASCII-8BIT")
107115

0 commit comments

Comments
 (0)