Source: towncrier
Version: 24.8.0-2
Severity: normal
Justification: FTBFS
Tags: ftbfs experimental
User: [email protected]
Usertags: python3-click-8.3.3

Hi,

I have completed a rebuild of the reverse dependencies of python3-click in
order to add support for version 8.3.3. The package towncrier was found to
fail to build in that situation.

To reproduce this locally, you need to install python3-click from experimental
on an unstable system or build chroot. Like this:

sbuild --extra-repository='deb http://deb.debian.org/debian experimental main' 
--starting-build-commands='apt-get update && apt-get -t experimental install 
--only-upgrade -y python-click'

Relevant part (hopefully):
>  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:142: Building wheel for python3.13 with "build" 
> module
> I: pybuild base:385: python3.13 -m build --skip-dependency-check 
> --no-isolation --wheel --outdir 
> /build/reproducible-path/towncrier-24.8.0/.pybuild/cpython3_3.13  
> * Building wheel...
> Successfully built towncrier-24.8.0-py3-none-any.whl
> I: pybuild plugin_pyproject:168: Unpacking wheel built for python3.13 with 
> "installer" module
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:385: cd 
> /build/reproducible-path/towncrier-24.8.0/.pybuild/cpython3_3.13/build; 
> python3.13 -m pytest "/build/reproducible-path/towncrier-24.8.0"/src/
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.13.12, pytest-9.0.3, pluggy-1.6.0
> rootdir: /build/reproducible-path/towncrier-24.8.0
> configfile: pyproject.toml
> collected 148 items
> 
> ../../../src/towncrier/test/test_build.py .....FF........FF............. [ 
> 20%]
> ............                                                             [ 
> 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 ...............             [ 
> 96%]
> ../../../src/towncrier/test/test_write.py .....                          
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ______________________ TestCli.test_default_start_string 
> _______________________
> 
> self = <towncrier.test.test_build.TestCli 
> testMethod=test_default_start_string>
> runner = <click.testing.CliRunner object at 0x7f1acd03db50>
> 
>     @with_project()
>     def test_default_start_string(self, runner):
>         """
>         The default start string is ``.. towncrier release notes start``.
>         """
>         write("foo/newsfragments/123.feature", "Adds levitation")
>         write(
>             "NEWS.rst",
>             contents="""
>                 a line
>     
>                 another
>     
>                 .. towncrier release notes start
>     
>                 a footer!
>             """,
>             dedent=True,
>         )
>     
>         result = runner.invoke(_main, ["--date", "01-01-2001"], 
> catch_exceptions=False)
> >       self.assertEqual(0, result.exit_code, result.output)
> 
> ../../../src/towncrier/test/test_build.py:1323: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/twisted/trial/_synctest.py:444: in assertEqual
>     super().assertEqual(first, second, msg)
> E   twisted.trial.unittest.FailTest: 0 != 1 : Loading template...
> E   Finding news fragments...
> E   Rendering news fragments...
> E   Writing to newsfile...
> E   Staging newsfile...
> E   I want to remove the following files:
> E   /tmp/tmpv_0ui709/foo/newsfragments/123.feature
> E   Is it okay if I remove those files? [Y/n]:Aborted!
> ----------------------------- Captured stderr call 
> -----------------------------
> fatal: not a git repository (or any of the parent directories): .git
> __________________ TestCli.test_default_start_string_markdown 
> __________________
> 
> self = <towncrier.test.test_build.TestCli 
> testMethod=test_default_start_string_markdown>
> runner = <click.testing.CliRunner object at 0x7f1accfbaf10>
> 
>     @with_project(
>         config="""
>         [tool.towncrier]
>         package = "foo"
>         filename = "NEWS.md"
>         """
>     )
>     def test_default_start_string_markdown(self, runner):
>         """
>         The default start string is ``<!-- towncrier release notes start 
> -->`` for
>         Markdown.
>         """
>         write("foo/newsfragments/123.feature", "Adds levitation")
>         write(
>             "NEWS.md",
>             contents="""
>                 a line
>     
>                 another
>     
>                 <!-- towncrier release notes start -->
>     
>                 a footer!
>             """,
>             dedent=True,
>         )
>     
>         result = runner.invoke(_main, ["--date", "01-01-2001"], 
> catch_exceptions=False)
> >       self.assertEqual(0, result.exit_code, result.output)
> 
> ../../../src/towncrier/test/test_build.py:1377: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/twisted/trial/_synctest.py:444: in assertEqual
>     super().assertEqual(first, second, msg)
> E   twisted.trial.unittest.FailTest: 0 != 1 : Loading template...
> E   Finding news fragments...
> E   Rendering news fragments...
> E   Writing to newsfile...
> E   Staging newsfile...
> E   I want to remove the following files:
> E   /tmp/tmpz11xlquk/foo/newsfragments/123.feature
> E   Is it okay if I remove those files? [Y/n]:Aborted!
> ----------------------------- Captured stderr call 
> -----------------------------
> fatal: not a git repository (or any of the parent directories): .git
> _________________ TestCli.test_markdown_injected_after_header 
> __________________
> 
> self = <towncrier.test.test_build.TestCli 
> testMethod=test_markdown_injected_after_header>
> runner = <click.testing.CliRunner object at 0x7f1acd001490>
> 
>     @with_project(
>         config="""
>         [tool.towncrier]
>         package = "foo"
>         filename = "NEWS.md"
>         title_format = "### [{project_date}] CUSTOM RELEASE for {name} 
> version {version}"
>         template = "custom_template.md"
>         """
>     )
>     def test_markdown_injected_after_header(self, runner):
>         """
>         Test that we can inject markdown after some fixed header
>         and have the injected markdown header levels set at the desired level.
>         This avoids a repeat of the regression introduced in
>         [#610](https://github.com/twisted/towncrier/pull/610),
>         which mistakenly assumed that starting the line with '# ' would work 
> in all use cases.
>         """
>         write("foo/newsfragments/123.feature", "Adds levitation")
>         write(
>             "NEWS.md",
>             contents="""
>                 # Top title
>     
>                 ## Section title
>     
>                 Some text explaining something
>     
>                 another line
>     
>                 ## Release notes
>     
>                 <!-- towncrier release notes start -->
>     
>                 a footer!
>             """,
>             dedent=True,
>         )
>     
>         default_template = read_pkg_resource("templates/default.md")
>         write(
>             "custom_template.md",
>             contents=default_template.replace(
>                 "### {{ definitions", "#### {{ definitions"
>             ),
>         )
>     
>         result = runner.invoke(_main, ["--date", "01-01-2001"], 
> catch_exceptions=False)
>     
>         with open("foo/newsfragments/123.feature", "w") as f:
>             f.write("Adds levitation")
>     
> >       self.assertEqual(0, result.exit_code, result.output)
> 
> ../../../src/towncrier/test/test_build.py:1151: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/twisted/trial/_synctest.py:444: in assertEqual
>     super().assertEqual(first, second, msg)
> E   twisted.trial.unittest.FailTest: 0 != 1 : Loading template...
> E   Finding news fragments...
> E   Rendering news fragments...
> E   Writing to newsfile...
> E   Staging newsfile...
> E   I want to remove the following files:
> E   /tmp/tmpsepmd2ck/foo/newsfragments/123.feature
> E   Is it okay if I remove those files? [Y/n]:Aborted!
> ----------------------------- Captured stderr call 
> -----------------------------
> fatal: not a git repository (or any of the parent directories): .git
> _____________________ TestCli.test_markdown_no_name_title 
> ______________________
> 
> self = <towncrier.test.test_build.TestCli 
> testMethod=test_markdown_no_name_title>
> runner = <click.testing.CliRunner object at 0x7f1acd0025d0>
> 
>     @with_project(
>         config="""
>         [tool.towncrier]
>         name = ""
>         directory = "changes"
>         filename = "NEWS.md"
>         version = "1.2.3"
>         """
>     )
>     def test_markdown_no_name_title(self, runner):
>         """
>         When configured with an empty `name` option,
>         the default template used for Markdown
>         renders the title of the release note with just
>         the version number and release date.
>         """
>         write("changes/123.feature", "Adds levitation")
>         write(
>             "NEWS.md",
>             contents="""
>                 A line
>     
>                 <!-- towncrier release notes start -->
>             """,
>             dedent=True,
>         )
>     
>         result = runner.invoke(_main, ["--date", "01-01-2001"], 
> catch_exceptions=False)
> >       self.assertEqual(0, result.exit_code, result.output)
> 
> ../../../src/towncrier/test/test_build.py:1429: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/twisted/trial/_synctest.py:444: in assertEqual
>     super().assertEqual(first, second, msg)
> E   twisted.trial.unittest.FailTest: 0 != 1 : Loading template...
> E   Finding news fragments...
> E   Rendering news fragments...
> E   Writing to newsfile...
> E   Staging newsfile...
> E   I want to remove the following files:
> E   /tmp/tmpbjxorpar/changes/123.feature
> E   Is it okay if I remove those files? [Y/n]:Aborted!
> ----------------------------- Captured stderr call 
> -----------------------------
> fatal: not a git repository (or any of the parent directories): .git
> _________________ 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/tmpqjnl_na9/.git/
> [master (root-commit) 9f6b664] 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 ee31566] add a newsfragment
>  1 file changed, 1 insertion(+)
>  create mode 100644 foo/newsfragments/1234.feature
> ----------------------------- Captured stderr call 
> -----------------------------
> Switched to a new branch 'otherbranch'
> =========================== short test summary info 
> ============================
> FAILED 
> ../../../src/towncrier/test/test_build.py::TestCli::test_default_start_string
> FAILED 
> ../../../src/towncrier/test/test_build.py::TestCli::test_default_start_string_markdown
> FAILED 
> ../../../src/towncrier/test/test_build.py::TestCli::test_markdown_injected_after_header
> FAILED 
> ../../../src/towncrier/test/test_build.py::TestCli::test_markdown_no_name_title
> FAILED 
> ../../../src/towncrier/test/test_check.py::TestChecker::test_none_stdout_encoding_works
> ======================== 5 failed, 143 passed in 1.57s 
> =========================
> E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd 
> /build/reproducible-path/towncrier-24.8.0/.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 
> --parallel=8 returned exit code 13


The full build log is available at
https://people.debian.org/~cipriano/custom-mass-rebuild/python3-click-8.3.3/towncrier_24.8.0-2.log

Attachment: signature.asc
Description: PGP signature

Reply via email to