Package: src:towncrier
Version: 24.8.0-2
Severity: serious
Tags: ftbfs trixie sid
Dear maintainer:
During a rebuild of all packages in unstable, your package failed to build:
--------------------------------------------------------------------------------
[...]
debian/rules clean
dh clean --with python3 --buildsystem=pybuild
dh_auto_clean -O--buildsystem=pybuild
dh_autoreconf_clean -O--buildsystem=pybuild
dh_clean -O--buildsystem=pybuild
debian/rules binary
dh binary --with python3 --buildsystem=pybuild
dh_update_autotools_config -O--buildsystem=pybuild
dh_autoreconf -O--buildsystem=pybuild
dh_auto_configure -O--buildsystem=pybuild
dh_auto_build -O--buildsystem=pybuild
I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module
I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13
* Building wheel...
Successfully built towncrier-24.8.0-py3-none-any.whl
I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module
dh_auto_test -O--buildsystem=pybuild
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest "/<<PKGBUILDDIR>>"/src/
============================= test session starts ==============================
platform linux -- Python 3.13.2, pytest-8.3.4, pluggy-1.5.0
rootdir: /<<PKGBUILDDIR>>
configfile: pyproject.toml
plugins: typeguard-4.4.1
collected 148 items
../../../src/towncrier/test/test_build.py .................F............ [ 20%] .F.......... [ 28%] ../../../src/towncrier/test/test_builder.py ................. [ 39%] ../../../src/towncrier/test/test_check.py ..................F. [ 53%] ../../../src/towncrier/test/test_create.py ............................. [ 72%]
[ 72%] ../../../src/towncrier/test/test_format.py ...... [ 77%] ../../../src/towncrier/test/test_git.py . [ 77%] ../../../src/towncrier/test/test_project.py ............. [ 86%] ../../../src/towncrier/test/test_settings.py ......FF....... [ 96%] ../../../src/towncrier/test/test_write.py ..... [100%]
=================================== FAILURES ===================================
__________________________ TestCli.test_needs_config ___________________________
self = <towncrier.test.test_build.TestCli testMethod=test_needs_config>
def test_needs_config(self):
"""
Towncrier needs a configuration file.
"""
runner = CliRunner()
with runner.isolated_filesystem():
result = runner.invoke(_main, ["--draft"])
self.assertEqual(1, result.exit_code, result.output)
self.assertTrue(result.output.startswith("No configuration file found."))
../../../src/towncrier/test/test_build.py:522:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/twisted/trial/_synctest.py:402: in assertTrue
super().assertTrue(condition, msg)
E twisted.trial.unittest.FailTest: False is not true
_____________ TestCli.test_singlefile_errors_and_explains_cleanly ______________
self = <towncrier.test.test_build.TestCli testMethod=test_singlefile_errors_and_explains_cleanly>
runner = <click.testing.CliRunner object at 0x7fc04247dd30>
@with_project(
config="""
[tool.towncrier]
singlefile="fail!"
"""
)
def test_singlefile_errors_and_explains_cleanly(self, runner):
"""
Failure to find the configuration file results in a clean explanation
without a traceback.
"""
result = runner.invoke(_main)
self.assertEqual(1, result.exit_code)
self.assertEqual(
"`singlefile` is not a valid option. Did you mean `single_file`?\n",
result.output,
)
../../../src/towncrier/test/test_build.py:817:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/twisted/trial/_synctest.py:444: in assertEqual
super().assertEqual(first, second, msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <towncrier.test.test_build.TestCli testMethod=test_singlefile_errors_and_explains_cleanly>
msg = "'`singlefile` is not a valid option. Did you mean `single_file`?\\n' != ''\n- `singlefile` is not a valid option. Did you mean `single_file`?\n"
def fail(self, msg: Optional[object] = None) -> NoReturn:
"""
Absolutely fail the test. Do not pass go, do not collect $200.
@param msg: the message that will be displayed as the reason for the
failure
"""
raise self.failureException(msg)
E twisted.trial.unittest.FailTest: '`singlefile` is not a valid option. Did you mean `single_file`?\n' != ''
E - `singlefile` is not a valid option. Did you mean `single_file`?
/usr/lib/python3/dist-packages/twisted/trial/_synctest.py:381: FailTest _________________ TestChecker.test_none_stdout_encoding_works __________________
self = <towncrier.test.test_check.TestChecker testMethod=test_none_stdout_encoding_works>
def test_none_stdout_encoding_works(self):
"""
No failure when output is piped causing None encoding for stdout.
"""
runner = CliRunner()
with runner.isolated_filesystem():
create_project("pyproject.toml", main_branch="master")
fragment_path = "foo/newsfragments/1234.feature"
with open(fragment_path, "w") as f:
f.write("Adds gravity back")
call(["git", "add", fragment_path])
call(["git", "commit", "-m", "add a newsfragment"])
runner = CliRunner(mix_stderr=False)
E TypeError: CliRunner.__init__() got an unexpected keyword argument 'mix_stderr'
../../../src/towncrier/test/test_check.py:260: TypeError ----------------------------- Captured stdout call -----------------------------
Initialized empty Git repository in /tmp/tmpruz0jsvg/.git/
[master (root-commit) 1764702] Initial Commit
3 files changed, 4 insertions(+)
create mode 100644 foo/__init__.py
create mode 100644 foo/newsfragments/123.feature
create mode 100644 pyproject.toml
[otherbranch b9fd99e] add a newsfragment
1 file changed, 1 insertion(+)
create mode 100644 foo/newsfragments/1234.feature ----------------------------- Captured stderr call -----------------------------
Switched to a new branch 'otherbranch'
_____________ TomlSettingsTests.test_load_explicit_missing_config ______________
self = <towncrier.test.test_settings.TomlSettingsTests testMethod=test_load_explicit_missing_config>
runner = <click.testing.CliRunner object at 0x7fc041787380>
@with_isolated_runner
def test_load_explicit_missing_config(self, runner: CliRunner):
"""
Calling the CLI with an incorrect explicit configuration file will exit with
code 1 and an informative message is sent to standard output.
"""
config = "not-there.toml"
result = runner.invoke(cli, ("--config", config))
self.assertEqual(result.exit_code, 1)
self.assertEqual(
result.output,
f"Configuration file '{os.path.abspath(config)}' not found.\n",
)
../../../src/towncrier/test/test_settings.py:224:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/twisted/trial/_synctest.py:444: in assertEqual
super().assertEqual(first, second, msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <towncrier.test.test_settings.TomlSettingsTests testMethod=test_load_explicit_missing_config>
msg = '\'\' != "Configuration file \'/tmp/tmpr3vzhu07/not-there.toml\' not found.\\n"\n+ Configuration file \'/tmp/tmpr3vzhu07/not-there.toml\' not found.\n'
def fail(self, msg: Optional[object] = None) -> NoReturn:
"""
Absolutely fail the test. Do not pass go, do not collect $200.
@param msg: the message that will be displayed as the reason for the
failure
"""
raise self.failureException(msg)
E twisted.trial.unittest.FailTest: '' != "Configuration file '/tmp/tmpr3vzhu07/not-there.toml' not found.\n"
E + Configuration file '/tmp/tmpr3vzhu07/not-there.toml' not found.
/usr/lib/python3/dist-packages/twisted/trial/_synctest.py:381: FailTest ____________________ TomlSettingsTests.test_load_no_config _____________________
self = <towncrier.test.test_settings.TomlSettingsTests testMethod=test_load_no_config>
runner = <click.testing.CliRunner object at 0x7fc041787230>
@with_isolated_runner
def test_load_no_config(self, runner: CliRunner):
"""
Calling the root CLI without an existing configuration file in the base directory,
will exit with code 1 and an informative message is sent to standard output.
"""
temp = self.mktemp()
os.makedirs(temp)
result = runner.invoke(cli, ("--dir", temp))
self.assertEqual(
result.output,
f"No configuration file found.\nLooked back from: {os.path.abspath(temp)}\n",
)
../../../src/towncrier/test/test_settings.py:208:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/twisted/trial/_synctest.py:444: in assertEqual
super().assertEqual(first, second, msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <towncrier.test.test_settings.TomlSettingsTests testMethod=test_load_no_config>
msg = "'' != 'No configuration file found.\\nLooked back[102 chars]mp\\n'\n+ No configuration file found.\n+ Looked back from: /tmp/tmp3wnual6i/towncrier.test.test_settings/TomlSettingsTests/test_load_no_config/yae2qc6r/temp\n"
def fail(self, msg: Optional[object] = None) -> NoReturn:
"""
Absolutely fail the test. Do not pass go, do not collect $200.
@param msg: the message that will be displayed as the reason for the
failure
"""
raise self.failureException(msg)
E twisted.trial.unittest.FailTest: '' != 'No configuration file found.\nLooked back[102 chars]mp\n'
E + No configuration file found.
E + Looked back from: /tmp/tmp3wnual6i/towncrier.test.test_settings/TomlSettingsTests/test_load_no_config/yae2qc6r/temp
/usr/lib/python3/dist-packages/twisted/trial/_synctest.py:381: FailTest =========================== short test summary info ============================
FAILED ../../../src/towncrier/test/test_build.py::TestCli::test_needs_config FAILED ../../../src/towncrier/test/test_build.py::TestCli::test_singlefile_errors_and_explains_cleanly
FAILED ../../../src/towncrier/test/test_check.py::TestChecker::test_none_stdout_encoding_works
FAILED ../../../src/towncrier/test/test_settings.py::TomlSettingsTests::test_load_explicit_missing_config
FAILED ../../../src/towncrier/test/test_settings.py::TomlSettingsTests::test_load_no_config
======================== 5 failed, 143 passed in 1.41s =========================
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest "{dir}"/src/
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13
make: *** [debian/rules:31: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 --------------------------------------------------------------------------------
The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:
https://people.debian.org/~sanvila/build-logs/202502/
About the archive rebuild: The build was made on virtual machines from AWS, using sbuild and a reduced chroot with only build-essential packages.
If you could not reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:towncrier, so that this is still
visible in the BTS web page for this package.
Thanks.
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)