summaryrefslogtreecommitdiff
path: root/spec/ruby/core/proc/source_location_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/proc/source_location_spec.rb')
-rw-r--r--spec/ruby/core/proc/source_location_spec.rb59
1 files changed, 39 insertions, 20 deletions
diff --git a/spec/ruby/core/proc/source_location_spec.rb b/spec/ruby/core/proc/source_location_spec.rb
index 311d13c050..d27ad0559e 100644
--- a/spec/ruby/core/proc/source_location_spec.rb
+++ b/spec/ruby/core/proc/source_location_spec.rb
@@ -1,5 +1,5 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/source_location', __FILE__)
+require_relative '../../spec_helper'
+require_relative 'fixtures/source_location'
describe "Proc#source_location" do
before :each do
@@ -10,52 +10,52 @@ describe "Proc#source_location" do
end
it "returns an Array" do
- @proc.source_location.should be_an_instance_of(Array)
- @proc_new.source_location.should be_an_instance_of(Array)
- @lambda.source_location.should be_an_instance_of(Array)
- @method.source_location.should be_an_instance_of(Array)
+ @proc.source_location.should.instance_of?(Array)
+ @proc_new.source_location.should.instance_of?(Array)
+ @lambda.source_location.should.instance_of?(Array)
+ @method.source_location.should.instance_of?(Array)
end
it "sets the first value to the path of the file in which the proc was defined" do
file = @proc.source_location.first
- file.should be_an_instance_of(String)
- file.should == File.dirname(__FILE__) + '/fixtures/source_location.rb'
+ file.should.instance_of?(String)
+ file.should == File.realpath('fixtures/source_location.rb', __dir__)
file = @proc_new.source_location.first
- file.should be_an_instance_of(String)
- file.should == File.dirname(__FILE__) + '/fixtures/source_location.rb'
+ file.should.instance_of?(String)
+ file.should == File.realpath('fixtures/source_location.rb', __dir__)
file = @lambda.source_location.first
- file.should be_an_instance_of(String)
- file.should == File.dirname(__FILE__) + '/fixtures/source_location.rb'
+ file.should.instance_of?(String)
+ file.should == File.realpath('fixtures/source_location.rb', __dir__)
file = @method.source_location.first
- file.should be_an_instance_of(String)
- file.should == File.dirname(__FILE__) + '/fixtures/source_location.rb'
+ file.should.instance_of?(String)
+ file.should == File.realpath('fixtures/source_location.rb', __dir__)
end
- it "sets the last value to a Fixnum representing the line on which the proc was defined" do
+ it "sets the last value to an Integer representing the line on which the proc was defined" do
line = @proc.source_location.last
- line.should be_an_instance_of(Fixnum)
+ line.should.instance_of?(Integer)
line.should == 4
line = @proc_new.source_location.last
- line.should be_an_instance_of(Fixnum)
+ line.should.instance_of?(Integer)
line.should == 12
line = @lambda.source_location.last
- line.should be_an_instance_of(Fixnum)
+ line.should.instance_of?(Integer)
line.should == 8
line = @method.source_location.last
- line.should be_an_instance_of(Fixnum)
+ line.should.instance_of?(Integer)
line.should == 15
end
it "works even if the proc was created on the same line" do
proc { true }.source_location.should == [__FILE__, __LINE__]
Proc.new { true }.source_location.should == [__FILE__, __LINE__]
- lambda { true }.source_location.should == [__FILE__, __LINE__]
+ -> { true }.source_location.should == [__FILE__, __LINE__]
end
it "returns the first line of a multi-line proc (i.e. the line containing 'proc do')" do
@@ -69,4 +69,23 @@ describe "Proc#source_location" do
ProcSpecs::SourceLocation.my_detached_proc_new.source_location.last.should == 51
ProcSpecs::SourceLocation.my_detached_lambda.source_location.last.should == 46
end
+
+ it "returns the same value for a proc-ified method as the method reports" do
+ method = ProcSpecs::SourceLocation.method(:my_proc)
+ proc = method.to_proc
+
+ method.source_location.should == proc.source_location
+ end
+
+ it "returns nil for a core method that has been proc-ified" do
+ method = [].method(:<<)
+ proc = method.to_proc
+
+ proc.source_location.should == nil
+ end
+
+ it "works for eval with a given line" do
+ proc = eval('-> {}', nil, "foo", 100)
+ proc.source_location.should == ["foo", 100]
+ end
end