capitests: Add 'InitScratchFS' test environment.
[libguestfs.git] / HACKING
diff --git a/HACKING b/HACKING
index f661d1d..1121deb 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -168,35 +168,42 @@ Tests
 
 You can supply zero or as many tests as you want per API call.
 
-Note that the test environment has 3 block devices, of size 500MB,
-50MB and 10MB (respectively /dev/sda, /dev/sdb, /dev/sdc), and
-a fourth ISO block device with some known files on it (/dev/sdd).
+The test environment has 4 block devices:
+  /dev/sda   500MB   General block device for testing.
+  /dev/sdb    50MB   /dev/sdb1 is an ext2 filesystem used for testing
+                     filesystem write operations.
+  /dev/sdc    10MB   Used in a few tests where 2 block devices are needed.
+  /dev/sdd     -     ISO with fixed content (see images/test.iso).
+
+To be able to run the tests in a reasonable amount of time, the
+virtual machine and block devices are reused between tests.  So don't
+try testing kill_subprocess :-x  Between each test we blockdev-setrw,
+umount-all, lvm-remove-all.
+
+Each test starts with an initial scenario, selected using one of the
+'Init*' expressions, described in generator/generator_types.ml.  These
+initialize the disks in a particular way as described.  You should not
+assume anything about the previous contents of other disks that are
+not initialized.
+
+You can add a prerequisite clause to any individual test.  This is a
+run-time check, which, if it fails, causes the test to be skipped.
+Useful if testing a command which might not work on all variations of
+libguestfs builds.  A test that has prerequisite of 'Always' is run
+unconditionally.
 
-Note for partitioning purposes, the 500MB device has 1015 cylinders.
-Number of cylinders was 63 for IDE emulated disks with precisely
-the same size.  How exactly this is calculated is a mystery.
-
-The ISO block device (/dev/sdd) comes from images/test.iso.
-
-To be able to run the tests in a reasonable amount of time,
-the virtual machine and block devices are reused between tests.
-So don't try testing kill_subprocess :-x
+In addition, packagers can skip individual tests by setting the
+environment variables: eg:
 
-Between each test we blockdev-setrw, umount-all, lvm-remove-all.
+  SKIP_TEST_<CMD>_<NUM>=1  SKIP_TEST_COMMAND_3=1  (skips test #3 of command)
+  SKIP_TEST_<CMD>=1        SKIP_TEST_ZEROFREE=1   (skips all zerofree tests)
 
-Don't assume anything about the previous contents of the block
-devices.  Use 'Init*' to create some initial scenarios.
+and packagers can run only certain tests by setting eg:
 
-You can add a prerequisite clause to any individual test.  This
-is a run-time check, which, if it fails, causes the test to be
-skipped.  Useful if testing a command which might not work on
-all variations of libguestfs builds.  A test that has prerequisite
-of 'Always' is run unconditionally.
+  TEST_ONLY="vfs_type zerofree"
 
-In addition, packagers can skip individual tests by setting the
-environment variables:     eg:
-  SKIP_TEST_<CMD>_<NUM>=1  SKIP_TEST_COMMAND_3=1  (skips test #3 of command)
-  SKIP_TEST_<CMD>=1        SKIP_TEST_ZEROFREE=1   (skips all zerofree tests)
+See capitests/tests.c for more details of how these environment
+variables work.
 
 Debugging
 ----------------------------------------------------------------------