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

ruby-changes:71924

From: Yusuke <ko1@a...>
Date: Mon, 23 May 2022 20:51:31 +0900 (JST)
Subject: [ruby-changes:71924] 663915ddf4 (master): [rubygems/rubygems] Support the change of did_you_mean about Exception#detailed_message

https://git.ruby-lang.org/ruby.git/commit/?id=663915ddf4

From 663915ddf414e5a4dcb9f981449c1f9f79f1eada Mon Sep 17 00:00:00 2001
From: Yusuke Endoh <mame@r...>
Date: Mon, 23 May 2022 18:45:39 +0900
Subject: [rubygems/rubygems] Support the change of did_you_mean about
 Exception#detailed_message

I am asking did_you_mean to use Exception#detailed_message to add
"Did you mean?" suggestion instead of overriding #message method.

https://github.com/ruby/did_you_mean/pull/177

Unfortunately, the change will affect Gem::UnknownCommandError, which
excepts did_you_mean to override #message method.

This PR absorbs the change of did_you_mean.
Gem::CommandManager now calls #detailed_message method to get a message
string with "Did you mean?" suggestion from an exception.

https://github.com/rubygems/rubygems/commit/8f104228d3
---
 lib/rubygems/command_manager.rb           | 7 ++++++-
 test/rubygems/test_gem_command_manager.rb | 8 +++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/lib/rubygems/command_manager.rb b/lib/rubygems/command_manager.rb
index 03cdd6a4bb..e421f89884 100644
--- a/lib/rubygems/command_manager.rb
+++ b/lib/rubygems/command_manager.rb
@@ -148,7 +148,12 @@ class Gem::CommandManager https://github.com/ruby/ruby/blob/trunk/lib/rubygems/command_manager.rb#L148
   def run(args, build_args=nil)
     process_args(args, build_args)
   rescue StandardError, Timeout::Error => ex
-    alert_error clean_text("While executing gem ... (#{ex.class})\n    #{ex}")
+    if ex.respond_to?(:detailed_message)
+      msg = ex.detailed_message(highlight: false).sub(/\A(.*?)(?: \(.+?\))/) { $1 }
+    else
+      msg = ex.message
+    end
+    alert_error clean_text("While executing gem ... (#{ex.class})\n    #{msg}")
     ui.backtrace ex
 
     terminate_interaction(1)
diff --git a/test/rubygems/test_gem_command_manager.rb b/test/rubygems/test_gem_command_manager.rb
index bee635d67e..00197d10f7 100644
--- a/test/rubygems/test_gem_command_manager.rb
+++ b/test/rubygems/test_gem_command_manager.rb
@@ -80,7 +80,13 @@ class TestGemCommandManager < Gem::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_command_manager.rb#L80
       message << "\nDid you mean?  \"push\""
     end
 
-    assert_equal message, e.message
+    if e.respond_to?(:detailed_message)
+      actual_message = e.detailed_message(highlight: false).sub(/\A(.*?)(?: \(.+?\))/) { $1 }
+    else
+      actual_message = e.message
+    end
+
+    assert_equal message, actual_message
   end
 
   def test_run_interrupt
-- 
cgit v1.2.1


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

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