summaryrefslogtreecommitdiff
path: root/spec/ruby/core/binding/eval_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/binding/eval_spec.rb')
-rw-r--r--spec/ruby/core/binding/eval_spec.rb32
1 files changed, 21 insertions, 11 deletions
diff --git a/spec/ruby/core/binding/eval_spec.rb b/spec/ruby/core/binding/eval_spec.rb
index c0264192b8..f1d8591320 100644
--- a/spec/ruby/core/binding/eval_spec.rb
+++ b/spec/ruby/core/binding/eval_spec.rb
@@ -7,7 +7,7 @@ describe "Binding#eval" do
bind = obj.get_binding
bind.eval("@secret += square(3)").should == 10
- bind.eval("a").should be_true
+ bind.eval("a").should == true
bind.eval("class Inside; end")
bind.eval("Inside.name").should == "BindingSpecs::Demo::Inside"
@@ -23,29 +23,29 @@ describe "Binding#eval" do
bind2.local_variables.should == []
end
- it "inherits __LINE__ from the enclosing scope" do
+ it "starts with line 1 if single argument is given" do
obj = BindingSpecs::Demo.new(1)
bind = obj.get_binding
- bind.eval("__LINE__").should == obj.get_line_of_binding
+ bind.eval("__LINE__").should == 1
end
it "preserves __LINE__ across multiple calls to eval" do
obj = BindingSpecs::Demo.new(1)
bind = obj.get_binding
- bind.eval("__LINE__").should == obj.get_line_of_binding
- bind.eval("__LINE__").should == obj.get_line_of_binding
+ bind.eval("__LINE__").should == 1
+ bind.eval("__LINE__").should == 1
end
it "increments __LINE__ on each line of a multiline eval" do
obj = BindingSpecs::Demo.new(1)
bind = obj.get_binding
- bind.eval("#foo\n__LINE__").should == obj.get_line_of_binding + 1
+ bind.eval("#foo\n__LINE__").should == 2
end
- it "inherits __LINE__ from the enclosing scope even if the Binding is created with #send" do
+ it "starts with line 1 if the Binding is created with #send" do
obj = BindingSpecs::Demo.new(1)
bind, line = obj.get_binding_with_send_and_line
- bind.eval("__LINE__").should == line
+ bind.eval("__LINE__").should == 1
end
it "starts with a __LINE__ of 1 if a filename is passed" do
@@ -60,10 +60,10 @@ describe "Binding#eval" do
bind.eval("#foo\n__LINE__", "(test)", 88).should == 89
end
- it "inherits __FILE__ from the enclosing scope" do
+ it "uses 1 as __LINE__" do
obj = BindingSpecs::Demo.new(1)
bind = obj.get_binding
- bind.eval("__FILE__").should == obj.get_file_of_binding
+ suppress_warning { bind.eval("__LINE__") }.should == 1
end
it "uses the __FILE__ that is passed in" do
@@ -77,7 +77,7 @@ describe "Binding#eval" do
bind = obj.get_binding
bind.eval("__FILE__", "test.rb").should == "test.rb"
- bind.eval("__FILE__").should_not == "test.rb"
+ suppress_warning {bind.eval("__FILE__")}.should_not == "test.rb"
end
end
@@ -92,4 +92,14 @@ describe "Binding#eval" do
bind, meth = obj.get_binding_with_send_and_method
bind.eval("__method__").should == meth
end
+
+ it "reflects refinements activated in the binding scope" do
+ bind = BindingSpecs::Refined.refined_binding
+
+ bind.eval("'bar'.foo").should == "foo"
+ end
+
+ it "uses the caller location as default filename" do
+ binding.eval("[__FILE__, __LINE__]").should == ["(eval at #{__FILE__}:#{__LINE__})", 1]
+ end
end