Sha256: d72ba9ca6bd0cede72d70c623c5308c7420679f1b7b7a563ce543795744c09d1

Contents?: true

Size: 1.93 KB

Versions: 30

Compression:

Stored size: 1.93 KB

Contents

# encoding: UTF-8

require 'spec_helper'

describe Mysql2::Error do
  let(:client) { Mysql2::Client.new(DatabaseCredentials['root']) }

  let :error do
    begin
      client.query("HAHAHA")
    rescue Mysql2::Error => e
      error = e
    ensure
      client.close
    end

    error
  end

  it "responds to error_number and sql_state, with aliases" do
    error.should respond_to(:error_number)
    error.should respond_to(:sql_state)

    # Mysql gem compatibility
    error.should respond_to(:errno)
    error.should respond_to(:error)
  end

  if "".respond_to? :encoding
    let :error do
      client = Mysql2::Client.new(DatabaseCredentials['root'])
      begin
        client.query("\xE9\x80\xA0\xE5\xAD\x97")
      rescue Mysql2::Error => e
        error = e
      ensure
        client.close
      end

      error
    end

    let :bad_err do
      client = Mysql2::Client.new(DatabaseCredentials['root'])
      begin
        client.query("\xE5\xC6\x7D\x1F")
      rescue Mysql2::Error => e
        error = e
      ensure
        client.close
      end

      error
    end

    it "returns error messages as UTF-8 by default" do
      with_internal_encoding nil do
        error.message.encoding.should eql(Encoding::UTF_8)
        error.message.valid_encoding?

        bad_err.message.encoding.should eql(Encoding::UTF_8)
        bad_err.message.valid_encoding?

        bad_err.message.should include("??}\u001F")
      end
    end

    it "returns sql state as ASCII" do
      error.sql_state.encoding.should eql(Encoding::US_ASCII)
      error.sql_state.valid_encoding?
    end

    it "returns error messages and sql state in Encoding.default_internal if set" do
      with_internal_encoding 'UTF-16LE' do
        error.message.encoding.should eql(Encoding.default_internal)
        error.message.valid_encoding?

        bad_err.message.encoding.should eql(Encoding.default_internal)
        bad_err.message.valid_encoding?
      end
    end
  end
end

Version data entries

30 entries across 27 versions & 4 rubygems

Version Path
mysql2-0.3.21-x86-mswin32-60 spec/mysql2/error_spec.rb
mysql2-0.3.21-x86-mingw32 spec/mysql2/error_spec.rb
mysql2-0.3.21-x64-mingw32 spec/mysql2/error_spec.rb
mysql2-0.3.21 spec/mysql2/error_spec.rb
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.20/spec/mysql2/error_spec.rb
mysql2-0.3.20-x86-mswin32-60 spec/mysql2/error_spec.rb
mysql2-0.3.20-x86-mingw32 spec/mysql2/error_spec.rb
mysql2-0.3.20-x64-mingw32 spec/mysql2/error_spec.rb
mysql2-0.3.20 spec/mysql2/error_spec.rb
mysql2-0.3.19-x86-mswin32-60 spec/mysql2/error_spec.rb
mysql2-0.3.19-x86-mingw32 spec/mysql2/error_spec.rb
mysql2-0.3.19-x64-mingw32 spec/mysql2/error_spec.rb
mysql2-0.3.19 spec/mysql2/error_spec.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/mysql2-0.3.18/spec/mysql2/error_spec.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/mysql2-0.3.18/spec/mysql2/error_spec.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/mysql2-0.3.18/spec/mysql2/error_spec.rb
mysql2-0.3.18-x64-mingw32 spec/mysql2/error_spec.rb
mysql2-0.3.18-x86-mswin32-60 spec/mysql2/error_spec.rb
mysql2-0.3.18-x86-mingw32 spec/mysql2/error_spec.rb
mysql2-0.3.18 spec/mysql2/error_spec.rb