From 3e7fb4b91d263f291c21200f3d11998053cdcf79 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 6 Aug 2021 13:34:25 +0900 Subject: Check the result of tigetstr --- lib/reline/terminfo.rb | 7 ++++++- test/reline/test_terminfo.rb | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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? -- cgit v1.2.3