nixos: Add VM test for blivet.
I'm really not sure whether these tests are actually run upstream, because there are quite a few oddities which either are my fault by just missing something important or upstream really doesn't bother to run those tests. One example of this are testDiskChunk1 and testDiskChunk2, which create two non-existing partitions and tries to allocate them. Now, in allocatePartitions(), the partedPartition attributes are reset to None and shortly afterwards a for loop is expecting it to be NOT None. So, for now I'm disabling these tests and will see if we stumble on them during work on nixpart 1.0, so we're really sure whether it's my fault or a real bug in blivet. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
This commit is contained in:
parent
16371fce91
commit
cff26e2d38
@ -234,6 +234,7 @@ in rec {
|
||||
# ‘nix-build tests/login.nix -A result’.
|
||||
tests.avahi = callTest tests/avahi.nix {};
|
||||
tests.bittorrent = callTest tests/bittorrent.nix {};
|
||||
tests.blivet = callTest tests/blivet.nix {};
|
||||
tests.containers = callTest tests/containers.nix {};
|
||||
tests.firefox = callTest tests/firefox.nix {};
|
||||
tests.firewall = callTest tests/firewall.nix {};
|
||||
|
85
nixos/tests/blivet.nix
Normal file
85
nixos/tests/blivet.nix
Normal file
@ -0,0 +1,85 @@
|
||||
import ./make-test.nix ({ pkgs, ... }: with pkgs.pythonPackages; rec {
|
||||
name = "blivet";
|
||||
|
||||
machine = {
|
||||
environment.systemPackages = [ pkgs.python blivet mock ];
|
||||
boot.supportedFilesystems = [ "btrfs" "jfs" "reiserfs" "xfs" ];
|
||||
virtualisation.memorySize = 768;
|
||||
};
|
||||
|
||||
debugBlivet = false;
|
||||
debugProgramCalls = false;
|
||||
|
||||
pythonTestRunner = pkgs.writeText "run-blivet-tests.py" ''
|
||||
import sys
|
||||
import logging
|
||||
|
||||
from unittest import TestLoader
|
||||
from unittest.runner import TextTestRunner
|
||||
|
||||
${pkgs.lib.optionalString debugProgramCalls ''
|
||||
blivet_program_log = logging.getLogger("program")
|
||||
blivet_program_log.setLevel(logging.DEBUG)
|
||||
blivet_program_log.addHandler(logging.StreamHandler(sys.stderr))
|
||||
''}
|
||||
|
||||
${pkgs.lib.optionalString debugBlivet ''
|
||||
blivet_log = logging.getLogger("blivet")
|
||||
blivet_log.setLevel(logging.DEBUG)
|
||||
blivet_log.addHandler(logging.StreamHandler(sys.stderr))
|
||||
''}
|
||||
|
||||
runner = TextTestRunner(verbosity=2, failfast=False, buffer=False)
|
||||
result = runner.run(TestLoader().discover('tests/', pattern='*_test.py'))
|
||||
sys.exit(not result.wasSuccessful())
|
||||
'';
|
||||
|
||||
blivetTest = pkgs.writeScript "blivet-test.sh" ''
|
||||
#!${pkgs.stdenv.shell} -e
|
||||
|
||||
# Use the hosts temporary directory, because we have a tmpfs within the VM
|
||||
# and we don't want to increase the memory size of the VM for no reason.
|
||||
mkdir -p /tmp/xchg/bigtmp
|
||||
TMPDIR=/tmp/xchg/bigtmp
|
||||
export TMPDIR
|
||||
|
||||
mkPythonPath() {
|
||||
nix-store -qR "$@" \
|
||||
| sed -e 's|$|/lib/${pkgs.python.libPrefix}/site-packages|'
|
||||
}
|
||||
|
||||
cp -Rd "${blivet.src}/tests" .
|
||||
|
||||
# Skip SELinux tests
|
||||
rm -f tests/formats_test/selinux_test.py
|
||||
|
||||
# Race conditions in growing/shrinking during resync
|
||||
rm -f tests/devicelibs_test/mdraid_*
|
||||
|
||||
# Deactivate small BTRFS device test, because it fails with newer btrfsprogs
|
||||
sed -i -e '/^class *BTRFSAsRootTestCase3(/,/^[^ ]/ {
|
||||
/^class *BTRFSAsRootTestCase3(/d
|
||||
/^$/d
|
||||
/^ /d
|
||||
}' tests/devicelibs_test/btrfs_test.py
|
||||
|
||||
# How on earth can these tests ever work even upstream? O_o
|
||||
sed -i -e '/def testDiskChunk[12]/,/^ *[^ ]/{n; s/^ */&return # /}' \
|
||||
tests/partitioning_test.py
|
||||
|
||||
# fix hardcoded temporary directory
|
||||
sed -i \
|
||||
-e '1i import tempfile' \
|
||||
-e 's|_STORE_FILE_PATH = .*|_STORE_FILE_PATH = tempfile.gettempdir()|' \
|
||||
tests/loopbackedtestcase.py
|
||||
|
||||
PYTHONPATH=".:$(mkPythonPath "${blivet}" "${mock}" | paste -sd :)" \
|
||||
python "${pythonTestRunner}"
|
||||
'';
|
||||
|
||||
testScript = ''
|
||||
$machine->waitForUnit("multi-user.target");
|
||||
$machine->succeed("${blivetTest}");
|
||||
$machine->execute("rm -rf /tmp/xchg/bigtmp");
|
||||
'';
|
||||
})
|
@ -36,7 +36,7 @@ in buildPythonPackage rec {
|
||||
six
|
||||
];
|
||||
|
||||
# Tests in <nixos/tests/blivet.nix> coming soon.
|
||||
# Tests are in <nixos/tests/blivet.nix>.
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
|
Loading…
Reference in New Issue
Block a user