summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReginald Tan <redge.tan@gmail.com>2012-06-02 17:34:40 -0400
committerReginald Tan <redge.tan@gmail.com>2012-06-02 17:34:40 -0400
commit662d8a90d50fa69e2d2ae49e8f96f009875cbc9e (patch)
treee20842aa0801ae93a5134887689ccc8f4bcea0c1
parent838bdc982b6cea3000ff1e089ebc99d113f64855 (diff)
downloadmethod_source-662d8a90d50fa69e2d2ae49e8f96f009875cbc9e.tar.gz
Added SourceNotFoundError class
-rw-r--r--lib/method_source.rb14
-rw-r--r--test/test.rb4
2 files changed, 10 insertions, 8 deletions
diff --git a/lib/method_source.rb b/lib/method_source.rb
index aa2b34a..0353144 100644
--- a/lib/method_source.rb
+++ b/lib/method_source.rb
@@ -7,6 +7,9 @@ require "#{direc}/method_source/version"
require "#{direc}/method_source/source_location"
module MethodSource
+
+ class SourceNotFoundError < StandardError; end
+
# Determine if a string of code is a valid Ruby expression.
# @param [String] code The code to validate.
# @return [Boolean] Whether or not the code is a valid Ruby expression.
@@ -51,8 +54,7 @@ module MethodSource
code
rescue Errno::ENOENT
- # source_location[0] of evaled methods would return (eval) if __FILE__ and __LINE__ is not given. File.readlines "(eval)" would raise ENOENT
- nil
+ raise SourceNotFoundError, "Cannot get source code located at file: #{source_location[0]}"
end
# @param [Array] source_location The array containing file_name [String], line [Fixnum]
@@ -143,9 +145,9 @@ module MethodSource
if respond_to?(:source_location)
source = MethodSource.source_helper(source_location)
- raise "Cannot locate source for this method: #{name}" if !source
+ raise SourceNotFoundError, "Cannot locate source for this method: #{name}" if !source
else
- raise "#{self.class}#source not supported by this Ruby version (#{RUBY_VERSION})"
+ raise SourceNotFoundError, "#{self.class}#source not supported by this Ruby version (#{RUBY_VERSION})"
end
source
@@ -162,9 +164,9 @@ module MethodSource
if respond_to?(:source_location)
comment = MethodSource.comment_helper(source_location)
- raise "Cannot locate source for this method: #{name}" if !comment
+ raise SourceNotFoundError, "Cannot locate source for this method: #{name}" if !comment
else
- raise "#{self.class}#comment not supported by this Ruby version (#{RUBY_VERSION})"
+ raise SourceNotFoundError, "#{self.class}#comment not supported by this Ruby version (#{RUBY_VERSION})"
end
comment
diff --git a/test/test.rb b/test/test.rb
index 3fd1597..4743a50 100644
--- a/test/test.rb
+++ b/test/test.rb
@@ -77,12 +77,12 @@ describe MethodSource do
end
it "should raise error for evaled methods that do not pass __FILE__ and __LINE__ + 1 as its arguments" do
- lambda { M.instance_method(:name_three).source }.should.raise RuntimeError
+ lambda { M.instance_method(:name_three).source }.should.raise MethodSource::SourceNotFoundError
end
if !is_rbx?
it 'should raise for C methods' do
- lambda { method(:puts).source }.should.raise RuntimeError
+ lambda { method(:puts).source }.should.raise MethodSource::SourceNotFoundError
end
end
end