Note that additional memory may be required to typecheck Augeas lenses (RHBZ#729887).
[libguestfs.git] / generator / generator_types.ml
index 262fb20..50e9604 100644 (file)
@@ -1,5 +1,5 @@
 (* libguestfs
- * Copyright (C) 2009-2010 Red Hat Inc.
+ * Copyright (C) 2009-2011 Red Hat Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -185,6 +185,25 @@ and argt =
      *)
   | FileIn of string
   | FileOut of string
+    (* This specifies an opaque pointer that is passed through
+     * untouched.  Only non-daemon functions are supported.
+     *
+     * Pointer ("foo *", "bar") translates to "foo *bar" in the
+     * C API.  The pointer ("bar") cannot be NULL.
+     *
+     * This is less well supported in other language bindings:
+     * if the pointer type is known then we may be able to produce
+     * a suitable binding, otherwise this is translated into a 64
+     * bit int.
+     *
+     * Functions with this parameter type are not supported at all
+     * in guestfish (the function must be declared "NotInFish" else
+     * you will get an error).  Also the function cannot contain
+     * tests, although we should fix this in future.
+     *)
+  | Pointer of (string * string)
+
+type errcode = [ `CannotReturnError | `ErrorIsMinusOne | `ErrorIsNULL ]
 
 type flags =
   | ProtocolLimitWarning  (* display warning about protocol size limits *)
@@ -201,38 +220,7 @@ and fish_output_t =
   | FishOutputOctal       (* for int return, print in octal *)
   | FishOutputHexadecimal (* for int return, print in hex *)
 
-(* 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).
- *
- * 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
- *
- * Between each test we blockdev-setrw, umount-all, lvm-remove-all.
- *
- * Don't assume anything about the previous contents of the block
- * devices.  Use 'Init*' to create some initial scenarios.
- *
- * 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.
- *
- * 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 guestfs(3)/EXTENDING LIBGUESTFS. *)
 type tests = (test_init * test_prereq * test) list
 and test =
     (* Run the command sequence and just expect nothing to fail. *)
@@ -348,15 +336,16 @@ and test_init =
   | InitEmpty
 
     (* /dev/sda contains a single partition /dev/sda1, with random
-     * content.  /dev/sdb and /dev/sdc may have random content.
-     * No LVM.
+     * content.  No LVM.
      *)
   | InitPartition
 
     (* /dev/sda contains a single partition /dev/sda1, which is formatted
      * as ext2, empty [except for lost+found] and mounted on /.
-     * /dev/sdb and /dev/sdc may have random content.
      * No LVM.
+     *
+     * Note: for testing filesystem operations, it is quicker to use
+     * InitScratchFS
      *)
   | InitBasicFS
 
@@ -364,7 +353,9 @@ and test_init =
      *   /dev/sda1 (is a PV):
      *     /dev/VG/LV (size 8MB):
      *       formatted as ext2, empty [except for lost+found], mounted on /
-     * /dev/sdb and /dev/sdc may have random content.
+     *
+     * Note: only use this if you really need a freshly created filesystem
+     * on LVM.  Normally you should use InitScratchFS instead.
      *)
   | InitBasicFSonLVM
 
@@ -373,6 +364,16 @@ and test_init =
      *)
   | InitISOFS
 
+    (* /dev/sdb1 (write scratch disk) is mounted on /.  The filesystem
+     * will be empty.
+     *
+     * Note that this filesystem is not recreated between tests, and
+     * could contain random files and directories from previous tests.
+     * Therefore it is recommended that you create uniquely named files
+     * and directories for your tests.
+     *)
+  | InitScratchFS
+
 (* Sequence of commands for testing. *)
 and seq = cmd list
 and cmd = string list