Skip to content

Instantly share code, notes, and snippets.

@kronos
Created February 4, 2010 23:36
Show Gist options
  • Save kronos/295273 to your computer and use it in GitHub Desktop.
Save kronos/295273 to your computer and use it in GitHub Desktop.
From 4c41564ae6363cd028d5c446bf88ebebf7176c90 Mon Sep 17 00:00:00 2001
From: Ivan Samsonov <hronya@gmail.com>
Date: Fri, 5 Feb 2010 04:02:44 +0300
Subject: [PATCH] Update defined? spec for undefined methods
---
language/defined_spec.rb | 6 ++++++
language/fixtures/defined.rb | 18 ++++++++++++++++++
2 files changed, 24 insertions(+), 0 deletions(-)
create mode 100644 language/fixtures/defined.rb
diff --git a/language/defined_spec.rb b/language/defined_spec.rb
index 226b1e1..5c3f7ef 100644
--- a/language/defined_spec.rb
+++ b/language/defined_spec.rb
@@ -1,4 +1,5 @@
require File.dirname(__FILE__) + '/../spec_helper'
+require File.dirname(__FILE__) + '/fixtures/defined'
describe "The defined? keyword" do
class LanguageDefinedSpecs
@@ -156,6 +157,11 @@ describe "The defined? keyword" do
ret.should == nil
end
+ it "returns nil for a method, which was undefined in an ancestor" do
+ ret = DefinedSpecs::ClassWithoutMethod.new.test
+ ret.should == nil
+ end
+
it "returns 'expression' when defined?(:File) is sent" do
ret = defined?(:File)
ret.should == "expression"
diff --git a/language/fixtures/defined.rb b/language/fixtures/defined.rb
new file mode 100644
index 0000000..d51a41e
--- /dev/null
+++ b/language/fixtures/defined.rb
@@ -0,0 +1,18 @@
+module DefinedSpecs
+ class ClassWithMethod
+ def test
+ end
+ end
+
+ class ClassUndefiningMethod < ClassWithMethod
+ undef :test
+ end
+
+ class ClassWithoutMethod < ClassUndefiningMethod
+ # If an undefined method overridden in descendants
+ # define?(super) should return nil
+ def test
+ defined?(super)
+ end
+ end
+end
--
1.6.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment