Provided by: dh-python_6.20250308_all 

NAME
pybuild-autopkgtest - invokes the test suite against requested Python versions and installed packages
SYNOPSIS
pybuild-autopkgtest
OPTIONS
pybuild-autopkgtest takes no options or arguments. All configuration is done via the same mechanisms you
use to control pybuild itself, namely by having build dependencies on the right packages, or by setting
PYBUILD_* environment variables in debian/rules.
DESCRIPTION
pybuild-autopkgtest is an autopkgtest test runner that reuses all the pybuild infrastructure to run tests
against installed packages, as expected by autopkgtest. To enable pybuild-autopkgtest for your package,
you need to add Testsuite: autopkgtest-pkg-pybuild to the source stanza in debian/control. This will
cause autodep8(1) to produce the correct contents for debian/tests/control.
pybuild-autopkgtest will run the tests in exactly the same way as pybuild will during the build, with the
exception that the tests are not run in the build directory. The test files are copied to a temporary
directory, so that the tests will run against the installed Python modules, and not against anything in
the source tree.
All the pybuild infrastructure is used, so for most packages you don't need to add any extra code
configure for pybuild-autopkgtest. For example, just having a python3-pytest as a build dependency is
enough to make the test runner use pytest to run the tests.
The tests are executed via a temporary makefile that includes debian/rules from the package, so that any
environment variables defined there will also be available during autopkgtest, including but not limited
to PYBUILD_* variables for configuring the behavior of pybuild itself.
ADOPTING PYBUILD-AUTOPKGTEST
Since pybuild-autopkgtest reuses environment variables set in debian/rules, migrating packages to use
pybuild-autopkgtest should not require much effort.
You might have a debian/tests/control that duplicates what pybuild-autopkgtest already does, e.g. copying
the test files to a temporary directory, changing to it, and running the tests from there. Such test
entries can usually be removed in favor of adding Testsuite: autopkgtest-pkg-pybuild to debian/control.
In general, you want to move any test-related command line arguments to pybuild into environment
variables in debian/rules.
You can also have specialized, manually-written test cases, alongside the ones autogenerated by autodep8.
For this, both set Testsuite: autopkgtest-pkg-pybuild in debian/control and keep your custom tests in
debian/tests/control.
VARYING BEHAVIOR UNDER AUTOPKGTEST
Ideally, the behavior of the tests should be the same during the build and under autopkgtest, except for
the fact that during autopkgtest the tests should load the code from the installed package.
pybuild-autopkgtest should do this correctly most of the time.
There are situations, however, in which you need a slightly different behavior during the autopkgtest
run. There are a few mechanisms to support that:
• pybuild-autopkgtest sets the PYBUILD_AUTOPKGTEST environment variable to 1 during the test run. This
way, you can add conditional behavior in debian/rules.
• Before and after running the tests, pybuild-autopkgtest will call the debian/rules targets
before-pybuild-autopkgtest and after-pybuild-autopkgtest, respectively, if they exist.
SAMPLE TEST CONTROL FILE
The control file produced by autodep8(1) looks like this:
Test-Command: pybuild-autopkgtest
Depends: @, @builddeps@,
Restrictions: allow-stderr, skippable,
Features: test-name=pybuild-autopkgtest
You should never need to hardcode this in debian/tests/control. You can add extra items to Restrictions
and Depends by providing a configuration file for autodep8 (debian/tests/autopkgtest-pkg-pybuild.conf)
like this:
extra_depends=foo, bar
extra_restrictions=isolation-container, breaks-testbed
SEE ALSO
• pybuild(1)
• autopkgtest(1)
• autodep8(1)
AUTHOR
Antonio Terceiro, 2021
PYBUILD-AUTOPKGTEST(1)