Provided by: autopkgtest_5.11ubuntu1.1_all bug

NAME

       autopkgtest - test an installed binary package using the source package's tests

SYNOPSIS

       autopkgtest [options...]  [testbinary...]  testsrc -- virt-server [virt-server-arg...]

DESCRIPTION

       autopkgtest  runs  tests on binary Debian or Click packages, as installed on a system (called "testbed").
       The tests are supplied in the source package.

       autopkgtest runs each test supplied by a particular package and  reports  the  results.   It  drives  the
       specified  virtualisation  regime  as appropriate, parses the test description metadata, and arranges for
       data to be copied to and from the testbed as required.

       See  /usr/share/doc/autopkgtest/README.running-tests.rst.gz  for  an  introduction  about  how   to   use
       autopkgtest.

TESTING A DEBIAN PACKAGE

       Positional  (non-option)  arguments  specify  exactly  one  source package (containing the test code) and
       optionally some binary packages to test.

       testsrc can be one of:

       .dsc file
              Run tests from Debian .dsc source package. By default the package  will  also  be  built  and  the
              resulting  binaries  will  be  used  to  satisfy  test  dependencies; to disable that, specify the
              -B/--no-built-binaries option.

       source package directory
              Run tests from a Debian source tree directory. If that is an unbuilt tree, this is very similar to
              specifying a .dsc. If that is a built  tree,  all  test  dependencies  get  satisfied  by  archive
              packages, unless you explicitly specify locally built .debs as well.

              Attention:  If you just specify a bare directory name which is a legal Debian source package name,
              it will be interpreted as the latter (see below). In this case, prefix the directory name with ./.

       current directory
              If no source package is specified on the command line and the current directory is a Debian source
              package, this will be tested.

       source package name
              Downloads the given source package name with apt-get source in the testbed and run its tests. This
              is similar to specifying a .dsc but avoids copying the  source  from  the  host  to  the  testbed.
              Possibly  built  binaries  (if  the  test  specifies  needs-build)  will  not  be  used to satisfy
              dependencies, as usually in this mode you want to test binaries from a real archive.

       git URL or URL#branch
              Git-clones the given URL (which must contain an unbuilt Debian source tree)  and  runs  the  tests
              from  that.   If  branch is given, this branch will be checked out instead of the default (usually
              "master"). This can also be a more general refspec such as #refs/pull/123/head" for a GitHub  pull
              request.

              This  is  very  similar  to  cloning manually and specifying the checkout directory as test; i. e.
              this is commonly used with --no-built-binaries.  The git package will be installed if necessary.

       .changes file
              Run tests from the .dsc source package in the given .changes file. If the .changes  contains  .deb
              packages,  they  will  be used for the test.  Acts as if you had specified the .debs and .dsc from
              the .changes file as explicit arguments. Note  that  if  the  .changes  contains  only  debs,  the
              corresponding  .dsc  still  needs  to be specified alongside, or the current directory must be the
              source package.

       All other positional arguments must be .deb binary packages. They will be used for both  build  and  test
       dependencies of the source package. If any binary package is given, then --no-built-binaries is implied.

TESTING A CLICK PACKAGE

       This  needs  exactly  one  .click  package.  If its manifest specifies an x-source URL, the corresponding
       source package will be downloaded and tests run from there; then a source directory does not need  to  be
       given. Otherwise specifying a source directory as positional argument is mandatory.

       For  testing a local .click package, give its path to autopkgtest.  For testing a preinstalled click, use
       --installed-click com.example.myclick (this cannot be given as positional  argument  as  this  cannot  be
       disambiguated from Debian source package names).

       Examples with explicit click source directory:

              autopkgtest src/myclick_0.1_all.click com.example.myclick src/myclick/ -- [...]

              autopkgtest --installed-click com.example.myclick src/myclick/ -- [...]

       Examples without click source directory; click package needs to have x-source manifest entry:

              autopkgtest src/myclick_0.1_all.click -- [...]

              autopkgtest --installed-click com.example.myclick -- [...]

TEST OPTIONS

       -B | --no-built-binaries
              Binaries  from  unbuilt source packages (see above) will not be built or ignored, and dependencies
              are satisfied with packages from the archive. Note that the source package still gets built  if  a
              test requires build-needed.

       --override-control=PATH
              Read the test metadata from PATH instead of debian/tests/control (for Debian sources) or the Click
              manifest.

       --test-name=TEST
              Run  only  the  given  test  name  (from  test  control  file).  This replaces --testname which is
              deprecated.

LOGGING OPTIONS

       If you don't specify any option, autopkgtest only writes its output/results to stderr.

       -o dir | --output-dir=dir
              Specifies that test artifacts (stderr and stdout from  the  tests,  the  log  file,  built  binary
              packages  etc.)  should  be  placed  in  the given directory.  dir must not exist yet or be empty,
              otherwise autopkgtest will refuse to use it.

       -l logfile | --log-file=logfile
              Specifies that the trace log should be written to logfile instead of to output-dir.

       --summary=summary
              Specifies that a summary of the outcome should be written to summary.  The events in  the  summary
              are written to the log in any case.

       -q | --quiet
              Do  not  send  a copy of autopkgtest's trace logstream to stderr.  This option does not affect the
              copy sent to logfile or output-dir.  Note that without the trace logstream it can be very hard  to
              diagnose problems.

TEST BED SETUP OPTIONS

       --setup-commands=commands
              Run commands after opening the testbed. This can be used to do anything that isn't supported by an
              existing  autopkgtest  command.  If  commands is an existing file name, the commands are read from
              that; otherwise it is a string with the actual commands that gets run as-is.  File  names  without
              directory  will  be  searched  in  both the current directory and in /usr/share/autopkgtest/setup-
              commands/ so you do not need to give the full path for setup scripts shipped with autopkgtest.

              Normally, if the setup commands fail, autopkgtest will consider this  a  transient  testbed  error
              (exit  code 16). However, if the setup commands exit with code 100, autopkgtest will consider this
              an "erroneous package" (exit code 12) instead, so this can be used to e. g. detect upgrade  errors
              to a new version. Note that apt exits with exit code 100 in these cases.

              This option can be specified multiple times.

              If   --user   is   given  or  the  test  bed  provides  a  suggested-normal-user  capability,  the
              $AUTOPKGTEST_NORMAL_USER environment variable will be set to that user.

              If the setup commands affect anything in boot directories (like /boot or /lib/systemd/system)  and
              the testbed supports rebooting, the testbed will be rebooted after the setup commands. This can be
              suppressed by creating a file /run/autopkgtest_no_reboot.stamp.

       --setup-commands-boot=commands
              Run commands after the --setup-commands, and after every reboot. For example, these commands could
              be used to add files in a tmpfs.

              These  commands  never  cause  the  testbed to be rebooted (because that could lead to an infinite
              loop). Otherwise, they are just like the --setup-commands.

              This option can be specified multiple times.

       --add-apt-source='deb http://MIRROR SUITE COMPONENT...'
              Add  the  given  apt  source  to  /etc/apt/sources.list.d  and  update  it,  before  running   any
              --setup-commands.

              This option can be specified multiple times.

       --add-apt-release='RELEASE'
              Add  the  given  apt  RELEASE  to  /etc/apt/sources.list.d  and  update  it,  before  running  any
              --setup-commands.  The mirror and components to use are copied from the very  first  existing  APT
              sources.list entry. Both binary ("deb") and source ("deb-src") entries are added.

              This option can be specified multiple times.

       --apt-upgrade | -U
              Run  apt-get  update  and  apt-get  dist-upgrade  -y in the testbed before running the tests.  Any
              --add-apt-source or --apt-pocket options take effect first, so this  will  upgrade  packages  from
              those sources if appropriate.

       --apt-default-release=SUITE
              Set's  APT::Default-Release value to the provided value. For apt pinning (related to --apt-pocket,
              and --pin-packages) to work properly, APT::Default-Release must be set to the release that  should
              provide  the  packages  that are not pinned. For Debian and Ubuntu, this is normally automatically
              detected from the first entry in /etc/apt/sources.list.

       --apt-pocket=pocket[=pkgname,src:srcname,...]
              Add apt sources for release-pocket. This finds the first deb line in  /etc/apt/sources.list  which
              does  not  already  specify  a  pocket  and  adds  a  deb  and  deb-src  line  with that pocket to
              /etc/apt/sources.list.d/pocket.list.  This also calls apt-get update for the new pocket  (but  not
              for anything else).

              If a package list is given after =, set up apt pinning to use only those packages from pocket.  An
              entry  "src:srcname"  expands  to  all binary packages built by that source.  This can be used for
              minimizing dependencies taken from pocket so that package updates in that  pocket  can  be  tested
              independently  from  each  other for better isolation.  Attention: This does not currently resolve
              some situations where dependencies of the given packages can only be resolved in the given pocket.
              In that case the apt pinning will be removed and package installation will  be  retried  with  the
              entirety of pocket.

       --copy=HOSTPATH:TESTBEDPATH
              Copy  file or directory from host into testbed after opening. This happens before --setup-commands
              thus you can use these files in the setup commands.

       --env=VAR=value
              Set arbitrary environment variable in the build and test. Can be specified multiple times.

       --pin-packages=RELEASE=PACKAGE[,PACKAGE2]
              Set up apt pinning to use only those packages from RELEASE.  An entry "src:srcname" expands to all
              binary packages built by that source.  This can be used for  minimizing  dependencies  taken  from
              RELEASE  so  that  package updates in that release can be tested independently from each other for
              better isolation.

       --no-apt-fallback
              Disable  the  apt-get  fallback  which  is  used  with  --apt-pocket  or  --pin-packages  in  case
              installation of dependencies fails due to strict pinning.

USER/PRIVILEGE HANDLING OPTIONS

       -u user | --user=user
              Run  builds  and  tests  as  user  on the testbed.  This needs root on the testbed; if root on the
              testbed is not available then builds and tests run as whatever user is provided.

       --gain-root=gain-root
              Prefixes debian/rules binary with gain-root.  The default is not to use anything, except  that  if
              --user is supplied or root on the testbed is not available the default is fakeroot.

DEBUGGING OPTIONS

       --debug|-d
              Include  additional  debugging  information  in  the  trace log.  Each additional -d increases the
              debugging level; the current maximum is -ddd.  If you like to see what's going on, -d  or  -dd  is
              recommended.

       --shell-fail|-s
              Run an interactive shell in the testbed after a failed build, test, or dependency installation.

       --shell
              Run an interactive shell in the testbed after every test.

TIMEOUT OPTIONS

       --timeout-which=seconds
              Use  a  different timeout for operations on or with the testbed.  There are five timeouts affected
              by five values of which: short: supposedly short operations like setting up the testbed's apt  and
              checking  the  state  (default:  100s);  install:  installation of packages including dependencies
              (default: 3,000s); test: test runs (default: 10,000s); copy: copy files/directories  between  host
              and  testbed  (default: 300s); and build: builds (default: 100,000s).  The value must be specified
              as an integer number of seconds.

       --timeout-factor=double
              Multiply all of the default timeouts by the specified factor (see  --timeout-which  above).   Only
              the defaults are affected; explicit timeout settings are used exactly as specified.

LOCALE OPTIONS

       --set-lang=langval
              When  running commands on the testbed, sets the LANG environment variable to langval.  The default
              in autopkgtest is to set it to C.UTF-8.

OTHER OPTIONS

       --no-auto-control
              Disable automatic test generation with autodep8, even if it is installed. In that  case,  packages
              without tests will exit with code 8 ("No tests in this package") just like without autodep8.

       --build-parallel=N
              Set  parallel=N DEB_BUILD_OPTION for building packages. By default this is the number of available
              processors. This is mostly useful in containers where you can restrict the available RAM, but  not
              restrict the number of CPUs.

       -h|--help
              Show command line help and exit.

VIRTUALIZATION SERVER

       -- virt-server virt-server-arg...
              Specifies  the  virtualisation  regime  server, as a command and arguments to invoke.  virt-server
              must be an existing autopkgtest virtualization server such as schroot or qemu.

              All the remaining arguments and options after -- are passed to the virtualisation server  program.
              See the manpages of the individual servers for how to use them.

OUTPUT FORMAT

       During a normal test run, one line is printed for each test.  This consists of a short string identifying
       the  test,  some horizontal whitespace, and one of PASS, PASS details, FAIL reason, SKIP reason, or FLAKY
       reason where the pass/fail  indication  is  separated  by  any  reason  or  details  by  some  horizontal
       whitespace.

       The  string  to  identify  the  test  consists  of a short alphanumeric string invented by autopkgtest to
       distinguish different command-line arguments, the argid, followed by a hyphen and the test name.

       SKIP indicates that a test was not run, or that the test code was started  but  detected  that  the  test
       could not complete, for instance because a required resource was not available.

       FLAKY indicates that a test would ordinarily have failed, but because this particular test is known to be
       unreliable, the failure was ignored.

       Sometimes  a SKIP will be reported when the name of the test is not known or not applicable: for example,
       when there are no tests in the package, or  a  there  is  a  test  stanza  which  contains  features  not
       understood  by this version of autopkgtest.  In this case * will appear where the name of the test should
       be.

       If autopkgtest detects that erroneous package(s) are involved, it will print the two lines blame: blamed-
       thing...  and badpkg: message.  Here  each  whitespace-separated  blamed-thing  is  one  of  arg:argument
       (representing  a  pathname  found  in  a  command  line  argument),  dsc:package (a source package name),
       deb:package (a binary package name) or possibly other strings to be  determined.   This  indicates  which
       arguments  and/or  packages  might  have  contributed  to the problem; the ones which were processed most
       recently and which are therefore most likely to be the cause of a problem are listed last.

CONFIGURATION FILES

       If you use lots of options or nontrivial virt server arguments, you can put any part of the command  line
       into a text file, with one line per option. E. g. you can create a file sid.cfg with contents like

              -s
              --output-dir=/tmp/testout
              --apt-upgrade
              --
              schroot
              sid

       and then run

              autopkgtest foo_1_amd64.changes @sid.cfg

       The  contents of the configuration file will be expanded in-place as if you would have given its contents
       on the command line. Please ensure that you don't place spaces between short options  and  their  values,
       they would become a part of the argument value.

EXIT STATUS

       0    all tests passed
       2    at least one test was skipped (or at least one flaky test failed)
       4    at least one test failed
       6    at least one test failed and at least one test skipped
       8    no tests in this package, or all non-superficial tests were skipped
       12   erroneous package
       14   erroneous package and at least one test skipped
       16   testbed failure
       20   other unexpected failures including bad usage

SEE ALSO

       /usr/share/doc/autopkgtest/README.running-tests.rst.gz
       /usr/share/doc/autopkgtest/README.package-tests.rst.gz

AUTHORS AND COPYRIGHT

       This manpage is part of autopkgtest, a tool for testing Debian binary packages.  autopkgtest is Copyright
       (C) 2006-2014 Canonical Ltd.

       See /usr/share/doc/autopkgtest/CREDITS for the list of contributors and full copying conditions.

autopkgtest                                           2014                                        autopkgtest(1)