Compare commits

...

No commits in common. 'epel9' and 'i9' have entirely different histories.
epel9 ... i9

2
.gitignore vendored

@ -1,2 +0,0 @@
/thor-*-spec.txz
/thor-*.gem

@ -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

@ -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

Binary file not shown.

Binary file not shown.

@ -1,31 +1,37 @@
# Generated from thor-0.12.0.gem by gem2rpm -*- rpm-spec -*-
%global gem_name thor
%bcond_with check
Name: rubygem-%{gem_name}
Version: 1.1.0
Release: 3%{?dist}
Version: 1.2.1
Release: 4%{?dist}
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
# The test suite is not shipped with the gem, you may check it out like so:
# git clone https://github.com/erikhuda/thor.git --no-checkout
# cd thor && git archive -v -o thor-1.1.0-spec.txz v1.1.0 spec/
# cd thor && git archive -v -o thor-1.2.1-spec.txz v1.2.1 spec/
Source1: %{gem_name}-%{version}-spec.txz
# Fix rspec-mocks 3.10.3+ compatibility.
# https://github.com/rails/thor/pull/779/commits/f87021fee1023457bf693dae95ccfe765c3bff61
Patch0: rubygem-thor-1.2.1-Fix-expectations-for-ruby-3-treatment-of-hash-arg.patch
# Fix rspec-expectations 3.11.0+ compatibility.
# https://github.com/rails/thor/pull/782/commits/3da3b44afdf2fa0bd618b87c5d862e9def1d5f4f
Patch1: rubygem-thor-1.2.1-Fix-rspec-mocks-3.11.0-compatibility.patch
# https://github.com/rails/thor/pull/789
# did_you_mean behavior changed in ruby3.2
Patch2: rubygem-thor-1.2.1-did_you_mean-ruby32.patch
# ruby package has just soft dependency on rubygem(io-console), while
# Thor always requires it.
Requires: rubygem(io-console)
BuildRequires: ruby(release)
BuildRequires: rubygems-devel
BuildRequires: ruby
%if %{with check}
BuildRequires: rubygem(io-console)
BuildRequires: rubygem(rake)
BuildRequires: rubygem(rspec)
BuildRequires: rubygem(webmock)
BuildRequires: %{_bindir}/git
%endif
BuildArch: noarch
%description
@ -43,6 +49,12 @@ Documentation for %{name}.
%prep
%setup -q -n %{gem_name}-%{version} -b1
%patch2 -p1
pushd %{_builddir}
%patch0 -p1
%patch1 -p1
popd
%build
# Create the gem as gem install only works on a gem file
gem build ../%{gem_name}-%{version}.gemspec
@ -66,7 +78,6 @@ find %{buildroot}%{gem_instdir}/bin -type f | xargs chmod a+x
find %{buildroot}%{gem_instdir}/bin -type f | \
xargs -n 1 sed -i -e 's"^#!/usr/bin/env ruby"#!/usr/bin/ruby"'
%if %{with check}
%check
pushd .%{gem_instdir}
cp -r %{_builddir}/spec .
@ -78,7 +89,6 @@ sed -i '/simplecov/,/end/ s/^/#/' spec/helper.rb
# https://github.com/erikhuda/thor/issues/645
LC_ALL=C.UTF-8 rspec -rreadline spec
popd
%endif
%files
%dir %{gem_instdir}
@ -92,12 +102,30 @@ 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
* Thu Sep 21 2023 Arkady L. Shane <tigro@msvsphere-os.ru> - 1.2.1-4
- Rebuilt for MSVSphere 9.2
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Fri Nov 25 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1.2.1-3
- Backport upstream patch for ruby3.2 did_you_mean behavior change
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Mar 10 2022 Vít Ondruch <vondruch@redhat.com> - 1.2.1-1
- Update to Thor 1.2.1.
Resolves: rhbz#2037081
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild

@ -1,2 +0,0 @@
SHA512 (thor-1.1.0.gem) = 98e96ad70f8452e590b7c5266c495f4fbe11af2ce38aa2b3295da8cffe4bba7d660fab4faf604011cc4774ee77451d32002c43c74f3c422e1ed50866f7bcd927
SHA512 (thor-1.1.0-spec.txz) = 8ae3877da1108c4d291c9025c824560bc9ed2ff7618ffbcc3f0622793ebeb4ba434692a2c3138b28058bf65fb8396d946243b84ce255b72d3165630c4de3e6d9
Loading…
Cancel
Save