Provided by: dh-python_6.20240401_all bug

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)