summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2024-04-10 20:00:51 +0900
committergit <svn-admin@ruby-lang.org>2024-12-02 08:03:30 +0000
commit8ec58a91f7f66467596881dafa818ec456e2de80 (patch)
tree4fe1271fa14bc805950d1854884a28e86ab142ce /test
parent1090070151c02601276a0c2b0dae273bb2fe4f6e (diff)
[ruby/io-console] Add IO#ttyname that returns the tty name or nil
https://github.com/ruby/io-console/commit/fdad351501
Diffstat (limited to 'test')
-rw-r--r--test/io/console/test_io_console.rb25
1 files changed, 22 insertions, 3 deletions
diff --git a/test/io/console/test_io_console.rb b/test/io/console/test_io_console.rb
index 0a113ebd2f..2bf3df6439 100644
--- a/test/io/console/test_io_console.rb
+++ b/test/io/console/test_io_console.rb
@@ -441,6 +441,11 @@ defined?(PTY) and defined?(IO.console) and TestIO_Console.class_eval do
def test_sync
assert_equal(["true"], run_pty("p IO.console.sync"))
end
+
+ def test_ttyname
+ return unless IO.method_defined?(:ttyname)
+ assert_equal(["true"], run_pty("p STDIN.ttyname == STDOUT.ttyname"))
+ end
end
private
@@ -531,6 +536,13 @@ defined?(IO.console) and TestIO_Console.class_eval do
def test_getch_timeout
assert_nil(IO.console.getch(intr: true, time: 0.1, min: 0))
end
+
+ def test_ttyname
+ return unless IO.method_defined?(:ttyname)
+ ttyname = IO.console.ttyname
+ assert_not_nil(ttyname)
+ File.open(ttyname) {|f| assert_predicate(f, :tty?)}
+ end
end
end
@@ -546,7 +558,7 @@ defined?(IO.console) and TestIO_Console.class_eval do
if noctty
require 'tempfile'
NOCTTY = noctty
- def test_noctty
+ def run_noctty(src)
t = Tempfile.new("noctty_out")
t.close
t2 = Tempfile.new("noctty_run")
@@ -557,7 +569,7 @@ defined?(IO.console) and TestIO_Console.class_eval do
'-e', 'STDOUT.reopen(f)',
'-e', 'STDERR.reopen(f)',
'-e', 'require "io/console"',
- '-e', 'f.puts IO.console.inspect',
+ '-e', "f.puts (#{src}).inspect",
'-e', 'f.flush',
'-e', 'File.unlink(ARGV[1])',
'-e', '}',
@@ -568,11 +580,18 @@ defined?(IO.console) and TestIO_Console.class_eval do
sleep 0.1
end
t.open
- assert_equal("nil", t.gets(nil).chomp)
+ t.gets.lines(chomp: true)
ensure
t.close! if t and !t.closed?
t2.close!
end
+
+ def test_noctty
+ assert_equal(["nil"], run_noctty("IO.console"))
+ if IO.method_defined?(:ttyname)
+ assert_equal(["nil"], run_noctty("STDIN.ttyname rescue $!"))
+ end
+ end
end
end