diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2024-04-10 20:00:51 +0900 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-12-02 08:03:30 +0000 |
| commit | 8ec58a91f7f66467596881dafa818ec456e2de80 (patch) | |
| tree | 4fe1271fa14bc805950d1854884a28e86ab142ce /test | |
| parent | 1090070151c02601276a0c2b0dae273bb2fe4f6e (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.rb | 25 |
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 |
