| 
									
										
										
										
											2016-11-09 16:38:54 +01:00
										 |  |  | import ./make-test.nix ({ pkgs, ... }: with pkgs.python2Packages; rec { | 
					
						
							| 
									
										
										
										
											2014-10-22 05:50:33 +02:00
										 |  |  |   name = "blivet"; | 
					
						
							| 
									
										
										
										
											2015-07-12 12:09:40 +02:00
										 |  |  |   meta = with pkgs.stdenv.lib.maintainers; { | 
					
						
							|  |  |  |     maintainers = [ aszlig ]; | 
					
						
							|  |  |  |   }; | 
					
						
							| 
									
										
										
										
											2014-10-22 05:50:33 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   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()|' \ | 
					
						
							| 
									
										
										
										
											2016-09-07 16:25:28 +02:00
										 |  |  |       -e 's|DEFAULT_STORE_SIZE = .*|DEFAULT_STORE_SIZE = 409600|' \ | 
					
						
							| 
									
										
										
										
											2014-10-22 05:50:33 +02:00
										 |  |  |       tests/loopbackedtestcase.py | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-18 13:14:02 +01:00
										 |  |  |     PYTHONPATH=".:$(< "${pkgs.stdenv.mkDerivation { | 
					
						
							|  |  |  |       name = "blivet-pythonpath"; | 
					
						
							|  |  |  |       buildInputs = [ blivet mock ]; | 
					
						
							|  |  |  |       buildCommand = "echo \"$PYTHONPATH\" > \"$out\""; | 
					
						
							|  |  |  |     }}")" python "${pythonTestRunner}" | 
					
						
							| 
									
										
										
										
											2014-10-22 05:50:33 +02:00
										 |  |  |   '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   testScript = ''
 | 
					
						
							|  |  |  |     $machine->waitForUnit("multi-user.target"); | 
					
						
							|  |  |  |     $machine->succeed("${blivetTest}"); | 
					
						
							|  |  |  |     $machine->execute("rm -rf /tmp/xchg/bigtmp"); | 
					
						
							|  |  |  |   '';
 | 
					
						
							|  |  |  | }) |