diff options
| author | Satoshi Tagomori <s-tagomori@sakura.ad.jp> | 2025-10-25 13:31:36 +0900 |
|---|---|---|
| committer | Satoshi Tagomori <tagomoris@gmail.com> | 2025-10-26 17:49:39 +0900 |
| commit | efe9a3cda93ec399b96cc1bb8d4a4e9b7ba1d3b1 (patch) | |
| tree | 4f038037a8251f9c07b2280171d65b6a538fbf18 | |
| parent | e3a717512e6d374d5c2355fbeac07d32afffb27b (diff) | |
Add several very basic tests to be run with RUBY_NAMESPACE=1 on CI
To detect breaking namespace features on CI.
| -rw-r--r-- | test/ruby/test_namespace.rb | 117 |
1 files changed, 72 insertions, 45 deletions
diff --git a/test/ruby/test_namespace.rb b/test/ruby/test_namespace.rb index 5661a98ca2..bfbbe38e05 100644 --- a/test/ruby/test_namespace.rb +++ b/test/ruby/test_namespace.rb @@ -538,51 +538,6 @@ class TestNamespace < Test::Unit::TestCase assert !$LOADED_FEATURES.include?(File.join(namespace_dir, 'blank2.rb')) end - def test_prelude_gems_and_loaded_features - assert_in_out_err([ENV_ENABLE_NAMESPACE, "--enable=gems"], "#{<<-"begin;"}\n#{<<-'end;'}") do |output, error| - begin; - puts ["before:", $LOADED_FEATURES.select{ it.end_with?("/bundled_gems.rb") }&.first].join - puts ["before:", $LOADED_FEATURES.select{ it.end_with?("/error_highlight.rb") }&.first].join - - require "error_highlight" - - puts ["after:", $LOADED_FEATURES.select{ it.end_with?("/bundled_gems.rb") }&.first].join - puts ["after:", $LOADED_FEATURES.select{ it.end_with?("/error_highlight.rb") }&.first].join - end; - - # No additional warnings except for experimental warnings - assert_includes error.join("\n"), EXPERIMENTAL_WARNINGS - assert_equal 2, error.size - - assert_includes output.grep(/^before:/).join("\n"), '/bundled_gems.rb' - assert_includes output.grep(/^before:/).join("\n"), '/error_highlight.rb' - assert_includes output.grep(/^after:/).join("\n"), '/bundled_gems.rb' - assert_includes output.grep(/^after:/).join("\n"), '/error_highlight.rb' - end - end - - def test_prelude_gems_and_loaded_features_with_disable_gems - assert_in_out_err([ENV_ENABLE_NAMESPACE, "--disable=gems"], "#{<<-"begin;"}\n#{<<-'end;'}") do |output, error| - begin; - puts ["before:", $LOADED_FEATURES.select{ it.end_with?("/bundled_gems.rb") }&.first].join - puts ["before:", $LOADED_FEATURES.select{ it.end_with?("/error_highlight.rb") }&.first].join - - require "error_highlight" - - puts ["after:", $LOADED_FEATURES.select{ it.end_with?("/bundled_gems.rb") }&.first].join - puts ["after:", $LOADED_FEATURES.select{ it.end_with?("/error_highlight.rb") }&.first].join - end; - - assert_includes error.join("\n"), EXPERIMENTAL_WARNINGS - assert_equal 2, error.size - - refute_includes output.grep(/^before:/).join("\n"), '/bundled_gems.rb' - refute_includes output.grep(/^before:/).join("\n"), '/error_highlight.rb' - refute_includes output.grep(/^after:/).join("\n"), '/bundled_gems.rb' - assert_includes output.grep(/^after:/).join("\n"), '/error_highlight.rb' - end - end - def test_eval_basic pend unless Namespace.enabled? @@ -664,4 +619,76 @@ class TestNamespace < Test::Unit::TestCase assert_equal 4, result end end + + # Tests which run always (w/o RUBY_NAMESPACE=1 globally) + + def test_prelude_gems_and_loaded_features + assert_in_out_err([ENV_ENABLE_NAMESPACE, "--enable=gems"], "#{<<-"begin;"}\n#{<<-'end;'}") do |output, error| + begin; + puts ["before:", $LOADED_FEATURES.select{ it.end_with?("/bundled_gems.rb") }&.first].join + puts ["before:", $LOADED_FEATURES.select{ it.end_with?("/error_highlight.rb") }&.first].join + + require "error_highlight" + + puts ["after:", $LOADED_FEATURES.select{ it.end_with?("/bundled_gems.rb") }&.first].join + puts ["after:", $LOADED_FEATURES.select{ it.end_with?("/error_highlight.rb") }&.first].join + end; + + # No additional warnings except for experimental warnings + assert_includes error.join("\n"), EXPERIMENTAL_WARNINGS + assert_equal 2, error.size + + assert_includes output.grep(/^before:/).join("\n"), '/bundled_gems.rb' + assert_includes output.grep(/^before:/).join("\n"), '/error_highlight.rb' + assert_includes output.grep(/^after:/).join("\n"), '/bundled_gems.rb' + assert_includes output.grep(/^after:/).join("\n"), '/error_highlight.rb' + end + end + + def test_prelude_gems_and_loaded_features_with_disable_gems + assert_in_out_err([ENV_ENABLE_NAMESPACE, "--disable=gems"], "#{<<-"begin;"}\n#{<<-'end;'}") do |output, error| + begin; + puts ["before:", $LOADED_FEATURES.select{ it.end_with?("/bundled_gems.rb") }&.first].join + puts ["before:", $LOADED_FEATURES.select{ it.end_with?("/error_highlight.rb") }&.first].join + + require "error_highlight" + + puts ["after:", $LOADED_FEATURES.select{ it.end_with?("/bundled_gems.rb") }&.first].join + puts ["after:", $LOADED_FEATURES.select{ it.end_with?("/error_highlight.rb") }&.first].join + end; + + assert_includes error.join("\n"), EXPERIMENTAL_WARNINGS + assert_equal 2, error.size + + refute_includes output.grep(/^before:/).join("\n"), '/bundled_gems.rb' + refute_includes output.grep(/^before:/).join("\n"), '/error_highlight.rb' + refute_includes output.grep(/^after:/).join("\n"), '/bundled_gems.rb' + assert_includes output.grep(/^after:/).join("\n"), '/error_highlight.rb' + end + end + + def test_root_and_main_methods + assert_separately([ENV_ENABLE_NAMESPACE], __FILE__, __LINE__, "#{<<~"begin;"}\n#{<<~'end;'}", ignore_stderr: true) + begin; + pend unless Namespace.respond_to?(:root) and Namespace.respond_to?(:main) # for RUBY_DEBUG > 0 + + assert Namespace.root.respond_to?(:root?) + assert Namespace.main.respond_to?(:main?) + + assert Namespace.root.root? + assert Namespace.main.main? + assert_equal Namespace.main, Namespace.current + + $a = 1 + $LOADED_FEATURES.push("/tmp/foobar") + + assert_equal 2, Namespace.root.eval('$a = 2; $a') + assert !Namespace.root.eval('$LOADED_FEATURES.push("/tmp/barbaz"); $LOADED_FEATURES.include?("/tmp/foobar")') + assert "FooClass", Namespace.root.eval('class FooClass; end; Object.const_get(:FooClass).to_s') + + assert_equal 1, $a + assert !$LOADED_FEATURES.include?("/tmp/barbaz") + assert !Object.const_defined?(:FooClass) + end; + end end |
