#1114285 pytest-bdd: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 --system=custom "--test-args={interpreter} -m pytest -k 'not test_generate_with_quotes and not test_unicode_characters'" returned exit code 13

#1114285#5
Date:
2025-09-05 18:23:09 UTC
From:
To:
Dear maintainer:

During a rebuild of all packages in unstable, your package failed to build.

Below you will find how the build ends (probably the most relevant part,
but not necessarily). If required, the full build log is available here:

https://people.debian.org/~sanvila/build-logs/202509/

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:pytest-bdd, so that this is still
visible in the BTS web page for this package.

Thanks.
--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 debian/rules binary
dh binary --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_pytest-bdd
* Building wheel...

[... snipped ...]

            def pytest_generate_tests(metafunc):
                print('\npytest_generate_tests hook')
        """
            )
        )

        subdir.joinpath("test_foo.py").write_text(
            textwrap.dedent(
                r"""
            from pytest_bdd import scenario

            @scenario('foo.feature', 'Some scenario')
            def test_foo():
                pass
        """
            )
        )

        subdir.joinpath("foo.feature").write_text(
            textwrap.dedent(
                r"""
            Feature: The feature
                Scenario: Some scenario
        """
            )
        )

        result = pytester.runpytest("-s")

/<<PKGBUILDDIR>>/tests/test_hooks.py:46: AssertionError
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.13.7, pytest-8.4.1, pluggy-1.6.0
rootdir: /tmp/pytest-of-sbuild/pytest-0/test_conftest_module_evaluated_twice0
plugins: bdd-7.1.2, typeguard-4.4.4
collected 0 items / 1 error

==================================== ERRORS ====================================

/<<PKGBUILDDIR>>/tests/test_hooks.py:129: AssertionError
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.13.7, pytest-8.4.1, pluggy-1.6.0
rootdir: /tmp/pytest-of-sbuild/pytest-0/test_pytest_bdd_after_scenario_called_after_scenario0
plugins: bdd-7.1.2, typeguard-4.4.4
collected 0 items / 1 error

==================================== ERRORS ====================================
___ ERROR collecting test_pytest_bdd_after_scenario_called_after_scenario.py ___
/usr/lib/python3/dist-packages/pluggy/_hooks.py:512: in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/pluggy/_manager.py:120: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/pluggy/_manager.py:475: in traced_hookexec
    return outcome.get_result()
           ^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/pluggy/_manager.py:472: in <lambda>
    lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/_pytest/python.py:240: in pytest_pycollect_makeitem
    return list(collector._genfunctions(name, obj))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/_pytest/python.py:448: in _genfunctions
    definition = FunctionDefinition.from_parent(self, name=name, callobj=funcobj)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/_pytest/python.py:1625: in from_parent
    return super().from_parent(parent=parent, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/_pytest/nodes.py:233: in from_parent
    return cls._create(parent=parent, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/_pytest/nodes.py:110: in _create
    return super().__call__(*k, **kw)  # type: ignore[no-any-return,misc]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/_pytest/python.py:1616: in __init__
    fixtureinfo = fm.getfixtureinfo(self, self.obj, self.cls)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1569: in getfixtureinfo
    initialnames = deduplicate_names(autousenames, usefixturesnames, argnames)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1496: in deduplicate_names
    return tuple(dict.fromkeys(name for seq in seqs for name in seq))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1496: in <genexpr>
    return tuple(dict.fromkeys(name for seq in seqs for name in seq))
                                                                ^^^
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1616: in _getusefixturesnames
    marker_node.warn(
/usr/lib/python3/dist-packages/_pytest/nodes.py:271: in warn
    warnings.warn_explicit(
E   pytest.PytestWarning: usefixtures() in test_pytest_bdd_after_scenario_called_after_scenario.py::test_scenario_1 without arguments has no effect
=========================== short test summary info ============================
ERROR test_pytest_bdd_after_scenario_called_after_scenario.py - pytest.Pytest...
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
=============================== 1 error in 0.12s ===============================
=========================== short test summary info ============================
FAILED tests/args/cfparse/test_args.py::test_every_step_takes_param_with_the_same_name
FAILED tests/args/cfparse/test_args.py::test_argument_in_when - AssertionErro...
FAILED tests/args/parse/test_args.py::test_every_steps_takes_param_with_the_same_name
FAILED tests/args/parse/test_args.py::test_argument_in_when_step_1 - Assertio...
FAILED tests/args/regex/test_args.py::test_every_steps_takes_param_with_the_same_name
FAILED tests/args/regex/test_args.py::test_exact_match - AssertionError: asse...
FAILED tests/args/regex/test_args.py::test_argument_in_when - AssertionError:...
FAILED tests/args/test_common.py::test_reuse_same_step_different_converters
FAILED tests/args/test_common.py::test_string_steps_dont_take_precedence - As...
FAILED tests/feature/test_alias.py::test_step_alias - AssertionError: assert ...
FAILED tests/feature/test_background.py::test_background_basic - AssertionErr...
FAILED tests/feature/test_background.py::test_background_check_order - Assert...
FAILED tests/feature/test_cucumber_json.py::test_step_trace - AssertionError:...
FAILED tests/feature/test_description.py::test_description - AssertionError: ...
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_default_output_should_be_the_same_as_regular_terminal_reporter
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_verbose_mode_should_display_feature_and_scenario_names_instead_of_test_names_in_a_single_line
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_double_verbose_mode_should_display_full_scenario_description
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_error_message_for_missing_steps[]
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_error_message_for_missing_steps[-v]
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_error_message_for_missing_steps[-vv]
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_error_message_should_be_displayed[]
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_error_message_should_be_displayed[-v]
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_error_message_should_be_displayed[-vv]
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_local_variables_should_be_displayed_when_showlocals_option_is_used
FAILED tests/feature/test_gherkin_terminal_reporter.py::test_step_parameters_should_be_replaced_by_their_values
FAILED tests/feature/test_no_sctrict_gherkin.py::test_background_no_strict_gherkin
FAILED tests/feature/test_no_sctrict_gherkin.py::test_scenario_no_strict_gherkin
FAILED tests/feature/test_outline_empty_values.py::test_scenario_with_empty_example_values
FAILED tests/feature/test_report.py::test_step_trace - ValueError: could not ...
FAILED tests/feature/test_same_function_name.py::test_when_function_name_same_as_step_name
FAILED tests/feature/test_scenario.py::test_scenario_comments - AssertionErro...
FAILED tests/feature/test_scenario.py::test_angular_brakets_are_not_parsed - ...
FAILED tests/feature/test_steps.py::test_steps - AssertionError: assert {'err...
FAILED tests/feature/test_steps.py::test_step_function_can_be_decorated_multiple_times
FAILED tests/feature/test_steps.py::test_all_steps_can_provide_fixtures - Ass...
FAILED tests/feature/test_steps.py::test_when_first - AssertionError: assert ...
FAILED tests/feature/test_steps.py::test_then_after_given - AssertionError: a...
FAILED tests/feature/test_steps.py::test_conftest - AssertionError: assert {'...
FAILED tests/feature/test_steps.py::test_multiple_given - AssertionError: ass...
FAILED tests/feature/test_steps.py::test_step_hooks - IndexError: list index ...
FAILED tests/feature/test_steps.py::test_step_trace - AssertionError: assert ...
FAILED tests/feature/test_steps.py::test_steps_with_yield - AssertionError: a...
FAILED tests/feature/test_tags.py::test_tags_selector - KeyError: 'passed'
FAILED tests/feature/test_tags.py::test_tags_after_background_issue_160 - Key...
FAILED tests/feature/test_tags.py::test_apply_tag_hook - Failed: nomatch: 'SK...
FAILED tests/feature/test_tags.py::test_tag_with_spaces - Failed: nomatch: '*...
FAILED tests/feature/test_tags.py::test_at_in_scenario - Failed: nomatch: '*=...
FAILED tests/generation/test_generate_missing.py::test_generate_missing - Ass...
FAILED tests/generation/test_generate_missing.py::test_generate_missing_with_step_parsers
FAILED tests/library/test_parent.py::test_global_when_step - AssertionError: ...
FAILED tests/library/test_parent.py::test_uses_correct_step_in_the_hierarchy
FAILED tests/steps/test_common.py::test_step_function_multiple_target_fixtures
FAILED tests/steps/test_common.py::test_step_functions_same_parser - Assertio...
FAILED tests/steps/test_common.py::test_user_implements_a_step_generator - As...
FAILED tests/steps/test_common.py::test_step_catches_all - AssertionError: as...
FAILED tests/steps/test_given.py::test_given_injection - AssertionError: asse...
FAILED tests/steps/test_unicode.py::test_steps_in_feature_file_have_unicode
FAILED tests/steps/test_unicode.py::test_steps_in_py_file_have_unicode - Asse...
FAILED tests/test_hooks.py::test_conftest_module_evaluated_twice - AssertionE...
FAILED tests/test_hooks.py::test_pytest_bdd_after_scenario_called_after_scenario
=========== 60 failed, 59 passed, 1 skipped, 2 deselected in 14.27s ============
E: pybuild pybuild:389: test: plugin custom failed with: exit code=1: python3.13 -m pytest -k 'not test_generate_with_quotes and not test_unicode_characters'
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 --system=custom "--test-args={interpreter} -m pytest -k 'not test_generate_with_quotes and not test_unicode_characters'" returned exit code 13
make[1]: *** [debian/rules:11: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:6: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

#1114285#10
Date:
2026-07-04 21:42:48 UTC
From:
To:
Hi,

I was thinking of maybe a removal would be advisable ?

An upgrade would require to ITP "gherkin"

pytest_bdd is not used anywhere at the moment
but it looks like it could be useful to python-elastic-apm

https://sources.debian.org/src/python-elastic-apm/6.26.2-1/tests/bdd/api_key_tests.py?hl=34#L34

Greetings

Alexandre

#1114285#15
Date:
2026-07-06 01:58:29 UTC
From:
To:
Alexandre Detiste <alexandre.detiste@gmail.com> 于2026年7月5日周日 05:43写道:

#1139267 exists:
for the Gherkin language

Best Regards,
Tianyu Chen