Skip to content

Commit 8791bed

Browse files
OskarEichlernobu
authored andcommitted
Ignore nonpositive console size overrides
1 parent deb5c1f commit 8791bed

2 files changed

Lines changed: 26 additions & 4 deletions

File tree

‎lib/io/console/size.rb‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
# frozen_string_literal: false
22
# fallback to console window size
33
def IO.default_console_size
4+
lines = ENV["LINES"].to_i
5+
columns = ENV["COLUMNS"].to_i
46
[
5-
ENV["LINES"].to_i.nonzero? || 25,
6-
ENV["COLUMNS"].to_i.nonzero? || 80,
7+
lines.positive? ? lines : 25,
8+
columns.positive? ? columns : 80,
79
]
810
end
911

‎test/io/console/test_io_console.rb‎

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ def test_ttyname
691691
if noctty
692692
require 'tempfile'
693693
NOCTTY = noctty
694-
def run_noctty(src)
694+
def run_noctty(src, require: "io/console", env: nil)
695695
t = Tempfile.new("noctty_out")
696696
t.close
697697
t2 = Tempfile.new("noctty_run")
@@ -701,12 +701,13 @@ def run_noctty(src)
701701
'-e', 'open(ARGV[0], "w") {|f|',
702702
'-e', 'STDOUT.reopen(f)',
703703
'-e', 'STDERR.reopen(f)',
704-
'-e', 'require "io/console"',
704+
'-e', "require #{require.dump}",
705705
'-e', "f.puts (#{src}).inspect",
706706
'-e', 'f.flush',
707707
'-e', 'File.unlink(ARGV[1])',
708708
'-e', '}',
709709
'--', t.path, t2.path]
710+
cmd.unshift(env) if env
710711
assert_ruby_status(cmd, rubybin: NOCTTY[0])
711712
30.times do
712713
break unless File.exist?(t2.path)
@@ -725,6 +726,25 @@ def test_noctty
725726
assert_equal(["nil"], run_noctty("STDIN.ttyname rescue $!"))
726727
end
727728
end
729+
730+
def test_default_console_size
731+
[
732+
[40, 100],
733+
[nil, 50],
734+
[30, nil],
735+
[0, 50],
736+
[30, 0],
737+
[-1, 50],
738+
[30, -1],
739+
].each do |lines, columns|
740+
result = run_noctty("IO.console_size",
741+
require: "io/console/size",
742+
env: {"LINES"=>lines&.to_s, "COLUMNS"=>columns&.to_s})
743+
lines = 25 unless lines&.positive?
744+
columns = 80 unless columns&.positive?
745+
assert_equal([[lines, columns].inspect], result)
746+
end
747+
end
728748
end
729749
end
730750

0 commit comments

Comments
 (0)