summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-08-06 13:34:25 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-08-06 13:34:25 +0900
commit3e7fb4b91d263f291c21200f3d11998053cdcf79 (patch)
treef9fa2548da42dd21e20925adc9e70b248ced8c24
parent9bfb8ea6715571b4318b018b703d40750acf2ccb (diff)
Check the result of tigetstr
-rw-r--r--lib/reline/terminfo.rb7
-rw-r--r--test/reline/test_terminfo.rb8
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/reline/terminfo.rb b/lib/reline/terminfo.rb
index a2dae4479c..d78f3d7b17 100644
--- a/lib/reline/terminfo.rb
+++ b/lib/reline/terminfo.rb
@@ -98,7 +98,12 @@ module Reline::Terminfo
end
def self.tigetstr(capname)
- StringWithTiparm.new(@tigetstr.(capname).to_s)
+ capability = @tigetstr.(capname)
+ case capability.to_i
+ when 0, -1
+ raise TerminfoError, "can't find capability: #{capname}"
+ end
+ StringWithTiparm.new(capability.to_s)
end
def self.tiparm(str, *args)
diff --git a/test/reline/test_terminfo.rb b/test/reline/test_terminfo.rb
index dcb64c290d..1e98faeabb 100644
--- a/test/reline/test_terminfo.rb
+++ b/test/reline/test_terminfo.rb
@@ -10,17 +10,25 @@ class Reline::Terminfo::Test < Reline::TestCase
def test_tigetstr
assert Reline::Terminfo.tigetstr('khome')
+ rescue Reline::Terminfo::TerminfoError => e
+ skip e.message
end
def test_tiparm
assert Reline::Terminfo.tigetstr('khome').tiparm
+ rescue Reline::Terminfo::TerminfoError => e
+ skip e.message
end
def test_tigetstr_with_param
assert Reline::Terminfo.tigetstr('cuu').include?('%p1%d')
+ rescue Reline::Terminfo::TerminfoError => e
+ skip e.message
end
def test_tiparm_with_param
assert Reline::Terminfo.tigetstr('cuu').tiparm(4649).include?('4649')
+ rescue Reline::Terminfo::TerminfoError => e
+ skip e.message
end
end if Reline::Terminfo.enabled?