Skip to content

Commit fcc51c8

Browse files
znzsoutaro
authored andcommitted
Dir.mktmpdir and File.join accept Pathname
1 parent 393e2dd commit fcc51c8

File tree

4 files changed

+83
-22
lines changed

4 files changed

+83
-22
lines changed

core/file.rbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1314,7 +1314,7 @@ class File < IO
13141314
#
13151315
# File.join("usr", "mail", "gumby") #=> "usr/mail/gumby"
13161316
#
1317-
def self.join: (*string) -> String
1317+
def self.join: (*path) -> String
13181318

13191319
# <!--
13201320
# rdoc-file=file.c

stdlib/tmpdir/0/tmpdir.rbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,6 @@ class Dir
6464
# FileUtils.remove_entry dir
6565
# end
6666
#
67-
def self.mktmpdir: (?String | [ String, String ] | nil, ?String?, ?max_try: Integer?) -> String
68-
| [X] (?String | [ String, String ] | nil, ?String?, ?max_try: Integer?) { (String) -> X } -> X
67+
def self.mktmpdir: (?string | [ string, string ] | nil, ?String | Pathname?, ?max_try: Integer?) -> String
68+
| [X] (?string | [string, string ] | nil, ?String | Pathname?, ?max_try: Integer?) { (String) -> X } -> X
6969
end

test/stdlib/Dir_tmpdir_test.rb

Lines changed: 70 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,80 @@
11
require_relative "test_helper"
2-
require "tmpdir"
32

4-
class Dir_tmpdirTest < StdlibTest
5-
target Dir
3+
class Tmpdir_Dir_SingletonTest < Test::Unit::TestCase
4+
include TestHelper
5+
66
library "tmpdir"
7+
testing "singleton(Dir)"
78

89
def test_tmpdir
9-
Dir.tmpdir()
10+
assert_send_type(
11+
"() -> String",
12+
Dir, :mktmpdir
13+
)
1014
end
1115

1216
def test_mktmpdir
13-
Dir.mktmpdir()
14-
Dir.mktmpdir(["foo", "bar"])
15-
Dir.mktmpdir("foo", Dir.tmpdir, max_try: 3)
16-
Dir.mktmpdir(nil, nil, max_try: nil)
17-
18-
Dir.mktmpdir() {}
19-
Dir.mktmpdir(["foo", "bar"]) {}
20-
Dir.mktmpdir("foo", Dir.tmpdir, max_try: 3) {}
21-
Dir.mktmpdir(nil, nil, max_try: nil) {}
17+
assert_send_type(
18+
"() -> String",
19+
Dir, :mktmpdir
20+
)
21+
assert_send_type(
22+
"() { (String) -> Integer} -> Integer",
23+
Dir, :mktmpdir, &->(s) { s.size }
24+
)
25+
26+
assert_send_type(
27+
"(max_try: Integer) -> String",
28+
Dir, :mktmpdir, max_try: 1
29+
)
30+
assert_send_type(
31+
"(max_try: Integer) { (String) -> Integer } -> Integer",
32+
Dir, :mktmpdir, max_try: 1, &->(s) { s.size}
33+
)
34+
35+
with_string("foo") do |foo|
36+
assert_send_type(
37+
"(string) -> String",
38+
Dir, :mktmpdir, foo
39+
)
40+
assert_send_type(
41+
"(string) { (String) -> Integer } -> Integer",
42+
Dir, :mktmpdir, foo, &->(x) { x.size }
43+
)
44+
end
45+
46+
assert_send_type(
47+
"(nil) -> String",
48+
Dir, :mktmpdir, nil
49+
)
50+
assert_send_type(
51+
"(nil) { (String) -> Integer } -> Integer",
52+
Dir, :mktmpdir, nil, &->(x) { x.size }
53+
)
54+
55+
with_string("foo") do |foo|
56+
with_string("bar") do |bar|
57+
assert_send_type(
58+
"([string, string]) -> String",
59+
Dir, :mktmpdir, [foo, bar]
60+
)
61+
assert_send_type(
62+
"([string, string]) { (String) -> Integer } -> Integer",
63+
Dir, :mktmpdir, [foo, bar], &->(s) { s.size }
64+
)
65+
end
66+
end
67+
68+
with_string("foo") do |foo|
69+
assert_send_type(
70+
"(string, Pathname) -> String",
71+
Dir, :mktmpdir, foo, Pathname(Dir.tmpdir)
72+
)
73+
74+
assert_send_type(
75+
"(string, Pathname) { (String) -> Integer } -> Integer",
76+
Dir, :mktmpdir, foo, Pathname(Dir.tmpdir), &->(s) { s.size }
77+
)
78+
end
2279
end
2380
end

test/stdlib/File_test.rb

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -353,12 +353,16 @@ def test_identical?
353353
end
354354

355355
def test_join
356-
assert_send_type "(String) -> String",
357-
File, :join, "foo"
358-
assert_send_type "(ToStr) -> String",
359-
File, :join, ToStr.new("foo")
360-
assert_send_type "(String, String) -> String",
361-
File, :join, "foo", "bar"
356+
with_path("foo") do |str|
357+
assert_send_type(
358+
"(path) -> String",
359+
File, :join, str
360+
)
361+
assert_send_type(
362+
"(path, path) -> String",
363+
File, :join, str, str
364+
)
365+
end
362366
end
363367

364368
def test_lchown

0 commit comments

Comments
 (0)