diff options
-rw-r--r-- | lib/reline/terminfo.rb | 7 | ||||
-rw-r--r-- | test/reline/test_terminfo.rb | 8 |
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? |