14
0
forked from pool/python-click

Accepting request 1291320 from home:hsk17:branches:devel:languages:python

add click-8.2.1-clirunner.patch to fix clirunner breaking other modules' tests, cf. github.com/pallets/click/issues/2939.  e.g. python-mercantile fails tests since click-8.2.1.

OBS-URL: https://build.opensuse.org/request/show/1291320
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-click?expand=0&rev=58
This commit is contained in:
2025-07-09 08:31:43 +00:00
committed by Git OBS Bridge
parent b91e29f19d
commit b5d80ba23f
3 changed files with 114 additions and 0 deletions

106
click-8.2.1-clirunner.patch Normal file
View File

@@ -0,0 +1,106 @@
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):

View File

@@ -1,3 +1,9 @@
-------------------------------------------------------------------
Tue Jun 8 15:09:58 UTC 2025 - Friedrich Haubensak <hsk17@mail.de>
- Add click-8.2.1-clirunner.patch to fix clirunner breaking other
modules' tests, cf. github.com/pallets/click/issues/2939
-------------------------------------------------------------------
Wed May 21 07:16:31 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>

View File

@@ -24,6 +24,8 @@ Summary: A wrapper around optparse for command line utilities
License: BSD-3-Clause
URL: https://github.com/pallets/click
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 flit-core}
BuildRequires: %{python_module pip}