Compare commits
9 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| d0a81c0a94 | |||
| 4c3161c651 | |||
| 128eca6232 | |||
| 8df0488fc9 | |||
| 4994069796 | |||
| 17b6353beb | |||
| 33f90a5284 | |||
| 90d07df29f | |||
| 4c1da6bdc6 |
@@ -1,106 +0,0 @@
|
|||||||
|
|
||||||
github.com/pallets/click/issues/2939
|
|
||||||
github.com/pallets/click/pull/2940
|
|
||||||
|
|
||||||
|
|
||||||
From 93c6966eb3a575c2b600434d1cc9f4b3aee505ac Mon Sep 17 00:00:00 2001
|
|
||||||
From: Antoine Lambert <anlambert@softwareheritage.org>
|
|
||||||
Date: Thu, 22 May 2025 22:14:23 +0200
|
|
||||||
Subject: [PATCH] testing/CliRunner: Fix regression related to EOF introduced
|
|
||||||
in 262bdf0
|
|
||||||
|
|
||||||
Commit 262bdf0 ensured to raise an EOFError exception on end of input
|
|
||||||
to simulate tty behavior and avoid blocking prompt during tests when
|
|
||||||
no more input is available.
|
|
||||||
|
|
||||||
However the introduced implementation has a side effect when testing a
|
|
||||||
click command having a File type option or argument and when it is set
|
|
||||||
to stdin: the command ends up with error due to the Abort exception
|
|
||||||
being raised when the stdin EOFError exception is caught.
|
|
||||||
|
|
||||||
To prevent this undesirable side effect, prefer to raise the EOFError
|
|
||||||
exceptions directly from the prompts functions inside the CliRunner
|
|
||||||
class instead of doing it in the method overriding the iterator protcol
|
|
||||||
for the _NamedTextIOWrapper class.
|
|
||||||
|
|
||||||
Restore previous implementation of a test broken by changes of 262bdf0.
|
|
||||||
|
|
||||||
Fixes #2939.
|
|
||||||
---
|
|
||||||
CHANGES.rst | 5 +++++
|
|
||||||
src/click/testing.py | 17 ++++++++---------
|
|
||||||
tests/test_chain.py | 4 ++--
|
|
||||||
3 files changed, 15 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/CHANGES.rst b/CHANGES.rst
|
|
||||||
index 1b8af9a5f..decdc2d91 100644
|
|
||||||
--- a/CHANGES.rst
|
|
||||||
+++ b/CHANGES.rst
|
|
||||||
@@ -1,5 +1,10 @@
|
|
||||||
.. currentmodule:: click
|
|
||||||
|
|
||||||
+Version 8.2.2
|
|
||||||
+-------------
|
|
||||||
+
|
|
||||||
+- Fix regression related to EOF handling in CliRunner. :issue:`2939`
|
|
||||||
+
|
|
||||||
Version 8.2.1
|
|
||||||
-------------
|
|
||||||
|
|
||||||
diff --git a/src/click/testing.py b/src/click/testing.py
|
|
||||||
index 7c0e8741e..e57eacc5d 100644
|
|
||||||
--- a/src/click/testing.py
|
|
||||||
+++ b/src/click/testing.py
|
|
||||||
@@ -116,13 +116,6 @@ def name(self) -> str:
|
|
||||||
def mode(self) -> str:
|
|
||||||
return self._mode
|
|
||||||
|
|
||||||
- def __next__(self) -> str: # type: ignore
|
|
||||||
- try:
|
|
||||||
- line = super().__next__()
|
|
||||||
- except StopIteration as e:
|
|
||||||
- raise EOFError() from e
|
|
||||||
- return line
|
|
||||||
-
|
|
||||||
|
|
||||||
def make_input_stream(
|
|
||||||
input: str | bytes | t.IO[t.Any] | None, charset: str
|
|
||||||
@@ -348,7 +341,10 @@ def isolation(
|
|
||||||
@_pause_echo(echo_input) # type: ignore
|
|
||||||
def visible_input(prompt: str | None = None) -> str:
|
|
||||||
sys.stdout.write(prompt or "")
|
|
||||||
- val = next(text_input).rstrip("\r\n")
|
|
||||||
+ try:
|
|
||||||
+ val = next(text_input).rstrip("\r\n")
|
|
||||||
+ except StopIteration as e:
|
|
||||||
+ raise EOFError() from e
|
|
||||||
sys.stdout.write(f"{val}\n")
|
|
||||||
sys.stdout.flush()
|
|
||||||
return val
|
|
||||||
@@ -357,7 +353,10 @@ def visible_input(prompt: str | None = None) -> str:
|
|
||||||
def hidden_input(prompt: str | None = None) -> str:
|
|
||||||
sys.stdout.write(f"{prompt or ''}\n")
|
|
||||||
sys.stdout.flush()
|
|
||||||
- return next(text_input).rstrip("\r\n")
|
|
||||||
+ try:
|
|
||||||
+ return next(text_input).rstrip("\r\n")
|
|
||||||
+ except StopIteration as e:
|
|
||||||
+ raise EOFError() from e
|
|
||||||
|
|
||||||
@_pause_echo(echo_input) # type: ignore
|
|
||||||
def _getchar(echo: bool) -> str:
|
|
||||||
diff --git a/tests/test_chain.py b/tests/test_chain.py
|
|
||||||
index ba11b7e2a..702eaaa3e 100644
|
|
||||||
--- a/tests/test_chain.py
|
|
||||||
+++ b/tests/test_chain.py
|
|
||||||
@@ -163,8 +163,8 @@ def processor(iterator):
|
|
||||||
return processor
|
|
||||||
|
|
||||||
result = runner.invoke(cli, args, input=input)
|
|
||||||
- # last two lines are '' and 'Aborted!'
|
|
||||||
- assert result.output.splitlines()[:-2] == expect
|
|
||||||
+ assert not result.exception
|
|
||||||
+ assert result.output.splitlines() == expect
|
|
||||||
|
|
||||||
|
|
||||||
def test_args_and_chain(runner):
|
|
||||||
BIN
click-8.2.1.tar.gz
LFS
BIN
click-8.2.1.tar.gz
LFS
Binary file not shown.
3
click-8.3.1.tar.gz
Normal file
3
click-8.3.1.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a
|
||||||
|
size 295065
|
||||||
@@ -1,3 +1,40 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Nov 17 08:34:57 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
|
||||||
|
|
||||||
|
- Update to 8.3.1
|
||||||
|
* Don’t discard pager arguments by correctly using subprocess.Popen.
|
||||||
|
* Replace Sentinel.UNSET default values by None as they’re passed
|
||||||
|
through the Context.invoke() method.
|
||||||
|
* Fix conversion of Sentinel.UNSET happening too early, which caused
|
||||||
|
incorrect behavior for multiple parameters using the same name.
|
||||||
|
* Hide Sentinel.UNSET values as None when looking up for other
|
||||||
|
parameters through the context inside parameter callbacks.
|
||||||
|
* Fix rendering when prompt and confirm parameter prompt_suffix is empty.
|
||||||
|
* When Sentinel.UNSET is found during parsing, it will skip calls to
|
||||||
|
type_cast_value.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Sep 26 04:26:21 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>
|
||||||
|
|
||||||
|
- Update to 8.3.0:
|
||||||
|
* Improved flag option handling: Reworked the relationship between
|
||||||
|
flag_value and default parameters for better consistency.
|
||||||
|
* Show correct auto complete value for nargs option in combination with
|
||||||
|
flag option.
|
||||||
|
* Fix handling of quoted and escaped parameters in Fish autocompletion.
|
||||||
|
* Properly forward exception information to resources registered with
|
||||||
|
click.core.Context.with_resource().
|
||||||
|
* Fix regression related to EOF handling in CliRunner.
|
||||||
|
- Drop patch click-8.2.1-clirunner.patch, included upstream.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Aug 9 07:09:03 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
Revert to 8.2.1, version 8.2.2 was yanked because Unintended change in
|
||||||
|
behavior of boolean options and None
|
||||||
|
https://pypi.org/project/click/8.2.2/
|
||||||
|
(and if I read `osc log` I would know dgarcia did this already)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jun 8 15:09:58 UTC 2025 - Friedrich Haubensak <hsk17@mail.de>
|
Tue Jun 8 15:09:58 UTC 2025 - Friedrich Haubensak <hsk17@mail.de>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python-click
|
# spec file for package python-click
|
||||||
#
|
#
|
||||||
# Copyright (c) 2025 SUSE LLC
|
# Copyright (c) 2025 SUSE LLC and contributors
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@@ -18,14 +18,12 @@
|
|||||||
|
|
||||||
%{?sle15_python_module_pythons}
|
%{?sle15_python_module_pythons}
|
||||||
Name: python-click
|
Name: python-click
|
||||||
Version: 8.2.1
|
Version: 8.3.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A wrapper around optparse for command line utilities
|
Summary: A wrapper around optparse for command line utilities
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
URL: https://github.com/pallets/click
|
URL: https://github.com/pallets/click
|
||||||
Source: https://files.pythonhosted.org/packages/source/c/click/click-%{version}.tar.gz
|
Source: https://files.pythonhosted.org/packages/source/c/click/click-%{version}.tar.gz
|
||||||
## see github.com/pallets/click/issues/2939, github.com/pallets/click/pull/2940
|
|
||||||
Patch0: click-8.2.1-clirunner.patch
|
|
||||||
BuildRequires: %{python_module base >= 3.10}
|
BuildRequires: %{python_module base >= 3.10}
|
||||||
BuildRequires: %{python_module flit-core}
|
BuildRequires: %{python_module flit-core}
|
||||||
BuildRequires: %{python_module pip}
|
BuildRequires: %{python_module pip}
|
||||||
|
|||||||
Reference in New Issue
Block a user