diff options
Diffstat (limited to 'spec/ruby/optional')
-rw-r--r-- | spec/ruby/optional/capi/ext/module_spec.c | 10 | ||||
-rw-r--r-- | spec/ruby/optional/capi/ext/rubyspec.h | 1 | ||||
-rw-r--r-- | spec/ruby/optional/capi/module_spec.rb | 10 |
3 files changed, 21 insertions, 0 deletions
diff --git a/spec/ruby/optional/capi/ext/module_spec.c b/spec/ruby/optional/capi/ext/module_spec.c index 275bc4da32..e408404a09 100644 --- a/spec/ruby/optional/capi/ext/module_spec.c +++ b/spec/ruby/optional/capi/ext/module_spec.c @@ -152,6 +152,12 @@ static VALUE module_specs_rbclass2name(VALUE self, VALUE klass) { } #endif +#ifdef HAVE_RB_MOD_ANCESTORS +static VALUE module_specs_rb_mod_ancestors(VALUE self, VALUE klass) { + return rb_mod_ancestors(klass); +} +#endif + void Init_module_spec(void) { VALUE cls; @@ -245,6 +251,10 @@ void Init_module_spec(void) { #ifdef HAVE_RB_CLASS2NAME rb_define_method(cls, "rb_class2name", module_specs_rbclass2name, 1); #endif + +#ifdef HAVE_RB_MOD_ANCESTORS + rb_define_method(cls, "rb_mod_ancestors", module_specs_rb_mod_ancestors, 1); +#endif } #ifdef __cplusplus diff --git a/spec/ruby/optional/capi/ext/rubyspec.h b/spec/ruby/optional/capi/ext/rubyspec.h index 8866e39af4..12c71d98b0 100644 --- a/spec/ruby/optional/capi/ext/rubyspec.h +++ b/spec/ruby/optional/capi/ext/rubyspec.h @@ -401,6 +401,7 @@ #define HAVE_RB_DEFINE_PRIVATE_METHOD 1 #define HAVE_RB_DEFINE_PROTECTED_METHOD 1 #define HAVE_RB_DEFINE_SINGLETON_METHOD 1 +#define HAVE_RB_MOD_ANCESTORS 1 #define HAVE_RB_UNDEF 1 #define HAVE_RB_UNDEF_METHOD 1 diff --git a/spec/ruby/optional/capi/module_spec.rb b/spec/ruby/optional/capi/module_spec.rb index 23fb674f0e..b3aeae4011 100644 --- a/spec/ruby/optional/capi/module_spec.rb +++ b/spec/ruby/optional/capi/module_spec.rb @@ -339,4 +339,14 @@ describe "CApiModule" do @m.rb_class2name(CApiModuleSpecs::M).should == "CApiModuleSpecs::M" end end + + describe "rb_mod_ancestors" do + it "returns an array of ancestors" do + one = Module.new + two = Module.new do + include one + end + @m.rb_mod_ancestors(two).should == [two, one] + end + end end |