From ab516e263c06fbd755d4805ad529c32b1b8292b5 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 1 Dec 2019 21:14:58 +0900 Subject: [ruby/spec] Fix failures with LC_ALL=C https://github.com/ruby/spec/commit/51047687c0 https://github.com/ruby/spec/commit/2b87b467cc --- spec/ruby/core/env/each_pair_spec.rb | 2 +- spec/ruby/core/env/each_spec.rb | 2 +- spec/ruby/core/env/each_value_spec.rb | 4 ++-- spec/ruby/core/env/shared/each.rb | 6 ++---- spec/ruby/core/env/shared/to_hash.rb | 4 ++-- spec/ruby/core/env/spec_helper.rb | 26 ++++++++++++++++++++++++++ spec/ruby/core/env/to_a_spec.rb | 6 +++--- spec/ruby/core/env/to_h_spec.rb | 2 +- spec/ruby/core/env/to_hash_spec.rb | 2 +- spec/ruby/core/env/values_spec.rb | 4 ++-- 10 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 spec/ruby/core/env/spec_helper.rb diff --git a/spec/ruby/core/env/each_pair_spec.rb b/spec/ruby/core/env/each_pair_spec.rb index 01082dd419..2d7ed5faa0 100644 --- a/spec/ruby/core/env/each_pair_spec.rb +++ b/spec/ruby/core/env/each_pair_spec.rb @@ -1,4 +1,4 @@ -require_relative '../../spec_helper' +require_relative 'spec_helper' require_relative 'shared/each' describe "ENV.each_pair" do diff --git a/spec/ruby/core/env/each_spec.rb b/spec/ruby/core/env/each_spec.rb index 06d8be3124..d1e06f55b6 100644 --- a/spec/ruby/core/env/each_spec.rb +++ b/spec/ruby/core/env/each_spec.rb @@ -1,4 +1,4 @@ -require_relative '../../spec_helper' +require_relative 'spec_helper' require_relative 'shared/each' describe "ENV.each" do diff --git a/spec/ruby/core/env/each_value_spec.rb b/spec/ruby/core/env/each_value_spec.rb index 60d9f605d8..cc3c9ebfb8 100644 --- a/spec/ruby/core/env/each_value_spec.rb +++ b/spec/ruby/core/env/each_value_spec.rb @@ -1,4 +1,4 @@ -require_relative '../../spec_helper' +require_relative 'spec_helper' require_relative '../enumerable/shared/enumeratorized' describe "ENV.each_value" do @@ -26,7 +26,7 @@ describe "ENV.each_value" do it "uses the locale encoding" do ENV.each_value do |value| - value.encoding.should == Encoding.find('locale') + value.should.be_locale_env end end diff --git a/spec/ruby/core/env/shared/each.rb b/spec/ruby/core/env/shared/each.rb index eb375046d6..d901b854c4 100644 --- a/spec/ruby/core/env/shared/each.rb +++ b/spec/ruby/core/env/shared/each.rb @@ -35,8 +35,6 @@ describe :env_each, shared: true do @internal = Encoding.default_internal Encoding.default_external = Encoding::BINARY - - @locale_encoding = Encoding.find "locale" end after :each do @@ -48,8 +46,8 @@ describe :env_each, shared: true do Encoding.default_internal = nil ENV.send(@method) do |key, value| - key.encoding.should equal(@locale_encoding) - value.encoding.should equal(@locale_encoding) + key.should.be_locale_env + value.should.be_locale_env end end diff --git a/spec/ruby/core/env/shared/to_hash.rb b/spec/ruby/core/env/shared/to_hash.rb index bfa5699e8d..a0d4d7ce69 100644 --- a/spec/ruby/core/env/shared/to_hash.rb +++ b/spec/ruby/core/env/shared/to_hash.rb @@ -15,11 +15,11 @@ describe :env_to_hash, shared: true do end it "uses the locale encoding for keys" do - ENV.send(@method).keys.all? {|k| k.encoding == Encoding.find('locale') }.should be_true + ENV.send(@method).keys.each {|k| k.should.be_locale_env } end it "uses the locale encoding for values" do - ENV.send(@method).values.all? {|v| v.encoding == Encoding.find('locale') }.should be_true + ENV.send(@method).values.each {|k| k.should.be_locale_env } end it "duplicates the ENV when converting to a Hash" do diff --git a/spec/ruby/core/env/spec_helper.rb b/spec/ruby/core/env/spec_helper.rb new file mode 100644 index 0000000000..470ffa58bc --- /dev/null +++ b/spec/ruby/core/env/spec_helper.rb @@ -0,0 +1,26 @@ +require_relative '../../spec_helper' + +locale_env_matcher = Class.new do + def initialize(name = 'locale') + encoding = Encoding.find(name) + @encodings = (encoding = Encoding::US_ASCII) ? + [encoding, Encoding::ASCII_8BIT] : [encoding] + end + + def matches?(actual) + @actual = actual = actual.encoding + @encodings.include?(actual) + end + + def failure_message + ["Expected #{@actual} to be #{@encodings.join(' or ')}"] + end + + def negative_failure_message + ["Expected #{@actual} not to be #{@encodings.join(' or ')}"] + end +end + +String.__send__(:define_method, :be_locale_env) do |expected = 'locale'| + locale_env_matcher.new(expected) +end diff --git a/spec/ruby/core/env/to_a_spec.rb b/spec/ruby/core/env/to_a_spec.rb index 25441eb029..39e3877b48 100644 --- a/spec/ruby/core/env/to_a_spec.rb +++ b/spec/ruby/core/env/to_a_spec.rb @@ -1,4 +1,4 @@ -require_relative '../../spec_helper' +require_relative 'spec_helper' describe "ENV.to_a" do @@ -11,8 +11,8 @@ describe "ENV.to_a" do it "returns the entries in the locale encoding" do ENV.to_a.each do |key, value| - key.encoding.should == Encoding.find('locale') - value.encoding.should == Encoding.find('locale') + key.should.be_locale_env + value.should.be_locale_env end end end diff --git a/spec/ruby/core/env/to_h_spec.rb b/spec/ruby/core/env/to_h_spec.rb index 822167aa2b..65cdb59951 100644 --- a/spec/ruby/core/env/to_h_spec.rb +++ b/spec/ruby/core/env/to_h_spec.rb @@ -1,4 +1,4 @@ -require_relative '../../spec_helper' +require_relative 'spec_helper' require_relative 'shared/to_hash' describe "ENV.to_h" do diff --git a/spec/ruby/core/env/to_hash_spec.rb b/spec/ruby/core/env/to_hash_spec.rb index 4de0e077bb..306572c353 100644 --- a/spec/ruby/core/env/to_hash_spec.rb +++ b/spec/ruby/core/env/to_hash_spec.rb @@ -1,4 +1,4 @@ -require_relative '../../spec_helper' +require_relative 'spec_helper' require_relative 'shared/to_hash' describe "ENV.to_hash" do diff --git a/spec/ruby/core/env/values_spec.rb b/spec/ruby/core/env/values_spec.rb index 919d7ffb7c..71bc877d31 100644 --- a/spec/ruby/core/env/values_spec.rb +++ b/spec/ruby/core/env/values_spec.rb @@ -1,4 +1,4 @@ -require_relative '../../spec_helper' +require_relative 'spec_helper' describe "ENV.values" do @@ -8,7 +8,7 @@ describe "ENV.values" do it "uses the locale encoding" do ENV.values.each do |value| - value.encoding.should == Encoding.find('locale') + value.should.be_locale_env end end end -- cgit v1.2.3