[前][次][番号順一覧][スレッド一覧]

ruby-changes:67060

From: Nobuyoshi <ko1@a...>
Date: Fri, 6 Aug 2021 14:18:53 +0900 (JST)
Subject: [ruby-changes:67060] 3e7fb4b91d (master): Check the result of tigetstr

https://git.ruby-lang.org/ruby.git/commit/?id=3e7fb4b91d

From 3e7fb4b91d263f291c21200f3d11998053cdcf79 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
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 a2dae44..d78f3d7 100644
--- a/lib/reline/terminfo.rb
+++ b/lib/reline/terminfo.rb
@@ -98,7 +98,12 @@ module Reline::Terminfo https://github.com/ruby/ruby/blob/trunk/lib/reline/terminfo.rb#L98
   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 dcb64c2..1e98fae 100644
--- a/test/reline/test_terminfo.rb
+++ b/test/reline/test_terminfo.rb
@@ -10,17 +10,25 @@ class Reline::Terminfo::Test < Reline::TestCase https://github.com/ruby/ruby/blob/trunk/test/reline/test_terminfo.rb#L10
 
   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.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]