75efdc6502
The loopback-based tests use a storage size of 102400 blocks (one block is 1024 bytes), which doesn't seem to fit for btrfs volumes in recent btrfs versions. I'm setting this to 409600 (400 MB) now so that it should be enough for later versions in case they need even more space for subvolumes. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
88 lines
2.8 KiB
Nix
88 lines
2.8 KiB
Nix
import ./make-test.nix ({ pkgs, ... }: with pkgs.pythonPackages; rec {
|
|
name = "blivet";
|
|
meta = with pkgs.stdenv.lib.maintainers; {
|
|
maintainers = [ aszlig ];
|
|
};
|
|
|
|
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()|' \
|
|
-e 's|DEFAULT_STORE_SIZE = .*|DEFAULT_STORE_SIZE = 409600|' \
|
|
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");
|
|
'';
|
|
})
|