2af435b5cd
The "nix-store" command within the VM test is running without NIX_REMOTE=daemon and since Nix 1.8 tries to open the store database in read-write mode even for nix-store -qR. Now, we're doing this properly and rely on setup hooks, which is the same method that's used when you're building a library which depends on blivet. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
84 lines
2.6 KiB
Nix
84 lines
2.6 KiB
Nix
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
|
|
|
|
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=".:$(< "${pkgs.stdenv.mkDerivation {
|
|
name = "blivet-pythonpath";
|
|
buildInputs = [ blivet mock ];
|
|
buildCommand = "echo \"$PYTHONPATH\" > \"$out\"";
|
|
}}")" python "${pythonTestRunner}"
|
|
'';
|
|
|
|
testScript = ''
|
|
$machine->waitForUnit("multi-user.target");
|
|
$machine->succeed("${blivetTest}");
|
|
$machine->execute("rm -rf /tmp/xchg/bigtmp");
|
|
'';
|
|
})
|