diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-10-27 10:48:40 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-10-27 10:48:40 +0000 |
commit | 3e6337b88b5255aba07b8f44de72cd5885f59465 (patch) | |
tree | 6146781aa381404b88ea4bfa2a44e75e8bc90d14 /spec/ruby/core/proc | |
parent | ecc707e233a5577ea2048b3199d4baaf96c6b0f8 (diff) |
Update to ruby/spec@8b743a3
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/core/proc')
-rw-r--r-- | spec/ruby/core/proc/element_reference_spec.rb | 13 | ||||
-rw-r--r-- | spec/ruby/core/proc/fixtures/proc_aref.rb | 9 | ||||
-rw-r--r-- | spec/ruby/core/proc/fixtures/proc_aref_frozen.rb | 10 | ||||
-rw-r--r-- | spec/ruby/core/proc/shared/to_s.rb | 18 |
4 files changed, 50 insertions, 0 deletions
diff --git a/spec/ruby/core/proc/element_reference_spec.rb b/spec/ruby/core/proc/element_reference_spec.rb index 1c9b89521a..f60ae1b086 100644 --- a/spec/ruby/core/proc/element_reference_spec.rb +++ b/spec/ruby/core/proc/element_reference_spec.rb @@ -1,6 +1,8 @@ require_relative '../../spec_helper' require_relative 'shared/call' require_relative 'shared/call_arguments' +require_relative 'fixtures/proc_aref' +require_relative 'fixtures/proc_aref_frozen' describe "Proc#[]" do it_behaves_like :proc_call, :[] @@ -14,3 +16,14 @@ end describe "Proc#call on a Proc created with Kernel#lambda or Kernel#proc" do it_behaves_like :proc_call_on_proc_or_lambda, :call end + +ruby_bug "#15118", ""..."2.6" do + describe "Proc#[] with frozen_string_literals" do + it "doesn't duplicate frozen strings" do + ProcArefSpecs.aref.frozen?.should be_false + ProcArefSpecs.aref_freeze.frozen?.should be_true + ProcArefFrozenSpecs.aref.frozen?.should be_true + ProcArefFrozenSpecs.aref_freeze.frozen?.should be_true + end + end +end diff --git a/spec/ruby/core/proc/fixtures/proc_aref.rb b/spec/ruby/core/proc/fixtures/proc_aref.rb new file mode 100644 index 0000000000..a305667797 --- /dev/null +++ b/spec/ruby/core/proc/fixtures/proc_aref.rb @@ -0,0 +1,9 @@ +module ProcArefSpecs + def self.aref + proc {|a| a }["sometext"] + end + + def self.aref_freeze + proc {|a| a }["sometext".freeze] + end +end diff --git a/spec/ruby/core/proc/fixtures/proc_aref_frozen.rb b/spec/ruby/core/proc/fixtures/proc_aref_frozen.rb new file mode 100644 index 0000000000..50a330ba4f --- /dev/null +++ b/spec/ruby/core/proc/fixtures/proc_aref_frozen.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true +module ProcArefFrozenSpecs + def self.aref + proc {|a| a }["sometext"] + end + + def self.aref_freeze + proc {|a| a }["sometext".freeze] + end +end diff --git a/spec/ruby/core/proc/shared/to_s.rb b/spec/ruby/core/proc/shared/to_s.rb index c3f82a73f3..530eaff3a0 100644 --- a/spec/ruby/core/proc/shared/to_s.rb +++ b/spec/ruby/core/proc/shared/to_s.rb @@ -3,18 +3,30 @@ describe :proc_to_s, shared: true do it "returns a description optionally including file and line number" do Proc.new { "hello" }.send(@method).should =~ /^#<Proc:([^ ]*?)(@([^ ]*)\/to_s\.rb:4)?>$/ end + + it "has an ASCII-8BIT encoding" do + Proc.new { "hello" }.send(@method).encoding.should == Encoding::ASCII_8BIT + end end describe "for a proc created with lambda" do it "returns a description including '(lambda)' and optionally including file and line number" do lambda { "hello" }.send(@method).should =~ /^#<Proc:([^ ]*?)(@([^ ]*)\/to_s\.rb:10)? \(lambda\)>$/ end + + it "has an ASCII-8BIT encoding" do + lambda { "hello" }.send(@method).encoding.should == Encoding::ASCII_8BIT + end end describe "for a proc created with proc" do it "returns a description optionally including file and line number" do proc { "hello" }.send(@method).should =~ /^#<Proc:([^ ]*?)(@([^ ]*)\/to_s\.rb:16)?>$/ end + + it "has an ASCII-8BIT encoding" do + proc { "hello" }.send(@method).encoding.should == Encoding::ASCII_8BIT + end end describe "for a proc created with UnboundMethod#to_proc" do @@ -23,5 +35,11 @@ describe :proc_to_s, shared: true do method("hello").to_proc.send(@method).should =~ /^#<Proc:([^ ]*?)(@([^ ]*)\/to_s\.rb:22)? \(lambda\)>$/ end + + it "has an ASCII-8BIT encoding" do + def hello; end + + method("hello").to_proc.send(@method).encoding.should == Encoding::ASCII_8BIT + end end end |