commit: 8ba9893dd6b1d6aefa82fcaa20b81d6574419b26 Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Wed Oct 15 08:08:28 2025 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Wed Oct 15 10:49:29 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8ba9893d
dev-python/black: Backport upstream test fixes Closes: https://bugs.gentoo.org/959727 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> dev-python/black/black-25.1.0.ebuild | 12 ++- dev-python/black/files/black-25.1.0-test.patch | 130 +++++++++++++++++++++++++ 2 files changed, 141 insertions(+), 1 deletion(-) diff --git a/dev-python/black/black-25.1.0.ebuild b/dev-python/black/black-25.1.0.ebuild index f685c7f32365..25af1703b282 100644 --- a/dev-python/black/black-25.1.0.ebuild +++ b/dev-python/black/black-25.1.0.ebuild @@ -35,8 +35,19 @@ BDEPEND=" dev-python/colorama[${PYTHON_USEDEP}] ) " + +EPYTEST_PLUGINS=() distutils_enable_tests pytest +PATCHES=( + # combined upstream test fixes: + # https://github.com/psf/black/pull/4577 + # https://github.com/psf/black/pull/4591 + # https://github.com/psf/black/pull/4666 + # https://github.com/psf/black/pull/4690 + "${FILESDIR}/${P}-test.patch" +) + python_test() { local EPYTEST_DESELECT=() @@ -50,7 +61,6 @@ python_test() { ;; esac - local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 epytest } diff --git a/dev-python/black/files/black-25.1.0-test.patch b/dev-python/black/files/black-25.1.0-test.patch new file mode 100644 index 000000000000..5573519caea4 --- /dev/null +++ b/dev-python/black/files/black-25.1.0-test.patch @@ -0,0 +1,130 @@ +diff --git a/tests/data/cases/pep_701.py b/tests/data/cases/pep_701.py +index 9acee95..6f86988 100644 +--- a/tests/data/cases/pep_701.py ++++ b/tests/data/cases/pep_701.py +@@ -74,9 +74,9 @@ + x = f"a{2+2:=^{foo(x+y**2):something else}one more}b" + f'{(abc:=10)}' + +-f"This is a really long string, but just make sure that you reflow fstrings { ++f"""This is a really long string, but just make sure that you reflow fstrings { + 2+2:d +-}" ++}""" + f"This is a really long string, but just make sure that you reflow fstrings correctly {2+2:d}" + + f"{2+2=}" +@@ -213,9 +213,9 @@ + x = f"a{2+2:=^{foo(x+y**2):something else}one more}b" + f"{(abc:=10)}" + +-f"This is a really long string, but just make sure that you reflow fstrings { ++f"""This is a really long string, but just make sure that you reflow fstrings { + 2+2:d +-}" ++}""" + f"This is a really long string, but just make sure that you reflow fstrings correctly {2+2:d}" + + f"{2+2=}" +diff --git a/tests/test_black.py b/tests/test_black.py +index 31bc34d..f7a68aa 100644 +--- a/tests/test_black.py ++++ b/tests/test_black.py +@@ -14,6 +14,7 @@ + from concurrent.futures import ThreadPoolExecutor + from contextlib import contextmanager, redirect_stderr + from dataclasses import fields, replace ++from importlib.metadata import version as imp_version + from io import BytesIO + from pathlib import Path, WindowsPath + from platform import system +@@ -25,6 +26,7 @@ + import pytest + from click import unstyle + from click.testing import CliRunner ++from packaging.version import Version + from pathspec import PathSpec + + import black +@@ -114,7 +116,10 @@ class BlackRunner(CliRunner): + """Make sure STDOUT and STDERR are kept separate when testing Black via its CLI.""" + + def __init__(self) -> None: +- super().__init__(mix_stderr=False) ++ if Version(imp_version("click")) >= Version("8.2.0"): ++ super().__init__() ++ else: ++ super().__init__(mix_stderr=False) + + + def invokeBlack( +@@ -187,10 +192,10 @@ def test_piping(self) -> None: + input=BytesIO(source.encode("utf-8")), + ) + self.assertEqual(result.exit_code, 0) +- self.assertFormatEqual(expected, result.output) +- if source != result.output: +- black.assert_equivalent(source, result.output) +- black.assert_stable(source, result.output, DEFAULT_MODE) ++ self.assertFormatEqual(expected, result.stdout) ++ if source != result.stdout: ++ black.assert_equivalent(source, result.stdout) ++ black.assert_stable(source, result.stdout, DEFAULT_MODE) + + def test_piping_diff(self) -> None: + diff_header = re.compile( +@@ -210,7 +215,7 @@ def test_piping_diff(self) -> None: + black.main, args, input=BytesIO(source.encode("utf-8")) + ) + self.assertEqual(result.exit_code, 0) +- actual = diff_header.sub(DETERMINISTIC_HEADER, result.output) ++ actual = diff_header.sub(DETERMINISTIC_HEADER, result.stdout) + actual = actual.rstrip() + "\n" # the diff output has a trailing space + self.assertEqual(expected, actual) + +@@ -295,7 +300,7 @@ def test_expression_diff(self) -> None: + self.assertEqual(result.exit_code, 0) + finally: + os.unlink(tmp_file) +- actual = result.output ++ actual = result.stdout + actual = diff_header.sub(DETERMINISTIC_HEADER, actual) + if expected != actual: + dump = black.dump_to_file(actual) +@@ -404,7 +409,7 @@ def test_skip_magic_trailing_comma(self) -> None: + self.assertEqual(result.exit_code, 0) + finally: + os.unlink(tmp_file) +- actual = result.output ++ actual = result.stdout + actual = diff_header.sub(DETERMINISTIC_HEADER, actual) + actual = actual.rstrip() + "\n" # the diff output has a trailing space + if expected != actual: +@@ -1826,7 +1831,7 @@ def test_bpo_2142_workaround(self) -> None: + self.assertEqual(result.exit_code, 0) + finally: + os.unlink(tmp_file) +- actual = result.output ++ actual = result.stdout + actual = diff_header.sub(DETERMINISTIC_HEADER, actual) + self.assertEqual(actual, expected) + +@@ -1836,7 +1841,7 @@ def compare_results( + ) -> None: + """Helper method to test the value and exit code of a click Result.""" + assert ( +- result.output == expected_value ++ result.stdout == expected_value + ), "The output did not match the expected value." + assert result.exit_code == expected_exit_code, "The exit code is incorrect." + +@@ -1913,7 +1918,8 @@ def test_code_option_safe(self) -> None: + args = ["--safe", "--code", code] + result = CliRunner().invoke(black.main, args) + +- self.compare_results(result, error_msg, 123) ++ assert error_msg == result.output ++ assert result.exit_code == 123 + + def test_code_option_fast(self) -> None: + """Test that the code option ignores errors when the sanity checks fail."""
