1 Commits

Author SHA256 Message Date
9c0809271b Sync with factory 2026-02-18 12:16:09 +01:00
8 changed files with 84 additions and 117 deletions

3
.gitattributes vendored
View File

@@ -1,4 +1,4 @@
## Default LFS
*.changes merge=merge-changes
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
@@ -12,6 +12,7 @@
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text

5
.gitignore vendored
View File

@@ -1 +1,4 @@
.osc
*.obscpio
*.osc
_build.*
.pbuild

3
_multibuild Normal file
View File

@@ -0,0 +1,3 @@
<multibuild>
<package>test</package>
</multibuild>

View File

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

Binary file not shown.

BIN
click-8.3.1.tar.gz LFS Normal file

Binary file not shown.

View File

@@ -1,3 +1,51 @@
-------------------------------------------------------------------
Wed Feb 4 10:40:58 UTC 2026 - Daniel Garcia <daniel.garcia@suse.com>
- Add pythons_for_pypi macro
-------------------------------------------------------------------
Thu Jan 29 09:04:24 UTC 2026 - Daniel Garcia <daniel.garcia@suse.com>
- Run tests in a subpackage, this allows to exclude build in different
distributions
-------------------------------------------------------------------
Mon Nov 17 08:34:57 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to 8.3.1
* Dont discard pager arguments by correctly using subprocess.Popen.
* Replace Sentinel.UNSET default values by None as theyre 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>

View File

@@ -1,7 +1,7 @@
#
# spec file for package python-click
#
# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,22 +16,32 @@
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%define psuffix %{nil}
%bcond_with test
%endif
%{?pythons_for_pypi}
%{?sle15_python_module_pythons}
Name: python-click
Version: 8.2.1
Name: python-click%{psuffix}
Version: 8.3.1
Release: 0
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}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
%if %{with test}
BuildRequires: %{python_module click == %{version}}
BuildRequires: %{python_module pytest}
%endif
BuildRequires: fdupes
BuildRequires: python-rpm-macros
BuildArch: noarch
@@ -47,20 +57,28 @@ defaults out of the box.
%autosetup -p1 -n click-%{version}
%build
%if %{without test}
%pyproject_wheel
%endif
%install
%if %{without test}
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%check
%if %{with test}
export LANG=en_US.UTF-8
%pytest -rs --tb=short
%endif
%if %{without test}
%files %{python_files}
%license LICENSE.txt
%doc CHANGES.rst README.md
%{python_sitelib}/click
%{python_sitelib}/click-%{version}.dist-info
%endif
%changelog