From e4602f2f45580ac1f86fa5b3c447ba82f66c2f78 Mon Sep 17 00:00:00 2001 From: Soutaro Matsumoto Date: Fri, 25 Aug 2023 06:41:04 +0000 Subject: [PATCH 1/4] Merge pull request #1465 from ksss/no-type-found-error Fix error when undefined interface or alias --- lib/rbs/environment.rb | 9 ++++++--- test/rbs/cli_test.rb | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/lib/rbs/environment.rb b/lib/rbs/environment.rb index 32c865cdb..6d69e0c62 100644 --- a/lib/rbs/environment.rb +++ b/lib/rbs/environment.rb @@ -276,9 +276,9 @@ def constant_entry(type_name) end def normalize_type_name?(name) - if name.class? - normalize_module_name?(name) - else + return normalize_module_name?(name) if name.class? + + type_name = unless name.namespace.empty? parent = name.namespace.to_type_name parent = normalize_module_name?(parent) @@ -288,6 +288,9 @@ def normalize_type_name?(name) else name end + + if type_name?(type_name) + type_name end end diff --git a/test/rbs/cli_test.rb b/test/rbs/cli_test.rb index 7bb1fe02c..30806032d 100644 --- a/test/rbs/cli_test.rb +++ b/test/rbs/cli_test.rb @@ -400,6 +400,40 @@ def voice: [X] { () -> X } -> String end end + def test_undefined_interface + with_cli do |cli| + Dir.mktmpdir do |dir| + (Pathname(dir) + 'a.rbs').write(<<~RBS) + class Foo + def void: () -> _Void + end + RBS + + error = assert_raises RBS::NoTypeFoundError do + cli.run(["-I", dir, "validate"]) + end + assert_equal "_Void", error.type_name.to_s + end + end + end + + def test_undefined_alias + with_cli do |cli| + Dir.mktmpdir do |dir| + (Pathname(dir) + 'a.rbs').write(<<~RBS) + class Foo + def void: () -> voida + end + RBS + + error = assert_raises RBS::NoTypeFoundError do + cli.run(["-I", dir, "validate"]) + end + assert_equal "voida", error.type_name.to_s + end + end + end + def test_constant with_cli do |cli| cli.run(%w(constant Pathname)) From d5ec4aba1b33e284947d521ac6693caea13ca887 Mon Sep 17 00:00:00 2001 From: Soutaro Matsumoto Date: Thu, 24 Aug 2023 13:07:47 +0000 Subject: [PATCH 2/4] Merge pull request #1464 from ruby/fix-ci Fix CI failure --- test/stdlib/Kernel_test.rb | 5 +---- test/stdlib/test_helper.rb | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/test/stdlib/Kernel_test.rb b/test/stdlib/Kernel_test.rb index f09f375ac..f1fff5f3e 100644 --- a/test/stdlib/Kernel_test.rb +++ b/test/stdlib/Kernel_test.rb @@ -662,7 +662,7 @@ def (obj = BasicObject.new).inspect def test_pp pp pp 1 - pp 'a', 2 + pp 'a', 2 pp Object.new end @@ -704,9 +704,6 @@ def o.divmod(i) [0.001, 0.001] end sleep o - - omit_if(RUBY_VERSION < "3.3.0") - sleep nil end def test_syscall diff --git a/test/stdlib/test_helper.rb b/test/stdlib/test_helper.rb index 86568b51a..b0f589673 100644 --- a/test/stdlib/test_helper.rb +++ b/test/stdlib/test_helper.rb @@ -10,6 +10,17 @@ class Test::Unit::TestCase prepend TestSkip end +class Test::Unit::TestCase + module Printer + def setup + STDERR.puts name + super + end + end + + # prepend Printer +end + module Spy def self.wrap(object, method_name) spy = WrapSpy.new(object: object, method_name: method_name) @@ -460,7 +471,7 @@ def initialize(*args) def to_ary @args end -end +end class ToHash def initialize(hash = { 'hello' => 'world' }) @@ -578,6 +589,11 @@ def self.hook end end + # def setup + # STDERR.puts name + # super + # end + def hook self.class.hook end @@ -591,9 +607,11 @@ def setup null = StringIO.new @stdout, @stderr = $stdout, $stderr $stderr = $stdout = null + super end def teardown + super $stderr, $stdout = @stderr, @stdout end end From 6914968898e2327ed6c7741494c01cca36d8e09a Mon Sep 17 00:00:00 2001 From: Soutaro Matsumoto Date: Tue, 29 Aug 2023 05:11:39 +0000 Subject: [PATCH 3/4] Merge pull request #1476 from ruby/print-skip-message Improve skip test message --- test/test_helper.rb | 19 +++++++++++++------ test/test_skip.rb | 5 ++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/test/test_helper.rb b/test/test_helper.rb index e8ab2f081..08b3a9e23 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -233,15 +233,22 @@ def assert_sampling_check(builder, sample_size, array) OptionParser.new do |opts| opts.on("--name NAME") do |name| name = name.gsub(/(\A\/)|(\/\Z)/, '') + klass_name, method_name = name.split("#", 2) - constant = (Object.const_get(name) rescue nil) + constant = ObjectSpace.each_object(Class).find do |klass| + if klass.name + klass.name == klass_name || klass.name.end_with?("::#{klass_name}") + end + end if constant - test_unit_args << "--testcase" - test_unit_args << name - else - test_unit_args << "--name" - test_unit_args << name + if method_name + test_unit_args << "--name" + test_unit_args << "#{constant.name}##{method_name}" + else + test_unit_args << "--testcase" + test_unit_args << constant.name + end end end end.order!(argv) diff --git a/test/test_skip.rb b/test/test_skip.rb index 4ab9795bf..2fbd7b92f 100644 --- a/test/test_skip.rb +++ b/test/test_skip.rb @@ -50,7 +50,10 @@ def setup end def teardown - unless current_result.passed? + case + when passed? + # nop + else puts "💡You can skip this test `#{name}` by adding the name to `#{SKIP_TESTS_FILE}`" end From 887f4a461f75aa5a6104bb6c6adafc9ef5a11745 Mon Sep 17 00:00:00 2001 From: Soutaro Matsumoto Date: Fri, 25 Aug 2023 02:00:05 +0000 Subject: [PATCH 4/4] Merge pull request #1463 from ruby/fix-fiber-storage-types String keys are forbidden. --- core/fiber.rbs | 4 ++-- test/stdlib/Fiber_test.rb | 12 ------------ 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/core/fiber.rbs b/core/fiber.rbs index f9d7553ab..151ad2225 100644 --- a/core/fiber.rbs +++ b/core/fiber.rbs @@ -86,7 +86,7 @@ class Fiber < Object # # See also Fiber::[]=. # - def self.[]: (Symbol | String) -> untyped + def self.[]: (Symbol) -> untyped #