pactest: drop trailing spaces from README

This commit is contained in:
Jelle van der Waa 2024-08-18 13:51:57 +02:00 committed by Allan McRae
parent e80569f5da
commit 8a60361949

View file

@ -4,17 +4,17 @@ README
pactest is a test suite for the Arch Linux package manager: pacman. pactest is a test suite for the Arch Linux package manager: pacman.
It has a rather high level view of operations performed by pacman: it It has a rather high level view of operations performed by pacman: it
automatically creates a test environment based on a test case file automatically creates a test environment based on a test case file
description, the run pacman, and finally check the results of test according description, the run pacman, and finally check the results of test according
to a set of rules defined in the test case. to a set of rules defined in the test case.
It is written in Python and makes available most of what can be found in It is written in Python and makes available most of what can be found in
pacman's code to create Arch Linux packages or read and write databases entries. pacman's code to create Arch Linux packages or read and write databases entries.
Each test case is defined in a separate file that is sourced in order to set Each test case is defined in a separate file that is sourced in order to set
the environment. the environment.
pactest creates the environment in the subdirectory "root" created in the pactest creates the environment in the subdirectory "root" created in the
current directory. current directory.
The following directory structure is used: The following directory structure is used:
- var/lib/pacman: databases path (local and sync ones) - var/lib/pacman: databases path (local and sync ones)
@ -23,7 +23,7 @@ The following directory structure is used:
- var/log/pactest.log: log file - var/log/pactest.log: log file
- var/pub: location for pseudo sync repositories - var/pub: location for pseudo sync repositories
- tmp: hold all local package archives (to be used with pacman -U) - tmp: hold all local package archives (to be used with pacman -U)
Note: the logfile is used to capture all pacman outputs. Note: the logfile is used to capture all pacman outputs.
Test case example: Test case example:
@ -41,7 +41,7 @@ Test case example:
for f in p.files: for f in p.files:
self.addrule("FILE_EXIST=%s" % f) self.addrule("FILE_EXIST=%s" % f)
Basically, the above test case will try to install a package (dummy-1.0-3), Basically, the above test case will try to install a package (dummy-1.0-3),
including two files, from a local archive, by calling "pacman -U" including two files, from a local archive, by calling "pacman -U"
Upon completion, it checks that: Upon completion, it checks that:
- pacman returned no error code, - pacman returned no error code,
@ -84,13 +84,13 @@ The test environment is described by the following basic parameters:
description description
----------- -----------
A short string describing the aim of the test case. It is displayed on the A short string describing the aim of the test case. It is displayed on the
standard output during test execution. standard output during test execution.
args args
---- ----
A string of arguments that are passed to the pacman binary when the test is A string of arguments that are passed to the pacman binary when the test is
run. run.
Example: Example:
@ -119,30 +119,30 @@ Examples:
filesystem filesystem
---------- ----------
A list of strings describing a set of files supposed to exist in the filesystem A list of strings describing a set of files supposed to exist in the filesystem
when the test case is run. when the test case is run.
Upon test startup, pactest will automatically populate the test environment Upon test startup, pactest will automatically populate the test environment
filesystem with this list of files. filesystem with this list of files.
Example: Example:
self.filesystem = ["bin/dummy", self.filesystem = ["bin/dummy",
"etc/X11/xorg.conf.pacsave"] "etc/X11/xorg.conf.pacsave"]
Note that all paths are relative ones, and thus file names should not start Note that all paths are relative ones, and thus file names should not start
with a "/". with a "/".
Packages Packages
======== ========
The test case file description shall define a number of packages that can be The test case file description shall define a number of packages that can be
used to either populate a database, or to feed pacman with data needed during used to either populate a database, or to feed pacman with data needed during
its execution. its execution.
This can be achieved by creating pmpkg objects, with the following constructor: This can be achieved by creating pmpkg objects, with the following constructor:
pmpkg(name, version) pmpkg(name, version)
Both "name" and "version" are strings. Also, note that if not provided, the Both "name" and "version" are strings. Also, note that if not provided, the
version defaults to "1.0-1". version defaults to "1.0-1".
Example: Example:
@ -151,7 +151,7 @@ Example:
All fields from a Arch Linux package can be set and modified directly with no All fields from a Arch Linux package can be set and modified directly with no
methods to access them. methods to access them.
Note: some fields are automatically set by pactest and should preferably not Note: some fields are automatically set by pactest and should preferably not
be modified by hand (i.e. "md5sum", "size", or "csize"). be modified by hand (i.e. "md5sum", "size", or "csize").
Examples: Examples:
@ -162,14 +162,14 @@ Examples:
Databases Databases
========= =========
The test environment provides a way to create and fill databases (local or The test environment provides a way to create and fill databases (local or
sync ones). sync ones).
The following methods shall be used: The following methods shall be used:
* addpkg2db(database, package) * addpkg2db(database, package)
Notes: "database" is a string, and "package" shall be a previously created Notes: "database" is a string, and "package" shall be a previously created
pmpkg object. pmpkg object.
Examples: Examples:
@ -178,15 +178,15 @@ Examples:
self.addpkg2db("sync1", spkg12) self.addpkg2db("sync1", spkg12)
self.addpkg2db("sync2", spkg21) self.addpkg2db("sync2", spkg21)
Note: there is no need to explicitly create a database. The "local" one Note: there is no need to explicitly create a database. The "local" one
already exists (even if empty), and sync databases are created on the fly when already exists (even if empty), and sync databases are created on the fly when
a new database name is given. a new database name is given.
* addpkg(package) * addpkg(package)
package is an existing pmpkg object. package is an existing pmpkg object.
It creates a package archive based on the given object. The resulting archive It creates a package archive based on the given object. The resulting archive
is located in the temporary directory of the test environment, ready to be is located in the temporary directory of the test environment, ready to be
supplied to pacman for test purposes. supplied to pacman for test purposes.
@ -198,7 +198,7 @@ name, with an additional line feed.
For instance, the content of a file "bin/dummy" created in the test environment For instance, the content of a file "bin/dummy" created in the test environment
file system is: "bin/dummy\n". file system is: "bin/dummy\n".
It is possible to create directories by appending a slash "/" to the name and It is possible to create directories by appending a slash "/" to the name and
to create symlinks by appending an arrow followed by a filename " -> target". to create symlinks by appending an arrow followed by a filename " -> target".
Note: only relative symlinks are supported. Note: only relative symlinks are supported.
@ -210,11 +210,11 @@ Example:
"lib/libfoo.so.O", "lib/libfoo.so.O",
"lib/libfoo.so -> ./libfoo.so.0"] "lib/libfoo.so -> ./libfoo.so.0"]
In this example, "usr/local/" is a directory, and "libfoo.so" will be a In this example, "usr/local/" is a directory, and "libfoo.so" will be a
symlink pointing at "libfoo.so.0". It is usually a good idea to also define symlink pointing at "libfoo.so.0". It is usually a good idea to also define
the target of the symlink! the target of the symlink!
It can be interesting for some tests to create altered files. This can be It can be interesting for some tests to create altered files. This can be
done by appending one or more asterisks "*" to the file name. done by appending one or more asterisks "*" to the file name.
Example: Example:
@ -228,13 +228,13 @@ Example:
self.args = "-U dummy-1.0-2.pkg.tar.gz" self.args = "-U dummy-1.0-2.pkg.tar.gz"
In this case, package "lpkg" will install a file "bin/dummy" with "bin/dummy\n" In this case, package "lpkg" will install a file "bin/dummy" with "bin/dummy\n"
as its content. Upon package upgrade, newpkg will provide a file named as its content. Upon package upgrade, newpkg will provide a file named
"bin/dummy" with "bin/dummy*\n" as its content. "bin/dummy" with "bin/dummy*\n" as its content.
This is useful to simulate that a file has been modified between two different This is useful to simulate that a file has been modified between two different
releases of a same package. releases of a same package.
The same also applies to files from the "filesystem" parameter of the test The same also applies to files from the "filesystem" parameter of the test
environment, and to the "backup" attribute of a package object. environment, and to the "backup" attribute of a package object.
@ -254,10 +254,10 @@ Examples:
self.addrule("FILE_MODIFIED=bin/dummy") self.addrule("FILE_MODIFIED=bin/dummy")
self.addrule("PKG_DEPENDS=xorg|fontconfig") self.addrule("PKG_DEPENDS=xorg|fontconfig")
Note: an item can be divided into two arguments, as shown in the latter Note: an item can be divided into two arguments, as shown in the latter
example. example.
All rules can be prepended with a bang "!" in order to tell pactest to expect All rules can be prepended with a bang "!" in order to tell pactest to expect
the exact opposite result. the exact opposite result.
Example: Example:
@ -275,12 +275,12 @@ Possible rules are:
For RETCODE, pactest will ensure the pacman return code is the value given. For RETCODE, pactest will ensure the pacman return code is the value given.
For OUTPUT, pactest will grep pacman outputs for the given value. For OUTPUT, pactest will grep pacman outputs for the given value.
Note: PACMAN_OUTPUT should not be used. Pacman outputs are likely to change Note: PACMAN_OUTPUT should not be used. Pacman outputs are likely to change
from one release to another, so that it's reliability is quite low. from one release to another, so that it's reliability is quite low.
. PKG rules . PKG rules
For each rule, pactest will read the entry "name" from the local database and For each rule, pactest will read the entry "name" from the local database and
challenge the requested data with it. challenge the requested data with it.
Possible rules are: Possible rules are: