Skip to content

Commit 8518479

Browse files
committed
DRY and add sanity checks
1 parent 9478363 commit 8518479

File tree

1 file changed

+19
-21
lines changed

1 file changed

+19
-21
lines changed

spec/mysql2/error_spec.rb

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
RSpec.describe Mysql2::Error do
66
let(:client) { Mysql2::Client.new(DatabaseCredentials['root']) }
77

8-
let :error do
8+
let(:error) do
99
begin
1010
client.query("HAHAHA")
1111
rescue Mysql2::Error => e
1212
error = e
13-
ensure
14-
client.close
1513
end
1614

1715
error
@@ -27,34 +25,36 @@
2725
end
2826

2927
context 'encoding' do
30-
let :error do
31-
client = Mysql2::Client.new(DatabaseCredentials['root'])
28+
let(:valid_utf8) { '造字' }
29+
let(:error) do
3230
begin
33-
client.query("\xE9\x80\xA0\xE5\xAD\x97")
31+
client.query(valid_utf8)
3432
rescue Mysql2::Error => e
35-
error = e
36-
ensure
37-
client.close
33+
e
3834
end
39-
40-
error
4135
end
4236

43-
let :bad_err do
44-
client = Mysql2::Client.new(DatabaseCredentials['root'])
37+
let(:invalid_utf8) { "\xE5\xC6\x7D\x1F" }
38+
let(:bad_err) do
4539
begin
46-
client.query("\xE5\xC6\x7D\x1F")
40+
client.query(invalid_utf8)
4741
rescue Mysql2::Error => e
48-
error = e
49-
ensure
50-
client.close
42+
e
5143
end
44+
end
45+
46+
before do
47+
pending('String#encoding is not defined') unless String.public_method_defined?(:encoding)
5248

53-
error
49+
# sanity check
50+
expect(valid_utf8.encoding).to eql(Encoding::UTF_8)
51+
expect(valid_utf8).to be_valid_encoding
52+
53+
expect(invalid_utf8.encoding).to eql(Encoding::UTF_8)
54+
expect(invalid_utf8).to_not be_valid_encoding
5455
end
5556

5657
it "returns error messages as UTF-8 by default" do
57-
pending('String#encoding is not defined') unless String.public_method_defined?(:encoding)
5858
with_internal_encoding nil do
5959
expect(error.message.encoding).to eql(Encoding::UTF_8)
6060
error.message.valid_encoding?
@@ -67,13 +67,11 @@
6767
end
6868

6969
it "returns sql state as ASCII" do
70-
pending('String#encoding is not defined') unless String.public_method_defined?(:encoding)
7170
expect(error.sql_state.encoding).to eql(Encoding::US_ASCII)
7271
error.sql_state.valid_encoding?
7372
end
7473

7574
it "returns error messages and sql state in Encoding.default_internal if set" do
76-
pending('String#encoding is not defined') unless String.public_method_defined?(:encoding)
7775
with_internal_encoding 'UTF-16LE' do
7876
expect(error.message.encoding).to eql(Encoding.default_internal)
7977
error.message.valid_encoding?

0 commit comments

Comments
 (0)