Compare commits
10 Commits
01c689b45d
...
3658f26881
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3658f26881 | ||
|
|
7967f6df6f | ||
|
|
889d881778 | ||
|
|
509e4276d6 | ||
|
|
f55da64a15 | ||
|
|
e9fc685088 | ||
|
|
267a9c06d4 | ||
|
|
15aaa1d3a3 | ||
|
|
65f5e9baee | ||
|
|
b5f0764ad8 |
@ -0,0 +1,164 @@
|
||||
From f87021fee1023457bf693dae95ccfe765c3bff61 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Diggins <tim@red56.uk>
|
||||
Date: Fri, 4 Mar 2022 12:16:58 +0000
|
||||
Subject: [PATCH] fix expectations for ruby 3 treatment of hash arg
|
||||
|
||||
---
|
||||
spec/line_editor_spec.rb | 4 ++--
|
||||
spec/shell/basic_spec.rb | 34 +++++++++++++++++-----------------
|
||||
2 files changed, 19 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/spec/line_editor_spec.rb b/spec/line_editor_spec.rb
|
||||
index 575fd336..f034ec8d 100644
|
||||
--- a/spec/line_editor_spec.rb
|
||||
+++ b/spec/line_editor_spec.rb
|
||||
@@ -13,7 +13,7 @@
|
||||
describe ".readline" do
|
||||
it "uses the Readline line editor" do
|
||||
editor = double("Readline")
|
||||
- expect(Thor::LineEditor::Readline).to receive(:new).with("Enter your name ", :default => "Brian").and_return(editor)
|
||||
+ expect(Thor::LineEditor::Readline).to receive(:new).with("Enter your name ", {:default => "Brian"}).and_return(editor)
|
||||
expect(editor).to receive(:readline).and_return("George")
|
||||
expect(Thor::LineEditor.readline("Enter your name ", :default => "Brian")).to eq("George")
|
||||
end
|
||||
@@ -35,7 +35,7 @@
|
||||
describe ".readline" do
|
||||
it "uses the Basic line editor" do
|
||||
editor = double("Basic")
|
||||
- expect(Thor::LineEditor::Basic).to receive(:new).with("Enter your name ", :default => "Brian").and_return(editor)
|
||||
+ expect(Thor::LineEditor::Basic).to receive(:new).with("Enter your name ", {:default => "Brian"}).and_return(editor)
|
||||
expect(editor).to receive(:readline).and_return("George")
|
||||
expect(Thor::LineEditor.readline("Enter your name ", :default => "Brian")).to eq("George")
|
||||
end
|
||||
diff --git a/spec/shell/basic_spec.rb b/spec/shell/basic_spec.rb
|
||||
index b51c5e8a..b795a80a 100644
|
||||
--- a/spec/shell/basic_spec.rb
|
||||
+++ b/spec/shell/basic_spec.rb
|
||||
@@ -70,80 +70,80 @@ def shell
|
||||
|
||||
it "prints a message to the user with the available options, expects case-sensitive matching, and determines the correctness of the answer" do
|
||||
flavors = %w(strawberry chocolate vanilla)
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', :limited_to => flavors).and_return("chocolate")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', {:limited_to => flavors}).and_return("chocolate")
|
||||
expect(shell.ask('What\'s your favorite Neopolitan flavor?', :limited_to => flavors)).to eq("chocolate")
|
||||
end
|
||||
|
||||
it "prints a message to the user with the available options, expects case-sensitive matching, and reasks the question after an incorrect response" do
|
||||
flavors = %w(strawberry chocolate vanilla)
|
||||
expect($stdout).to receive(:print).with("Your response must be one of: [strawberry, chocolate, vanilla]. Please try again.\n")
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', :limited_to => flavors).and_return("moose tracks", "chocolate")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', {:limited_to => flavors}).and_return("moose tracks", "chocolate")
|
||||
expect(shell.ask('What\'s your favorite Neopolitan flavor?', :limited_to => flavors)).to eq("chocolate")
|
||||
end
|
||||
|
||||
it "prints a message to the user with the available options, expects case-sensitive matching, and reasks the question after a case-insensitive match" do
|
||||
flavors = %w(strawberry chocolate vanilla)
|
||||
expect($stdout).to receive(:print).with("Your response must be one of: [strawberry, chocolate, vanilla]. Please try again.\n")
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', :limited_to => flavors).and_return("cHoCoLaTe", "chocolate")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', {:limited_to => flavors}).and_return("cHoCoLaTe", "chocolate")
|
||||
expect(shell.ask('What\'s your favorite Neopolitan flavor?', :limited_to => flavors)).to eq("chocolate")
|
||||
end
|
||||
|
||||
it "prints a message to the user with the available options, expects case-insensitive matching, and determines the correctness of the answer" do
|
||||
flavors = %w(strawberry chocolate vanilla)
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', :limited_to => flavors, :case_insensitive => true).and_return("CHOCOLATE")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', {:limited_to => flavors, :case_insensitive => true}).and_return("CHOCOLATE")
|
||||
expect(shell.ask('What\'s your favorite Neopolitan flavor?', :limited_to => flavors, :case_insensitive => true)).to eq("chocolate")
|
||||
end
|
||||
|
||||
it "prints a message to the user with the available options, expects case-insensitive matching, and reasks the question after an incorrect response" do
|
||||
flavors = %w(strawberry chocolate vanilla)
|
||||
expect($stdout).to receive(:print).with("Your response must be one of: [strawberry, chocolate, vanilla]. Please try again.\n")
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', :limited_to => flavors, :case_insensitive => true).and_return("moose tracks", "chocolate")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] ', {:limited_to => flavors, :case_insensitive => true}).and_return("moose tracks", "chocolate")
|
||||
expect(shell.ask('What\'s your favorite Neopolitan flavor?', :limited_to => flavors, :case_insensitive => true)).to eq("chocolate")
|
||||
end
|
||||
|
||||
it "prints a message to the user containing a default and sets the default if only enter is pressed" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? (vanilla) ', :default => "vanilla").and_return("")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? (vanilla) ', {:default => "vanilla"}).and_return("")
|
||||
expect(shell.ask('What\'s your favorite Neopolitan flavor?', :default => "vanilla")).to eq("vanilla")
|
||||
end
|
||||
|
||||
it "prints a message to the user with the available options and reasks the question after an incorrect response and then returns the default" do
|
||||
flavors = %w(strawberry chocolate vanilla)
|
||||
expect($stdout).to receive(:print).with("Your response must be one of: [strawberry, chocolate, vanilla]. Please try again.\n")
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] (vanilla) ', :default => "vanilla", :limited_to => flavors).and_return("moose tracks", "")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('What\'s your favorite Neopolitan flavor? [strawberry, chocolate, vanilla] (vanilla) ', {:default => "vanilla", :limited_to => flavors}).and_return("moose tracks", "")
|
||||
expect(shell.ask("What's your favorite Neopolitan flavor?", :default => "vanilla", :limited_to => flavors)).to eq("vanilla")
|
||||
end
|
||||
end
|
||||
|
||||
describe "#yes?" do
|
||||
it "asks the user and returns true if the user replies yes" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", :add_to_history => false).and_return("y")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", {:add_to_history => false}).and_return("y")
|
||||
expect(shell.yes?("Should I overwrite it?")).to be true
|
||||
end
|
||||
|
||||
it "asks the user and returns false if the user replies no" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", :add_to_history => false).and_return("n")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", {:add_to_history => false}).and_return("n")
|
||||
expect(shell.yes?("Should I overwrite it?")).not_to be true
|
||||
end
|
||||
|
||||
it "asks the user and returns false if the user replies with an answer other than yes or no" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", :add_to_history => false).and_return("foobar")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", {:add_to_history => false}).and_return("foobar")
|
||||
expect(shell.yes?("Should I overwrite it?")).to be false
|
||||
end
|
||||
end
|
||||
|
||||
describe "#no?" do
|
||||
it "asks the user and returns true if the user replies no" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", :add_to_history => false).and_return("n")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", {:add_to_history => false}).and_return("n")
|
||||
expect(shell.no?("Should I overwrite it?")).to be true
|
||||
end
|
||||
|
||||
it "asks the user and returns false if the user replies yes" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", :add_to_history => false).and_return("Yes")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", {:add_to_history => false}).and_return("Yes")
|
||||
expect(shell.no?("Should I overwrite it?")).to be false
|
||||
end
|
||||
|
||||
it "asks the user and returns false if the user replies with an answer other than yes or no" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", :add_to_history => false).and_return("foobar")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with("Should I overwrite it? ", {:add_to_history => false}).and_return("foobar")
|
||||
expect(shell.no?("Should I overwrite it?")).to be false
|
||||
end
|
||||
end
|
||||
@@ -431,13 +431,13 @@ def #456 Lanç...
|
||||
expect(content).to eq(<<-TABLE)
|
||||
Name Number Color
|
||||
Erik 1234567890123 green
|
||||
-TABLE
|
||||
+ TABLE
|
||||
end
|
||||
end
|
||||
|
||||
describe "#file_collision" do
|
||||
it "shows a menu with options" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('Overwrite foo? (enter "h" for help) [Ynaqh] ', :add_to_history => false).and_return("n")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('Overwrite foo? (enter "h" for help) [Ynaqh] ', {:add_to_history => false}).and_return("n")
|
||||
shell.file_collision("foo")
|
||||
end
|
||||
|
||||
@@ -478,7 +478,7 @@ def #456 Lanç...
|
||||
end
|
||||
|
||||
it "always returns true if the user chooses always" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('Overwrite foo? (enter "h" for help) [Ynaqh] ', :add_to_history => false).and_return("a")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('Overwrite foo? (enter "h" for help) [Ynaqh] ', {:add_to_history => false}).and_return("a")
|
||||
|
||||
expect(shell.file_collision("foo")).to be true
|
||||
|
||||
@@ -488,7 +488,7 @@ def #456 Lanç...
|
||||
|
||||
describe "when a block is given" do
|
||||
it "displays diff and merge options to the user" do
|
||||
- expect(Thor::LineEditor).to receive(:readline).with('Overwrite foo? (enter "h" for help) [Ynaqdhm] ', :add_to_history => false).and_return("s")
|
||||
+ expect(Thor::LineEditor).to receive(:readline).with('Overwrite foo? (enter "h" for help) [Ynaqdhm] ', {:add_to_history => false}).and_return("s")
|
||||
shell.file_collision("foo") {}
|
||||
end
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
From 3da3b44afdf2fa0bd618b87c5d862e9def1d5f4f Mon Sep 17 00:00:00 2001
|
||||
From: Tim Diggins <tim@red56.uk>
|
||||
Date: Fri, 4 Mar 2022 11:25:44 +0000
|
||||
Subject: [PATCH] First fix CI so it's green (see #780, #781)
|
||||
|
||||
fix options spec.
|
||||
|
||||
allow line_editor spec to be run independently
|
||||
|
||||
running `rspec spec/line_editor_spec.rb` generated a double error
|
||||
when it tries to re require "readline"
|
||||
|
||||
fix expectations for ruby 3 treatment of hash arg
|
||||
|
||||
try coveralls_reborn to fix ssl errors.
|
||||
|
||||
Note that we could also use the coveralls action as recommended
|
||||
in https://github.com/tagliala/coveralls-ruby-reborn
|
||||
but it seems like a github token is needed, which makes
|
||||
it more complex for contributors
|
||||
|
||||
This does mean dropping coveralls for EOLed rubies but
|
||||
do we really need to post to coveralls on each test run?
|
||||
Wouldn't one test run be enough?
|
||||
---
|
||||
spec/parser/options_spec.rb | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/spec/parser/options_spec.rb b/spec/parser/options_spec.rb
|
||||
index b1e50fbf..5caf9f67 100644
|
||||
--- a/spec/parser/options_spec.rb
|
||||
+++ b/spec/parser/options_spec.rb
|
||||
@@ -116,7 +116,9 @@ def remaining
|
||||
expected = "Unknown switches \"--baz\""
|
||||
expected << "\nDid you mean? \"--bar\"" if Thor::Correctable
|
||||
|
||||
- expect { check_unknown! }.to raise_error(Thor::UnknownArgumentError, expected)
|
||||
+ expect { check_unknown! }.to raise_error(Thor::UnknownArgumentError) do |error|
|
||||
+ expect(error.to_s).to eq(expected)
|
||||
+ end
|
||||
end
|
||||
|
||||
it "skips leading non-switches" do
|
||||
58
rubygem-thor-1.2.1-did_you_mean-ruby32.patch
Normal file
58
rubygem-thor-1.2.1-did_you_mean-ruby32.patch
Normal file
@ -0,0 +1,58 @@
|
||||
From 46d1422902e1c66b31fae79be7dca79ff8b2e81b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
||||
Date: Wed, 15 Jun 2022 19:35:27 +0200
|
||||
Subject: [PATCH] Reimplement did_you_mean suggestions to keep behaviour
|
||||
accross rubies
|
||||
|
||||
Ruby 3.2 will introduce `Exception#detailed_message` and `did_you_mean`
|
||||
has been already updated in Ruby 3.2 to use that.
|
||||
|
||||
The new behaviour means not changing the original `Exception#message`.
|
||||
That means it is hard to get the previous error output, because
|
||||
`Exception#detailed_message` includes not only `did_you_mean`
|
||||
decorations, but also additional information like the exception class.
|
||||
|
||||
To fix this, I bring the old did_you_mean behavior into Thor, so that
|
||||
the above changes do not affect us.
|
||||
---
|
||||
lib/thor/error.rb | 22 +++++++++-------------
|
||||
1 file changed, 9 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/lib/thor/error.rb b/lib/thor/error.rb
|
||||
index 893b135e..cc3dfe41 100644
|
||||
--- a/lib/thor/error.rb
|
||||
+++ b/lib/thor/error.rb
|
||||
@@ -11,7 +11,15 @@ def initialize(dictionary)
|
||||
end
|
||||
end
|
||||
|
||||
- DidYouMean::Correctable
|
||||
+ Module.new do
|
||||
+ def to_s
|
||||
+ super + DidYouMean.formatter.message_for(corrections)
|
||||
+ end
|
||||
+
|
||||
+ def corrections
|
||||
+ @corrections ||= self.class.const_get(:SpellChecker).new(self).corrections
|
||||
+ end
|
||||
+ end
|
||||
end
|
||||
|
||||
# Thor::Error is raised when it's caused by wrong usage of thor classes. Those
|
||||
@@ -100,16 +108,4 @@ class RequiredArgumentMissingError < InvocationError
|
||||
|
||||
class MalformattedArgumentError < InvocationError
|
||||
end
|
||||
-
|
||||
- if Correctable
|
||||
- if DidYouMean.respond_to?(:correct_error)
|
||||
- DidYouMean.correct_error(Thor::UndefinedCommandError, UndefinedCommandError::SpellChecker)
|
||||
- DidYouMean.correct_error(Thor::UnknownArgumentError, UnknownArgumentError::SpellChecker)
|
||||
- else
|
||||
- DidYouMean::SPELL_CHECKERS.merge!(
|
||||
- 'Thor::UndefinedCommandError' => UndefinedCommandError::SpellChecker,
|
||||
- 'Thor::UnknownArgumentError' => UnknownArgumentError::SpellChecker
|
||||
- )
|
||||
- end
|
||||
- end
|
||||
end
|
||||
@ -1,40 +1,50 @@
|
||||
%global gem_name thor
|
||||
|
||||
Name: rubygem-%{gem_name}
|
||||
Version: 1.1.0
|
||||
Release: 1
|
||||
Summary: Thor is a toolkit for building powerful command-line interfaces
|
||||
License: MIT
|
||||
URL: http://whatisthor.com/
|
||||
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
|
||||
Source1: %{gem_name}-%{version}-spec.txz
|
||||
Name: rubygem-%{gem_name}
|
||||
Version: 1.2.1
|
||||
Release: 1
|
||||
Summary: Thor is a toolkit for building powerful command-line interfaces
|
||||
License: MIT
|
||||
URL: http://whatisthor.com/
|
||||
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
|
||||
Source1: %{gem_name}-%{version}-spec.txz
|
||||
|
||||
Requires: rubygem(io-console)
|
||||
BuildRequires: ruby(release)
|
||||
BuildRequires: rubygems-devel
|
||||
BuildRequires: ruby
|
||||
BuildRequires: rubygem(io-console)
|
||||
BuildRequires: rubygem(rspec)
|
||||
BuildRequires: rubygem(webmock) rubygem(rexml)
|
||||
BuildRequires: rubygem(did_you_mean)
|
||||
BuildRequires: git
|
||||
BuildArch: noarch
|
||||
Patch0: rubygem-thor-1.2.1-Fix-expectations-for-ruby-3-treatment-of-hash-arg.patch
|
||||
Patch1: rubygem-thor-1.2.1-Fix-rspec-mocks-3.11.0-compatibility.patch
|
||||
Patch2: rubygem-thor-1.2.1-did_you_mean-ruby32.patch
|
||||
|
||||
Requires: rubygem(io-console)
|
||||
BuildRequires: ruby(release)
|
||||
BuildRequires: rubygems-devel
|
||||
BuildRequires: ruby
|
||||
BuildRequires: rubygem(io-console)
|
||||
BuildRequires: rubygem(rake)
|
||||
BuildRequires: rubygem(rspec)
|
||||
BuildRequires: rubygem(webmock)
|
||||
BuildRequires: rubygem(did_you_mean)
|
||||
BuildRequires: git
|
||||
BuildArch: noarch
|
||||
|
||||
%description
|
||||
Thor is a toolkit for building powerful command-line interfaces.
|
||||
|
||||
|
||||
%package doc
|
||||
Summary: Documentation for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
|
||||
%description doc
|
||||
%description doc
|
||||
Documentation for %{name}.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{gem_name}-%{version} -b1
|
||||
|
||||
%patch2 -p1
|
||||
pushd %{_builddir}
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
popd
|
||||
|
||||
%build
|
||||
gem build ../%{gem_name}-%{version}.gemspec
|
||||
%gem_install
|
||||
@ -73,13 +83,25 @@ popd
|
||||
|
||||
%files doc
|
||||
%doc %{gem_docdir}
|
||||
%doc %{gem_instdir}/CHANGELOG.md
|
||||
%doc %{gem_instdir}/CONTRIBUTING.md
|
||||
%doc %{gem_instdir}/README.md
|
||||
%{gem_instdir}/thor.gemspec
|
||||
|
||||
%changelog
|
||||
* Fri May 04 2022 wangkerong <wangkerong@h-partners.com> - 1.1.0-1
|
||||
* Thu Aug 10 2023 wubijie <wubijie@kylinos.cn> - 1.2.1-1
|
||||
- Upgrade to version 1.2.1
|
||||
|
||||
* Tue Jan 17 2023 yaoxin <yaoxin30@h-partners.com> - 1.1.0-4
|
||||
- Fix build failed due to ruby update to 3.1.3
|
||||
|
||||
* Wed Jun 29 2022 liyanan <liyanan32@h-partners.com> - 1.1.0-3
|
||||
- Fix build failed with rubygem-rspec-mocks
|
||||
|
||||
* Wed Mar 30 2022 ouyangminxiang <ouyangminxiang@kylinsec.com.cn> - 1.1.0-2
|
||||
- add BuildRequires: rubygem-bigdecimal rubygem-io-console rubygem-openssl rubygem-psych
|
||||
to resolve koji build error during check
|
||||
|
||||
* Fri Mar 04 2022 wangkerong <wangkerong@h-partners.com> - 1.1.0-1
|
||||
- Upgrade to 1.1.0
|
||||
|
||||
* Sat Sep 5 2020 liyanan <liyanan32@huawei.com> - 0.20.3-2
|
||||
@ -87,3 +109,4 @@ popd
|
||||
|
||||
* Mon Aug 10 2020 yanan li <liyanan032@huawei.com> - 0.20.3-1
|
||||
- Package init
|
||||
|
||||
|
||||
BIN
thor-1.1.0.gem
BIN
thor-1.1.0.gem
Binary file not shown.
Binary file not shown.
BIN
thor-1.2.1.gem
Normal file
BIN
thor-1.2.1.gem
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user