summaryrefslogtreecommitdiff
path: root/spec/ruby/optional/capi/module_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/optional/capi/module_spec.rb')
-rw-r--r--spec/ruby/optional/capi/module_spec.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/spec/ruby/optional/capi/module_spec.rb b/spec/ruby/optional/capi/module_spec.rb
index 5ce1ed205b..b94e96e846 100644
--- a/spec/ruby/optional/capi/module_spec.rb
+++ b/spec/ruby/optional/capi/module_spec.rb
@@ -30,6 +30,20 @@ describe "CApiModule" do
}.should complain(/already initialized constant/)
CApiModuleSpecs::C::Z.should == 8
end
+
+ it "allows arbitrary names, including constant names not valid in Ruby" do
+ -> {
+ CApiModuleSpecs::C.const_set(:_INVALID, 1)
+ }.should raise_error(NameError, /wrong constant name/)
+
+ @m.rb_const_set(CApiModuleSpecs::C, :_INVALID, 2)
+ @m.rb_const_get(CApiModuleSpecs::C, :_INVALID).should == 2
+
+ # Ruby-level should still not allow access
+ -> {
+ CApiModuleSpecs::C.const_get(:_INVALID)
+ }.should raise_error(NameError, /wrong constant name/)
+ end
end
describe "rb_define_module" do
@@ -140,6 +154,16 @@ describe "CApiModule" do
it "resolves autoload constants in Object" do
@m.rb_const_get(Object, :CApiModuleSpecsAutoload).should == 123
end
+
+ it "allows arbitrary names, including constant names not valid in Ruby" do
+ -> {
+ CApiModuleSpecs::A.const_get(:_INVALID)
+ }.should raise_error(NameError, /wrong constant name/)
+
+ -> {
+ @m.rb_const_get(CApiModuleSpecs::A, :_INVALID)
+ }.should raise_error(NameError, /uninitialized constant/)
+ end
end
describe "rb_const_get_from" do