So that we consistently return the same value from lsb_release() across
all calls that use dry-run, the function now accepts a dry_run argument
(defaulting to False). This way, in dry-run mode, the caller does not
need to supply the path to a specific example file anymore.
lsb_release(dry_run=True) -> will load examples/lsb-release-focal
Having said that, the caller is still left with the possibility to
specify the example file by using the path argument:
lsb_release(path="example/lsb-release-impish")
The path and dry_run arguments are mutually exclusive: providing both
will result in a ValueError.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
This puts into place a tox.ini for running unit tests without
a large amount of deps installed into the system. For example,
we did not want to need libnl-route-3-dev or build-essential installed
in the system in order to run unit tests.
In order avoid import errors in the modules due to these missing
dependencies, we have added a 'fake_deps/' directory that provides
mock'd objects of the dependencies that were used.
The only installed packages necessary for this to run should be
tox itself and its dependencies (pip and friends). From a clean new
container we can then do:
apt-get install tox
git clone ...
tox
Also along the way:
* adjust setup.py to only need the DistUtilsExtra during 'build'.
This means tox usage doesn't require python3-distutils-extra.
* drop use of lsb_release in favor of built-in parsing.
This python module wasn't doing much. We can parse /etc/lsb-release
ourselves with less footprint. Also part of the motivation for this
is that lsb_release was not on pypi.
* replace use of StorageInfo in test_partition.py with a FakeStorageInfo
* .gitignore: ignore only the top level 'probert' directory so that
we can track fake_deps/probert.
* fix a couple escape chars, by using raw strings (r'').
* adjust gettext to return un-modified strings rather than '_(string)',
but support old style if FAKE_TRANSLATE=mangle.