Skip to content

Commit c6b833d

Browse files
authored
Merge pull request #1479 from ruby/backport
Backport to 3.2
2 parents edb7e74 + 887f4a4 commit c6b833d

8 files changed

Lines changed: 79 additions & 29 deletions

File tree

core/fiber.rbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class Fiber < Object
8686
#
8787
# See also Fiber::[]=.
8888
#
89-
def self.[]: (Symbol | String) -> untyped
89+
def self.[]: (Symbol) -> untyped
9090

9191
# <!--
9292
# rdoc-file=cont.c
@@ -99,7 +99,7 @@ class Fiber < Object
9999
#
100100
# See also Fiber::[].
101101
#
102-
def self.[]=: [A] (Symbol | String, A) -> A
102+
def self.[]=: [A] (Symbol, A) -> A
103103

104104
# <!--
105105
# rdoc-file=cont.c

lib/rbs/environment.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,9 @@ def constant_entry(type_name)
276276
end
277277

278278
def normalize_type_name?(name)
279-
if name.class?
280-
normalize_module_name?(name)
281-
else
279+
return normalize_module_name?(name) if name.class?
280+
281+
type_name =
282282
unless name.namespace.empty?
283283
parent = name.namespace.to_type_name
284284
parent = normalize_module_name?(parent)
@@ -288,6 +288,9 @@ def normalize_type_name?(name)
288288
else
289289
name
290290
end
291+
292+
if type_name?(type_name)
293+
type_name
291294
end
292295
end
293296

test/rbs/cli_test.rb

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,40 @@ def voice: [X] { () -> X } -> String
400400
end
401401
end
402402

403+
def test_undefined_interface
404+
with_cli do |cli|
405+
Dir.mktmpdir do |dir|
406+
(Pathname(dir) + 'a.rbs').write(<<~RBS)
407+
class Foo
408+
def void: () -> _Void
409+
end
410+
RBS
411+
412+
error = assert_raises RBS::NoTypeFoundError do
413+
cli.run(["-I", dir, "validate"])
414+
end
415+
assert_equal "_Void", error.type_name.to_s
416+
end
417+
end
418+
end
419+
420+
def test_undefined_alias
421+
with_cli do |cli|
422+
Dir.mktmpdir do |dir|
423+
(Pathname(dir) + 'a.rbs').write(<<~RBS)
424+
class Foo
425+
def void: () -> voida
426+
end
427+
RBS
428+
429+
error = assert_raises RBS::NoTypeFoundError do
430+
cli.run(["-I", dir, "validate"])
431+
end
432+
assert_equal "voida", error.type_name.to_s
433+
end
434+
end
435+
end
436+
403437
def test_constant
404438
with_cli do |cli|
405439
cli.run(%w(constant Pathname))

test/stdlib/Fiber_test.rb

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,6 @@ def test_aref
1515
"(Symbol) -> Integer",
1616
Fiber, :[], :key
1717
)
18-
19-
key = "string"
20-
21-
assert_send_type(
22-
"(String, Integer) -> Integer",
23-
Fiber, :[]=, key, 123
24-
)
25-
26-
assert_send_type(
27-
"(String) -> Integer",
28-
Fiber, :[], key
29-
)
3018
end
3119

3220
def test_blocking?

test/stdlib/Kernel_test.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,7 @@ def (obj = BasicObject.new).inspect
662662
def test_pp
663663
pp
664664
pp 1
665-
pp 'a', 2
665+
pp 'a', 2
666666

667667
pp Object.new
668668
end
@@ -704,9 +704,6 @@ def o.divmod(i)
704704
[0.001, 0.001]
705705
end
706706
sleep o
707-
708-
omit_if(RUBY_VERSION < "3.3.0")
709-
sleep nil
710707
end
711708

712709
def test_syscall

test/stdlib/test_helper.rb

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,17 @@ class Test::Unit::TestCase
1010
prepend TestSkip
1111
end
1212

13+
class Test::Unit::TestCase
14+
module Printer
15+
def setup
16+
STDERR.puts name
17+
super
18+
end
19+
end
20+
21+
# prepend Printer
22+
end
23+
1324
module Spy
1425
def self.wrap(object, method_name)
1526
spy = WrapSpy.new(object: object, method_name: method_name)
@@ -460,7 +471,7 @@ def initialize(*args)
460471
def to_ary
461472
@args
462473
end
463-
end
474+
end
464475

465476
class ToHash
466477
def initialize(hash = { 'hello' => 'world' })
@@ -578,6 +589,11 @@ def self.hook
578589
end
579590
end
580591

592+
# def setup
593+
# STDERR.puts name
594+
# super
595+
# end
596+
581597
def hook
582598
self.class.hook
583599
end
@@ -591,9 +607,11 @@ def setup
591607
null = StringIO.new
592608
@stdout, @stderr = $stdout, $stderr
593609
$stderr = $stdout = null
610+
super
594611
end
595612

596613
def teardown
614+
super
597615
$stderr, $stdout = @stderr, @stdout
598616
end
599617
end

test/test_helper.rb

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -233,15 +233,22 @@ def assert_sampling_check(builder, sample_size, array)
233233
OptionParser.new do |opts|
234234
opts.on("--name NAME") do |name|
235235
name = name.gsub(/(\A\/)|(\/\Z)/, '')
236+
klass_name, method_name = name.split("#", 2)
236237

237-
constant = (Object.const_get(name) rescue nil)
238+
constant = ObjectSpace.each_object(Class).find do |klass|
239+
if klass.name
240+
klass.name == klass_name || klass.name.end_with?("::#{klass_name}")
241+
end
242+
end
238243

239244
if constant
240-
test_unit_args << "--testcase"
241-
test_unit_args << name
242-
else
243-
test_unit_args << "--name"
244-
test_unit_args << name
245+
if method_name
246+
test_unit_args << "--name"
247+
test_unit_args << "#{constant.name}##{method_name}"
248+
else
249+
test_unit_args << "--testcase"
250+
test_unit_args << constant.name
251+
end
245252
end
246253
end
247254
end.order!(argv)

test/test_skip.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ def setup
5050
end
5151

5252
def teardown
53-
unless current_result.passed?
53+
case
54+
when passed?
55+
# nop
56+
else
5457
puts "💡You can skip this test `#{name}` by adding the name to `#{SKIP_TESTS_FILE}`"
5558
end
5659

0 commit comments

Comments
 (0)