88 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test.nix ({ pkgs, ... }: with pkgs.python2Packages; 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");
 | |
|   '';
 | |
| })
 | 
