Move the appliance and build scripts into new appliance/ subdirectory.
[libguestfs.git] / tests.c
diff --git a/tests.c b/tests.c
index 3123513..11bd2a5 100644 (file)
--- a/tests.c
+++ b/tests.c
@@ -72,6 +72,8 @@ static void no_test_warnings (void)
   fprintf (stderr, "warning: \"guestfs_get_qemu\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_set_path\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_get_path\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_set_append\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_get_append\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_set_autosync\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_get_autosync\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_set_verbose\" has no tests\n");
@@ -83,6 +85,7 @@ static void no_test_warnings (void)
   fprintf (stderr, "warning: \"guestfs_get_state\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_set_busy\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_set_ready\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_end_busy\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_ll\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_pvs_full\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_vgs_full\" has no tests\n");
@@ -104,8 +107,6 @@ static void no_test_warnings (void)
   fprintf (stderr, "warning: \"guestfs_chown\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_sfdisk\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_lvm_remove_all\" has no tests\n");
-  fprintf (stderr, "warning: \"guestfs_command\" has no tests\n");
-  fprintf (stderr, "warning: \"guestfs_command_lines\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_tune2fs_l\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_blockdev_setbsz\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_tar_out\" has no tests\n");
@@ -115,11 +116,36 @@ static void no_test_warnings (void)
   fprintf (stderr, "warning: \"guestfs_debug\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_get_e2label\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_get_e2uuid\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_pvresize\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_sfdisk_N\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_sfdisk_l\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_sfdisk_kernel_geometry\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_sfdisk_disk_geometry\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_vg_activate_all\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_vg_activate\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_resize2fs\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_e2fsck_f\" has no tests\n");
 }
 
-static int test_hexdump_0 (void)
+static int test_find_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_FIND_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_FIND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_find_0 (void)
 {
-  /* InitBasicFS for hexdump (0): create ext2 on /dev/sda1 */
+  if (test_find_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_find_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_find_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -177,36 +203,58 @@ static int test_hexdump_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for hexdump (0) */
-  char expected[] = "00000000  68 65 6c 6c 6f 0a 77 6f  72 6c 64 0a              |hello.world.|\n0000000c\n";
-  {
-    char path[] = "/new";
-    char content[] = "hello\nworld\n";
-    int r;
-    suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 12);
-    if (r == -1)
-      return -1;
-  }
+  /* TestOutputList for find (0) */
   {
-    char path[] = "/new";
-    char *r;
+    char directory[] = "/";
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_hexdump (g, path);
+    r = guestfs_find (g, directory);
     if (r == NULL)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_hexdump_0: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (!r[0]) {
+      fprintf (stderr, "test_find_0: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "lost+found";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_find_0: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (r[1] != NULL) {
+      fprintf (stderr, "test_find_0: extra elements returned from command\n");
+      print_strings (r);
       return -1;
     }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_strings_e_0 (void)
+static int test_find_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_FIND_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_FIND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_find_1 (void)
 {
-  /* InitBasicFS for strings_e (0): create ext2 on /dev/sda1 */
+  if (test_find_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_find_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_find_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -264,27 +312,89 @@ static int test_strings_e_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for strings_e (0) */
+  /* TestOutputList for find (1) */
   {
-    char path[] = "/new";
-    char content[] = "hello\nworld\n";
+    char path[] = "/a";
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_touch (g, path);
     if (r == -1)
       return -1;
   }
   {
-    char encoding[] = "b";
-    char path[] = "/new";
+    char path[] = "/b";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkdir (g, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/b/c";
+    int r;
+    suppress_error = 0;
+    r = guestfs_touch (g, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char directory[] = "/";
     char **r;
     int i;
     suppress_error = 0;
-    r = guestfs_strings_e (g, encoding, path);
+    r = guestfs_find (g, directory);
     if (r == NULL)
       return -1;
-    if (r[0] != NULL) {
-      fprintf (stderr, "test_strings_e_0: extra elements returned from command\n");
+    if (!r[0]) {
+      fprintf (stderr, "test_find_1: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "a";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_find_1: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (!r[1]) {
+      fprintf (stderr, "test_find_1: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "b";
+      if (strcmp (r[1], expected) != 0) {
+        fprintf (stderr, "test_find_1: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        return -1;
+      }
+    }
+    if (!r[2]) {
+      fprintf (stderr, "test_find_1: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "b/c";
+      if (strcmp (r[2], expected) != 0) {
+        fprintf (stderr, "test_find_1: expected \"%s\" but got \"%s\"\n", expected, r[2]);
+        return -1;
+      }
+    }
+    if (!r[3]) {
+      fprintf (stderr, "test_find_1: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "lost+found";
+      if (strcmp (r[3], expected) != 0) {
+        fprintf (stderr, "test_find_1: expected \"%s\" but got \"%s\"\n", expected, r[3]);
+        return -1;
+      }
+    }
+    if (r[4] != NULL) {
+      fprintf (stderr, "test_find_1: extra elements returned from command\n");
       print_strings (r);
       return -1;
     }
@@ -295,9 +405,25 @@ static int test_strings_e_0 (void)
   return 0;
 }
 
-static int test_strings_0 (void)
+static int test_find_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_FIND_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_FIND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_find_2 (void)
 {
-  /* InitBasicFS for strings (0): create ext2 on /dev/sda1 */
+  if (test_find_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_find_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_find_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -355,50 +481,57 @@ static int test_strings_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for strings (0) */
+  /* TestOutputList for find (2) */
   {
-    char path[] = "/new";
-    char content[] = "hello\nworld\n";
+    char path[] = "/a/b/c";
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_mkdir_p (g, path);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/new";
+    char path[] = "/a/b/c/d";
+    int r;
+    suppress_error = 0;
+    r = guestfs_touch (g, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char directory[] = "/a/b/";
     char **r;
     int i;
     suppress_error = 0;
-    r = guestfs_strings (g, path);
+    r = guestfs_find (g, directory);
     if (r == NULL)
       return -1;
     if (!r[0]) {
-      fprintf (stderr, "test_strings_0: short list returned from command\n");
+      fprintf (stderr, "test_find_2: short list returned from command\n");
       print_strings (r);
       return -1;
     }
     {
-      char expected[] = "hello";
+      char expected[] = "c";
       if (strcmp (r[0], expected) != 0) {
-        fprintf (stderr, "test_strings_0: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        fprintf (stderr, "test_find_2: expected \"%s\" but got \"%s\"\n", expected, r[0]);
         return -1;
       }
     }
     if (!r[1]) {
-      fprintf (stderr, "test_strings_0: short list returned from command\n");
+      fprintf (stderr, "test_find_2: short list returned from command\n");
       print_strings (r);
       return -1;
     }
     {
-      char expected[] = "world";
+      char expected[] = "c/d";
       if (strcmp (r[1], expected) != 0) {
-        fprintf (stderr, "test_strings_0: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        fprintf (stderr, "test_find_2: expected \"%s\" but got \"%s\"\n", expected, r[1]);
         return -1;
       }
     }
     if (r[2] != NULL) {
-      fprintf (stderr, "test_strings_0: extra elements returned from command\n");
+      fprintf (stderr, "test_find_2: extra elements returned from command\n");
       print_strings (r);
       return -1;
     }
@@ -409,9 +542,25 @@ static int test_strings_0 (void)
   return 0;
 }
 
-static int test_equal_0 (void)
+static int test_lvresize_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LVRESIZE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LVRESIZE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_lvresize_0 (void)
 {
-  /* InitBasicFS for equal (0): create ext2 on /dev/sda1 */
+  if (test_lvresize_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_lvresize_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_lvresize_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -435,6 +584,8 @@ static int test_equal_0 (void)
     if (r == -1)
       return -1;
   }
+  /* TestOutput for lvresize (0) */
+  char expected[] = "test content";
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -450,18 +601,48 @@ static int test_equal_0 (void)
       return -1;
   }
   {
-    char fstype[] = "ext2";
     char device[] = "/dev/sda1";
     device[5] = devchar;
     int r;
     suppress_error = 0;
+    r = guestfs_pvcreate (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char volgroup[] = "VG";
+    char physvols_0[] = "/dev/sda1";
+    physvols_0[5] = devchar;
+    char *physvols[] = {
+      physvols_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_vgcreate (g, volgroup, physvols);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 10);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/VG/LV";
+    int r;
+    suppress_error = 0;
     r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
+    char device[] = "/dev/VG/LV";
     char mountpoint[] = "/";
     int r;
     suppress_error = 0;
@@ -469,10 +650,9 @@ static int test_equal_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputTrue for equal (0) */
   {
-    char path[] = "/file1";
-    char content[] = "contents of a file";
+    char path[] = "/new";
+    char content[] = "test content";
     int r;
     suppress_error = 0;
     r = guestfs_write_file (g, path, content, 0);
@@ -480,33 +660,81 @@ static int test_equal_0 (void)
       return -1;
   }
   {
-    char src[] = "/file1";
-    char dest[] = "/file2";
+    char pathordevice[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_cp (g, src, dest);
+    r = guestfs_umount (g, pathordevice);
     if (r == -1)
       return -1;
   }
   {
-    char file1[] = "/file1";
-    char file2[] = "/file2";
+    char device[] = "/dev/VG/LV";
     int r;
     suppress_error = 0;
-    r = guestfs_equal (g, file1, file2);
+    r = guestfs_lvresize (g, device, 20);
     if (r == -1)
       return -1;
-    if (!r) {
-      fprintf (stderr, "test_equal_0: expected true, got false\n");
+  }
+  {
+    char device[] = "/dev/VG/LV";
+    int r;
+    suppress_error = 0;
+    r = guestfs_e2fsck_f (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/VG/LV";
+    int r;
+    suppress_error = 0;
+    r = guestfs_resize2fs (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/VG/LV";
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_cat (g, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_lvresize_0: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_equal_1 (void)
+static int test_zerofree_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_ZEROFREE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_ZEROFREE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_zerofree_0 (void)
 {
-  /* InitBasicFS for equal (1): create ext2 on /dev/sda1 */
+  if (test_zerofree_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_zerofree_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_zerofree_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -530,6 +758,8 @@ static int test_equal_1 (void)
     if (r == -1)
       return -1;
   }
+  /* TestOutput for zerofree (0) */
+  char expected[] = "test file";
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -545,7 +775,7 @@ static int test_equal_1 (void)
       return -1;
   }
   {
-    char fstype[] = "ext2";
+    char fstype[] = "ext3";
     char device[] = "/dev/sda1";
     device[5] = devchar;
     int r;
@@ -564,10 +794,9 @@ static int test_equal_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputFalse for equal (1) */
   {
-    char path[] = "/file1";
-    char content[] = "contents of a file";
+    char path[] = "/new";
+    char content[] = "test file";
     int r;
     suppress_error = 0;
     r = guestfs_write_file (g, path, content, 0);
@@ -575,33 +804,68 @@ static int test_equal_1 (void)
       return -1;
   }
   {
-    char path[] = "/file2";
-    char content[] = "contents of another file";
+    char pathordevice[] = "/dev/sda1";
+    pathordevice[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_umount (g, pathordevice);
     if (r == -1)
       return -1;
   }
   {
-    char file1[] = "/file1";
-    char file2[] = "/file2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_equal (g, file1, file2);
+    r = guestfs_zerofree (g, device);
     if (r == -1)
       return -1;
-    if (r) {
-      fprintf (stderr, "test_equal_1: expected false, got true\n");
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_cat (g, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_zerofree_0: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_equal_2 (void)
+static int test_hexdump_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_HEXDUMP_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_HEXDUMP");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_hexdump_0 (void)
 {
-  /* InitBasicFS for equal (2): create ext2 on /dev/sda1 */
+  if (test_hexdump_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_hexdump_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_hexdump_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -659,22 +923,52 @@ static int test_equal_2 (void)
     if (r == -1)
       return -1;
   }
-  /* TestLastFail for equal (2) */
+  /* TestOutput for hexdump (0) */
+  char expected[] = "00000000  68 65 6c 6c 6f 0a 77 6f  72 6c 64 0a              |hello.world.|\n0000000c\n";
   {
-    char file1[] = "/file1";
-    char file2[] = "/file2";
+    char path[] = "/new";
+    char content[] = "hello\nworld\n";
     int r;
-    suppress_error = 1;
-    r = guestfs_equal (g, file1, file2);
-    if (r != -1)
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 12);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_hexdump (g, path);
+    if (r == NULL)
       return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_hexdump_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
   }
   return 0;
 }
 
-static int test_ping_daemon_0 (void)
+static int test_strings_e_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_STRINGS_E_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_STRINGS_E");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_strings_e_0 (void)
 {
-  /* InitEmpty for ping_daemon (0) */
+  if (test_strings_e_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_strings_e_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_strings_e_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -698,58 +992,112 @@ static int test_ping_daemon_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestRun for ping_daemon (0) */
   {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_ping_daemon (g);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
-  return 0;
-}
-
-static int test_dmesg_0 (void)
-{
-  /* InitEmpty for dmesg (0) */
   {
-    char device[] = "/dev/sda";
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
     device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, device);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutputList for strings_e (0) */
   {
+    char path[] = "/new";
+    char content[] = "hello\nworld\n";
     int r;
     suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
+    r = guestfs_write_file (g, path, content, 0);
     if (r == -1)
       return -1;
   }
-  /* TestRun for dmesg (0) */
   {
-    char *r;
+    char encoding[] = "b";
+    char path[] = "/new";
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_dmesg (g);
+    r = guestfs_strings_e (g, encoding, path);
     if (r == NULL)
       return -1;
+    if (r[0] != NULL) {
+      fprintf (stderr, "test_strings_e_0: extra elements returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_drop_caches_0 (void)
+static int test_strings_e_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_STRINGS_E_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_STRINGS_E");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_strings_e_1 (void)
+{
+  if (test_strings_e_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_strings_e_1");
+    return 0;
+  }
+
+  printf ("%s skipped (reason: test disabled in generator)\n", "test_strings_e_1");
+  return 0;
+}
+
+static int test_strings_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_STRINGS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_STRINGS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_strings_0 (void)
 {
-  /* InitEmpty for drop_caches (0) */
+  if (test_strings_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_strings_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_strings_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -773,20 +1121,113 @@ static int test_drop_caches_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestRun for drop_caches (0) */
   {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_drop_caches (g, 3);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputList for strings (0) */
+  {
+    char path[] = "/new";
+    char content[] = "hello\nworld\n";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
     if (r == -1)
       return -1;
   }
+  {
+    char path[] = "/new";
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_strings (g, path);
+    if (r == NULL)
+      return -1;
+    if (!r[0]) {
+      fprintf (stderr, "test_strings_0: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "hello";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_strings_0: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (!r[1]) {
+      fprintf (stderr, "test_strings_0: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "world";
+      if (strcmp (r[1], expected) != 0) {
+        fprintf (stderr, "test_strings_0: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        return -1;
+      }
+    }
+    if (r[2] != NULL) {
+      fprintf (stderr, "test_strings_0: extra elements returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
+    free (r);
+  }
   return 0;
 }
 
-static int test_mv_0 (void)
+static int test_strings_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_STRINGS_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_STRINGS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_strings_1 (void)
 {
-  /* InitBasicFS for mv (0): create ext2 on /dev/sda1 */
+  if (test_strings_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_strings_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_strings_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -844,45 +1285,54 @@ static int test_mv_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for mv (0) */
-  char expected[] = "file content";
-  {
-    char path[] = "/old";
-    char content[] = "file content";
-    int r;
-    suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
-    if (r == -1)
-      return -1;
-  }
+  /* TestOutputList for strings (1) */
   {
-    char src[] = "/old";
-    char dest[] = "/new";
+    char path[] = "/new";
     int r;
     suppress_error = 0;
-    r = guestfs_mv (g, src, dest);
+    r = guestfs_touch (g, path);
     if (r == -1)
       return -1;
   }
   {
     char path[] = "/new";
-    char *r;
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_cat (g, path);
+    r = guestfs_strings (g, path);
     if (r == NULL)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_mv_0: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (r[0] != NULL) {
+      fprintf (stderr, "test_strings_1: extra elements returned from command\n");
+      print_strings (r);
       return -1;
     }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_mv_1 (void)
+static int test_equal_0_skip (void)
 {
-  /* InitBasicFS for mv (1): create ext2 on /dev/sda1 */
+  const char *str;
+
+  str = getenv ("SKIP_TEST_EQUAL_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_EQUAL");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_equal_0 (void)
+{
+  if (test_equal_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_equal_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_equal_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -940,10 +1390,10 @@ static int test_mv_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputFalse for mv (1) */
+  /* TestOutputTrue for equal (0) */
   {
-    char path[] = "/old";
-    char content[] = "file content";
+    char path[] = "/file1";
+    char content[] = "contents of a file";
     int r;
     suppress_error = 0;
     r = guestfs_write_file (g, path, content, 0);
@@ -951,32 +1401,49 @@ static int test_mv_1 (void)
       return -1;
   }
   {
-    char src[] = "/old";
-    char dest[] = "/new";
+    char src[] = "/file1";
+    char dest[] = "/file2";
     int r;
     suppress_error = 0;
-    r = guestfs_mv (g, src, dest);
+    r = guestfs_cp (g, src, dest);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/old";
+    char file1[] = "/file1";
+    char file2[] = "/file2";
     int r;
     suppress_error = 0;
-    r = guestfs_is_file (g, path);
+    r = guestfs_equal (g, file1, file2);
     if (r == -1)
       return -1;
-    if (r) {
-      fprintf (stderr, "test_mv_1: expected false, got true\n");
+    if (!r) {
+      fprintf (stderr, "test_equal_0: expected true, got false\n");
       return -1;
     }
   }
   return 0;
 }
 
-static int test_cp_a_0 (void)
+static int test_equal_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_EQUAL_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_EQUAL");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_equal_1 (void)
 {
-  /* InitBasicFS for cp_a (0): create ext2 on /dev/sda1 */
+  if (test_equal_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_equal_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_equal_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1034,27 +1501,19 @@ static int test_cp_a_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for cp_a (0) */
-  char expected[] = "file content";
-  {
-    char path[] = "/olddir";
-    int r;
-    suppress_error = 0;
-    r = guestfs_mkdir (g, path);
-    if (r == -1)
-      return -1;
-  }
+  /* TestOutputFalse for equal (1) */
   {
-    char path[] = "/newdir";
+    char path[] = "/file1";
+    char content[] = "contents of a file";
     int r;
     suppress_error = 0;
-    r = guestfs_mkdir (g, path);
+    r = guestfs_write_file (g, path, content, 0);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/olddir/file";
-    char content[] = "file content";
+    char path[] = "/file2";
+    char content[] = "contents of another file";
     int r;
     suppress_error = 0;
     r = guestfs_write_file (g, path, content, 0);
@@ -1062,33 +1521,40 @@ static int test_cp_a_0 (void)
       return -1;
   }
   {
-    char src[] = "/olddir";
-    char dest[] = "/newdir";
+    char file1[] = "/file1";
+    char file2[] = "/file2";
     int r;
     suppress_error = 0;
-    r = guestfs_cp_a (g, src, dest);
+    r = guestfs_equal (g, file1, file2);
     if (r == -1)
       return -1;
-  }
-  {
-    char path[] = "/newdir/olddir/file";
-    char *r;
-    suppress_error = 0;
-    r = guestfs_cat (g, path);
-    if (r == NULL)
-      return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_cp_a_0: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (r) {
+      fprintf (stderr, "test_equal_1: expected false, got true\n");
       return -1;
     }
-    free (r);
   }
   return 0;
 }
 
-static int test_cp_0 (void)
+static int test_equal_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_EQUAL_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_EQUAL");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_equal_2 (void)
 {
-  /* InitBasicFS for cp (0): create ext2 on /dev/sda1 */
+  if (test_equal_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_equal_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_equal_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1146,45 +1612,91 @@ static int test_cp_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for cp (0) */
-  char expected[] = "file content";
+  /* TestLastFail for equal (2) */
   {
-    char path[] = "/old";
-    char content[] = "file content";
+    char file1[] = "/file1";
+    char file2[] = "/file2";
+    int r;
+    suppress_error = 1;
+    r = guestfs_equal (g, file1, file2);
+    if (r != -1)
+      return -1;
+  }
+  return 0;
+}
+
+static int test_ping_daemon_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_PING_DAEMON_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_PING_DAEMON");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_ping_daemon_0 (void)
+{
+  if (test_ping_daemon_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_ping_daemon_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_ping_daemon_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_blockdev_setrw (g, device);
     if (r == -1)
       return -1;
   }
   {
-    char src[] = "/old";
-    char dest[] = "/new";
     int r;
     suppress_error = 0;
-    r = guestfs_cp (g, src, dest);
+    r = guestfs_umount_all (g);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/new";
-    char *r;
+    int r;
     suppress_error = 0;
-    r = guestfs_cat (g, path);
-    if (r == NULL)
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_cp_0: expected \"%s\" but got \"%s\"\n", expected, r);
+  }
+  /* TestRun for ping_daemon (0) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_ping_daemon (g);
+    if (r == -1)
       return -1;
-    }
-    free (r);
   }
   return 0;
 }
 
-static int test_cp_1 (void)
+static int test_dmesg_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_DMESG_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_DMESG");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_dmesg_0 (void)
 {
-  /* InitBasicFS for cp (1): create ext2 on /dev/sda1 */
+  if (test_dmesg_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_dmesg_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_dmesg_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1208,77 +1720,90 @@ static int test_cp_1 (void)
     if (r == -1)
       return -1;
   }
+  /* TestRun for dmesg (0) */
   {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
-    char lines_0[] = ",";
-    char *lines[] = {
-      lines_0,
-      NULL
-    };
-    int r;
+    char *r;
     suppress_error = 0;
-    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
-    if (r == -1)
+    r = guestfs_dmesg (g);
+    if (r == NULL)
       return -1;
+    free (r);
   }
-  {
-    char fstype[] = "ext2";
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
-    int r;
-    suppress_error = 0;
-    r = guestfs_mkfs (g, fstype, device);
-    if (r == -1)
-      return -1;
+  return 0;
+}
+
+static int test_drop_caches_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_DROP_CACHES_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_DROP_CACHES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_drop_caches_0 (void)
+{
+  if (test_drop_caches_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_drop_caches_0");
+    return 0;
   }
+
+  /* InitNone|InitEmpty for test_drop_caches_0 */
   {
-    char device[] = "/dev/sda1";
+    char device[] = "/dev/sda";
     device[5] = devchar;
-    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_mount (g, device, mountpoint);
+    r = guestfs_blockdev_setrw (g, device);
     if (r == -1)
       return -1;
   }
-  /* TestOutputTrue for cp (1) */
   {
-    char path[] = "/old";
-    char content[] = "file content";
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_umount_all (g);
     if (r == -1)
       return -1;
   }
   {
-    char src[] = "/old";
-    char dest[] = "/new";
     int r;
     suppress_error = 0;
-    r = guestfs_cp (g, src, dest);
+    r = guestfs_lvm_remove_all (g);
     if (r == -1)
       return -1;
   }
+  /* TestRun for drop_caches (0) */
   {
-    char path[] = "/old";
     int r;
     suppress_error = 0;
-    r = guestfs_is_file (g, path);
+    r = guestfs_drop_caches (g, 3);
     if (r == -1)
       return -1;
-    if (!r) {
-      fprintf (stderr, "test_cp_1: expected true, got false\n");
-      return -1;
-    }
   }
   return 0;
 }
 
-static int test_cp_2 (void)
+static int test_mv_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MV_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MV");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_mv_0 (void)
 {
-  /* InitBasicFS for cp (2): create ext2 on /dev/sda1 */
+  if (test_mv_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mv_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mv_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1336,7 +1861,7 @@ static int test_cp_2 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for cp (2) */
+  /* TestOutput for mv (0) */
   char expected[] = "file content";
   {
     char path[] = "/old";
@@ -1348,31 +1873,23 @@ static int test_cp_2 (void)
       return -1;
   }
   {
-    char path[] = "/dir";
-    int r;
-    suppress_error = 0;
-    r = guestfs_mkdir (g, path);
-    if (r == -1)
-      return -1;
-  }
-  {
     char src[] = "/old";
-    char dest[] = "/dir/new";
+    char dest[] = "/new";
     int r;
     suppress_error = 0;
-    r = guestfs_cp (g, src, dest);
+    r = guestfs_mv (g, src, dest);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/dir/new";
+    char path[] = "/new";
     char *r;
     suppress_error = 0;
     r = guestfs_cat (g, path);
     if (r == NULL)
       return -1;
     if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_cp_2: expected \"%s\" but got \"%s\"\n", expected, r);
+      fprintf (stderr, "test_mv_0: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
@@ -1380,9 +1897,25 @@ static int test_cp_2 (void)
   return 0;
 }
 
-static int test_grub_install_0 (void)
+static int test_mv_1_skip (void)
 {
-  /* InitBasicFS for grub_install (0): create ext2 on /dev/sda1 */
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MV_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MV");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_mv_1 (void)
+{
+  if (test_mv_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mv_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mv_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1440,37 +1973,61 @@ static int test_grub_install_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputTrue for grub_install (0) */
+  /* TestOutputFalse for mv (1) */
   {
-    char root[] = "/";
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
+    char path[] = "/old";
+    char content[] = "file content";
     int r;
     suppress_error = 0;
-    r = guestfs_grub_install (g, root, device);
+    r = guestfs_write_file (g, path, content, 0);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/boot";
+    char src[] = "/old";
+    char dest[] = "/new";
     int r;
     suppress_error = 0;
-    r = guestfs_is_dir (g, path);
+    r = guestfs_mv (g, src, dest);
     if (r == -1)
       return -1;
-    if (!r) {
-      fprintf (stderr, "test_grub_install_0: expected true, got false\n");
-      return -1;
-    }
   }
-  return 0;
-}
-
-static int test_zero_0 (void)
-{
-  /* InitBasicFS for zero (0): create ext2 on /dev/sda1 */
   {
-    char device[] = "/dev/sda";
+    char path[] = "/old";
+    int r;
+    suppress_error = 0;
+    r = guestfs_is_file (g, path);
+    if (r == -1)
+      return -1;
+    if (r) {
+      fprintf (stderr, "test_mv_1: expected false, got true\n");
+      return -1;
+    }
+  }
+  return 0;
+}
+
+static int test_cp_a_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CP_A_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CP_A");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_cp_a_0 (void)
+{
+  if (test_cp_a_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_cp_a_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_cp_a_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
     device[5] = devchar;
     int r;
     suppress_error = 0;
@@ -1526,36 +2083,51 @@ static int test_zero_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for zero (0) */
-  char expected[] = "data";
+  /* TestOutput for cp_a (0) */
+  char expected[] = "file content";
   {
-    char pathordevice[] = "/dev/sda1";
-    pathordevice[5] = devchar;
+    char path[] = "/olddir";
     int r;
     suppress_error = 0;
-    r = guestfs_umount (g, pathordevice);
+    r = guestfs_mkdir (g, path);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
+    char path[] = "/newdir";
     int r;
     suppress_error = 0;
-    r = guestfs_zero (g, device);
+    r = guestfs_mkdir (g, path);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/dev/sda1";
-    path[5] = devchar;
+    char path[] = "/olddir/file";
+    char content[] = "file content";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char src[] = "/olddir";
+    char dest[] = "/newdir";
+    int r;
+    suppress_error = 0;
+    r = guestfs_cp_a (g, src, dest);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/newdir/olddir/file";
     char *r;
     suppress_error = 0;
-    r = guestfs_file (g, path);
+    r = guestfs_cat (g, path);
     if (r == NULL)
       return -1;
     if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_zero_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      fprintf (stderr, "test_cp_a_0: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
@@ -1563,9 +2135,25 @@ static int test_zero_0 (void)
   return 0;
 }
 
-static int test_fsck_0 (void)
+static int test_cp_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CP_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CP");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_cp_0 (void)
 {
-  /* InitBasicFS for fsck (0): create ext2 on /dev/sda1 */
+  if (test_cp_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_cp_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_cp_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1623,36 +2211,61 @@ static int test_fsck_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for fsck (0) */
+  /* TestOutput for cp (0) */
+  char expected[] = "file content";
   {
-    char pathordevice[] = "/dev/sda1";
-    pathordevice[5] = devchar;
+    char path[] = "/old";
+    char content[] = "file content";
     int r;
     suppress_error = 0;
-    r = guestfs_umount (g, pathordevice);
+    r = guestfs_write_file (g, path, content, 0);
     if (r == -1)
       return -1;
   }
   {
-    char fstype[] = "ext2";
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
+    char src[] = "/old";
+    char dest[] = "/new";
     int r;
     suppress_error = 0;
-    r = guestfs_fsck (g, fstype, device);
+    r = guestfs_cp (g, src, dest);
     if (r == -1)
       return -1;
-    if (r != 0) {
-      fprintf (stderr, "test_fsck_0: expected 0 but got %d\n",               (int) r);
+  }
+  {
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_cat (g, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_cp_0: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_fsck_1 (void)
+static int test_cp_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CP_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CP");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_cp_1 (void)
 {
-  /* InitBasicFS for fsck (1): create ext2 on /dev/sda1 */
+  if (test_cp_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_cp_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_cp_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1710,45 +2323,59 @@ static int test_fsck_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for fsck (1) */
+  /* TestOutputTrue for cp (1) */
   {
-    char pathordevice[] = "/dev/sda1";
-    pathordevice[5] = devchar;
+    char path[] = "/old";
+    char content[] = "file content";
     int r;
     suppress_error = 0;
-    r = guestfs_umount (g, pathordevice);
+    r = guestfs_write_file (g, path, content, 0);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
+    char src[] = "/old";
+    char dest[] = "/new";
     int r;
     suppress_error = 0;
-    r = guestfs_zero (g, device);
+    r = guestfs_cp (g, src, dest);
     if (r == -1)
       return -1;
   }
   {
-    char fstype[] = "ext2";
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
+    char path[] = "/old";
     int r;
     suppress_error = 0;
-    r = guestfs_fsck (g, fstype, device);
+    r = guestfs_is_file (g, path);
     if (r == -1)
       return -1;
-    if (r != 8) {
-      fprintf (stderr, "test_fsck_1: expected 8 but got %d\n",               (int) r);
+    if (!r) {
+      fprintf (stderr, "test_cp_1: expected true, got false\n");
       return -1;
     }
   }
   return 0;
 }
 
-static int test_set_e2uuid_0 (void)
+static int test_cp_2_skip (void)
 {
-  /* InitBasicFS for set_e2uuid (0): create ext2 on /dev/sda1 */
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CP_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CP");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_cp_2 (void)
+{
+  if (test_cp_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_cp_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_cp_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1806,28 +2433,43 @@ static int test_set_e2uuid_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for set_e2uuid (0) */
-  char expected[] = "a3a61220-882b-4f61-89f4-cf24dcc7297d";
+  /* TestOutput for cp (2) */
+  char expected[] = "file content";
   {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
-    char uuid[] = "a3a61220-882b-4f61-89f4-cf24dcc7297d";
+    char path[] = "/old";
+    char content[] = "file content";
     int r;
     suppress_error = 0;
-    r = guestfs_set_e2uuid (g, device, uuid);
+    r = guestfs_write_file (g, path, content, 0);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
+    char path[] = "/dir";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkdir (g, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char src[] = "/old";
+    char dest[] = "/dir/new";
+    int r;
+    suppress_error = 0;
+    r = guestfs_cp (g, src, dest);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/dir/new";
     char *r;
     suppress_error = 0;
-    r = guestfs_get_e2uuid (g, device);
+    r = guestfs_cat (g, path);
     if (r == NULL)
       return -1;
     if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_set_e2uuid_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      fprintf (stderr, "test_cp_2: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
@@ -1835,9 +2477,25 @@ static int test_set_e2uuid_0 (void)
   return 0;
 }
 
-static int test_set_e2uuid_1 (void)
+static int test_grub_install_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_GRUB_INSTALL_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_GRUB_INSTALL");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_grub_install_0 (void)
 {
-  /* InitBasicFS for set_e2uuid (1): create ext2 on /dev/sda1 */
+  if (test_grub_install_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_grub_install_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_grub_install_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1895,38 +2553,51 @@ static int test_set_e2uuid_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for set_e2uuid (1) */
-  char expected[] = "";
+  /* TestOutputTrue for grub_install (0) */
   {
+    char root[] = "/";
     char device[] = "/dev/sda1";
     device[5] = devchar;
-    char uuid[] = "clear";
     int r;
     suppress_error = 0;
-    r = guestfs_set_e2uuid (g, device, uuid);
+    r = guestfs_grub_install (g, root, device);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
-    char *r;
+    char path[] = "/boot";
+    int r;
     suppress_error = 0;
-    r = guestfs_get_e2uuid (g, device);
-    if (r == NULL)
+    r = guestfs_is_dir (g, path);
+    if (r == -1)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_set_e2uuid_1: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (!r) {
+      fprintf (stderr, "test_grub_install_0: expected true, got false\n");
       return -1;
     }
-    free (r);
   }
   return 0;
 }
 
-static int test_set_e2uuid_2 (void)
+static int test_zero_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_ZERO_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_ZERO");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_zero_0 (void)
 {
-  /* InitBasicFS for set_e2uuid (2): create ext2 on /dev/sda1 */
+  if (test_zero_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_zero_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_zero_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -1984,23 +2655,62 @@ static int test_set_e2uuid_2 (void)
     if (r == -1)
       return -1;
   }
-  /* TestRun for set_e2uuid (2) */
+  /* TestOutput for zero (0) */
+  char expected[] = "data";
+  {
+    char pathordevice[] = "/dev/sda1";
+    pathordevice[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount (g, pathordevice);
+    if (r == -1)
+      return -1;
+  }
   {
     char device[] = "/dev/sda1";
     device[5] = devchar;
-    char uuid[] = "random";
     int r;
     suppress_error = 0;
-    r = guestfs_set_e2uuid (g, device, uuid);
+    r = guestfs_zero (g, device);
     if (r == -1)
       return -1;
   }
+  {
+    char path[] = "/dev/sda1";
+    path[5] = devchar;
+    char *r;
+    suppress_error = 0;
+    r = guestfs_file (g, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_zero_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
   return 0;
 }
 
-static int test_set_e2uuid_3 (void)
+static int test_fsck_0_skip (void)
 {
-  /* InitBasicFS for set_e2uuid (3): create ext2 on /dev/sda1 */
+  const char *str;
+
+  str = getenv ("SKIP_TEST_FSCK_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_FSCK");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_fsck_0 (void)
+{
+  if (test_fsck_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_fsck_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_fsck_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2058,23 +2768,52 @@ static int test_set_e2uuid_3 (void)
     if (r == -1)
       return -1;
   }
-  /* TestRun for set_e2uuid (3) */
+  /* TestOutputInt for fsck (0) */
+  {
+    char pathordevice[] = "/dev/sda1";
+    pathordevice[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount (g, pathordevice);
+    if (r == -1)
+      return -1;
+  }
   {
+    char fstype[] = "ext2";
     char device[] = "/dev/sda1";
     device[5] = devchar;
-    char uuid[] = "time";
     int r;
     suppress_error = 0;
-    r = guestfs_set_e2uuid (g, device, uuid);
+    r = guestfs_fsck (g, fstype, device);
     if (r == -1)
       return -1;
+    if (r != 0) {
+      fprintf (stderr, "test_fsck_0: expected 0 but got %d\n",               (int) r);
+      return -1;
+    }
   }
   return 0;
 }
 
-static int test_set_e2label_0 (void)
+static int test_fsck_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_FSCK_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_FSCK");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_fsck_1 (void)
 {
-  /* InitBasicFS for set_e2label (0): create ext2 on /dev/sda1 */
+  if (test_fsck_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_fsck_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_fsck_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2132,38 +2871,61 @@ static int test_set_e2label_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for set_e2label (0) */
-  char expected[] = "testlabel";
+  /* TestOutputInt for fsck (1) */
+  {
+    char pathordevice[] = "/dev/sda1";
+    pathordevice[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount (g, pathordevice);
+    if (r == -1)
+      return -1;
+  }
   {
     char device[] = "/dev/sda1";
     device[5] = devchar;
-    char label[] = "testlabel";
     int r;
     suppress_error = 0;
-    r = guestfs_set_e2label (g, device, label);
+    r = guestfs_zero (g, device);
     if (r == -1)
       return -1;
   }
   {
+    char fstype[] = "ext2";
     char device[] = "/dev/sda1";
     device[5] = devchar;
-    char *r;
+    int r;
     suppress_error = 0;
-    r = guestfs_get_e2label (g, device);
-    if (r == NULL)
+    r = guestfs_fsck (g, fstype, device);
+    if (r == -1)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_set_e2label_0: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (r != 8) {
+      fprintf (stderr, "test_fsck_1: expected 8 but got %d\n",               (int) r);
       return -1;
     }
-    free (r);
   }
   return 0;
 }
 
-static int test_pvremove_0 (void)
+static int test_set_e2uuid_0_skip (void)
 {
-  /* InitEmpty for pvremove (0) */
+  const char *str;
+
+  str = getenv ("SKIP_TEST_SET_E2UUID_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_SET_E2UUID");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_set_e2uuid_0 (void)
+{
+  if (test_set_e2uuid_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_set_e2uuid_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_set_e2uuid_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2187,87 +2949,88 @@ static int test_pvremove_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for pvremove (0) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
-    int r;
-    suppress_error = 0;
-    r = guestfs_pvcreate (g, device);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char volgroup[] = "VG";
-    char physvols_0[] = "/dev/sda";
-    physvols_0[5] = devchar;
-    char *physvols[] = {
-      physvols_0,
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
       NULL
     };
     int r;
     suppress_error = 0;
-    r = guestfs_vgcreate (g, volgroup, physvols);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char logvol[] = "LV1";
-    char volgroup[] = "VG";
-    int r;
-    suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
   {
-    char logvol[] = "LV2";
-    char volgroup[] = "VG";
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
-    char vgname[] = "VG";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_vgremove (g, vgname);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutput for set_e2uuid (0) */
+  char expected[] = "a3a61220-882b-4f61-89f4-cf24dcc7297d";
   {
-    char device[] = "/dev/sda";
+    char device[] = "/dev/sda1";
     device[5] = devchar;
+    char uuid[] = "a3a61220-882b-4f61-89f4-cf24dcc7297d";
     int r;
     suppress_error = 0;
-    r = guestfs_pvremove (g, device);
+    r = guestfs_set_e2uuid (g, device, uuid);
     if (r == -1)
       return -1;
   }
   {
-    char **r;
-    int i;
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char *r;
     suppress_error = 0;
-    r = guestfs_lvs (g);
+    r = guestfs_get_e2uuid (g, device);
     if (r == NULL)
       return -1;
-    if (r[0] != NULL) {
-      fprintf (stderr, "test_pvremove_0: extra elements returned from command\n");
-      print_strings (r);
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_set_e2uuid_0: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
-    for (i = 0; r[i] != NULL; ++i)
-      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_pvremove_1 (void)
+static int test_set_e2uuid_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_SET_E2UUID_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_SET_E2UUID");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_set_e2uuid_1 (void)
 {
-  /* InitEmpty for pvremove (1) */
+  if (test_set_e2uuid_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_set_e2uuid_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_set_e2uuid_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2291,87 +3054,88 @@ static int test_pvremove_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for pvremove (1) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
-    int r;
-    suppress_error = 0;
-    r = guestfs_pvcreate (g, device);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char volgroup[] = "VG";
-    char physvols_0[] = "/dev/sda";
-    physvols_0[5] = devchar;
-    char *physvols[] = {
-      physvols_0,
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
       NULL
     };
     int r;
     suppress_error = 0;
-    r = guestfs_vgcreate (g, volgroup, physvols);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char logvol[] = "LV1";
-    char volgroup[] = "VG";
-    int r;
-    suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
   {
-    char logvol[] = "LV2";
-    char volgroup[] = "VG";
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
-    char vgname[] = "VG";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_vgremove (g, vgname);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutput for set_e2uuid (1) */
+  char expected[] = "";
   {
-    char device[] = "/dev/sda";
+    char device[] = "/dev/sda1";
     device[5] = devchar;
+    char uuid[] = "clear";
     int r;
     suppress_error = 0;
-    r = guestfs_pvremove (g, device);
+    r = guestfs_set_e2uuid (g, device, uuid);
     if (r == -1)
       return -1;
   }
   {
-    char **r;
-    int i;
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char *r;
     suppress_error = 0;
-    r = guestfs_vgs (g);
+    r = guestfs_get_e2uuid (g, device);
     if (r == NULL)
       return -1;
-    if (r[0] != NULL) {
-      fprintf (stderr, "test_pvremove_1: extra elements returned from command\n");
-      print_strings (r);
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_set_e2uuid_1: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
-    for (i = 0; r[i] != NULL; ++i)
-      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_pvremove_2 (void)
+static int test_set_e2uuid_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_SET_E2UUID_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_SET_E2UUID");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_set_e2uuid_2 (void)
 {
-  /* InitEmpty for pvremove (2) */
+  if (test_set_e2uuid_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_set_e2uuid_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_set_e2uuid_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2395,87 +3159,268 @@ static int test_pvremove_2 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for pvremove (2) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
-    int r;
-    suppress_error = 0;
-    r = guestfs_pvcreate (g, device);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char volgroup[] = "VG";
-    char physvols_0[] = "/dev/sda";
-    physvols_0[5] = devchar;
-    char *physvols[] = {
-      physvols_0,
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
       NULL
     };
     int r;
     suppress_error = 0;
-    r = guestfs_vgcreate (g, volgroup, physvols);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
   {
-    char logvol[] = "LV1";
-    char volgroup[] = "VG";
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
-    char logvol[] = "LV2";
-    char volgroup[] = "VG";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestRun for set_e2uuid (2) */
   {
-    char vgname[] = "VG";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char uuid[] = "random";
     int r;
     suppress_error = 0;
-    r = guestfs_vgremove (g, vgname);
+    r = guestfs_set_e2uuid (g, device, uuid);
     if (r == -1)
       return -1;
   }
+  return 0;
+}
+
+static int test_set_e2uuid_3_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_SET_E2UUID_3");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_SET_E2UUID");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_set_e2uuid_3 (void)
+{
+  if (test_set_e2uuid_3_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_set_e2uuid_3");
+    return 0;
+  }
+
+  /* InitBasicFS for test_set_e2uuid_3: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_pvremove (g, device);
+    r = guestfs_blockdev_setrw (g, device);
     if (r == -1)
       return -1;
   }
   {
-    char **r;
-    int i;
+    int r;
     suppress_error = 0;
-    r = guestfs_pvs (g);
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestRun for set_e2uuid (3) */
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char uuid[] = "time";
+    int r;
+    suppress_error = 0;
+    r = guestfs_set_e2uuid (g, device, uuid);
+    if (r == -1)
+      return -1;
+  }
+  return 0;
+}
+
+static int test_set_e2label_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_SET_E2LABEL_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_SET_E2LABEL");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_set_e2label_0 (void)
+{
+  if (test_set_e2label_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_set_e2label_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_set_e2label_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for set_e2label (0) */
+  char expected[] = "testlabel";
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char label[] = "testlabel";
+    int r;
+    suppress_error = 0;
+    r = guestfs_set_e2label (g, device, label);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char *r;
+    suppress_error = 0;
+    r = guestfs_get_e2label (g, device);
     if (r == NULL)
       return -1;
-    if (r[0] != NULL) {
-      fprintf (stderr, "test_pvremove_2: extra elements returned from command\n");
-      print_strings (r);
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_set_e2label_0: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
-    for (i = 0; r[i] != NULL; ++i)
-      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_vgremove_0 (void)
+static int test_pvremove_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_PVREMOVE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_PVREMOVE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_pvremove_0 (void)
 {
-  /* InitEmpty for vgremove (0) */
+  if (test_pvremove_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_pvremove_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_pvremove_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2499,10 +3444,24 @@ static int test_vgremove_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for vgremove (0) */
+  /* TestOutputList for pvremove (0) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
     r = guestfs_pvcreate (g, device);
@@ -2511,7 +3470,7 @@ static int test_vgremove_0 (void)
   }
   {
     char volgroup[] = "VG";
-    char physvols_0[] = "/dev/sda";
+    char physvols_0[] = "/dev/sda1";
     physvols_0[5] = devchar;
     char *physvols[] = {
       physvols_0,
@@ -2550,6 +3509,15 @@ static int test_vgremove_0 (void)
       return -1;
   }
   {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_pvremove (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
     char **r;
     int i;
     suppress_error = 0;
@@ -2557,7 +3525,7 @@ static int test_vgremove_0 (void)
     if (r == NULL)
       return -1;
     if (r[0] != NULL) {
-      fprintf (stderr, "test_vgremove_0: extra elements returned from command\n");
+      fprintf (stderr, "test_pvremove_0: extra elements returned from command\n");
       print_strings (r);
       return -1;
     }
@@ -2568,9 +3536,25 @@ static int test_vgremove_0 (void)
   return 0;
 }
 
-static int test_vgremove_1 (void)
+static int test_pvremove_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_PVREMOVE_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_PVREMOVE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_pvremove_1 (void)
 {
-  /* InitEmpty for vgremove (1) */
+  if (test_pvremove_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_pvremove_1");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_pvremove_1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2594,10 +3578,24 @@ static int test_vgremove_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for vgremove (1) */
+  /* TestOutputList for pvremove (1) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
     r = guestfs_pvcreate (g, device);
@@ -2606,7 +3604,7 @@ static int test_vgremove_1 (void)
   }
   {
     char volgroup[] = "VG";
-    char physvols_0[] = "/dev/sda";
+    char physvols_0[] = "/dev/sda1";
     physvols_0[5] = devchar;
     char *physvols[] = {
       physvols_0,
@@ -2645,6 +3643,15 @@ static int test_vgremove_1 (void)
       return -1;
   }
   {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_pvremove (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
     char **r;
     int i;
     suppress_error = 0;
@@ -2652,7 +3659,7 @@ static int test_vgremove_1 (void)
     if (r == NULL)
       return -1;
     if (r[0] != NULL) {
-      fprintf (stderr, "test_vgremove_1: extra elements returned from command\n");
+      fprintf (stderr, "test_pvremove_1: extra elements returned from command\n");
       print_strings (r);
       return -1;
     }
@@ -2663,9 +3670,25 @@ static int test_vgremove_1 (void)
   return 0;
 }
 
-static int test_lvremove_0 (void)
+static int test_pvremove_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_PVREMOVE_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_PVREMOVE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_pvremove_2 (void)
 {
-  /* InitEmpty for lvremove (0) */
+  if (test_pvremove_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_pvremove_2");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_pvremove_2 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2689,10 +3712,24 @@ static int test_lvremove_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for lvremove (0) */
+  /* TestOutputList for pvremove (2) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
     r = guestfs_pvcreate (g, device);
@@ -2701,7 +3738,7 @@ static int test_lvremove_0 (void)
   }
   {
     char volgroup[] = "VG";
-    char physvols_0[] = "/dev/sda";
+    char physvols_0[] = "/dev/sda1";
     physvols_0[5] = devchar;
     char *physvols[] = {
       physvols_0,
@@ -2709,57 +3746,3163 @@ static int test_lvremove_0 (void)
     };
     int r;
     suppress_error = 0;
-    r = guestfs_vgcreate (g, volgroup, physvols);
+    r = guestfs_vgcreate (g, volgroup, physvols);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV1";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV2";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char vgname[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_vgremove (g, vgname);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_pvremove (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_pvs (g);
+    if (r == NULL)
+      return -1;
+    if (r[0] != NULL) {
+      fprintf (stderr, "test_pvremove_2: extra elements returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
+    free (r);
+  }
+  return 0;
+}
+
+static int test_vgremove_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_VGREMOVE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_VGREMOVE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_vgremove_0 (void)
+{
+  if (test_vgremove_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_vgremove_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_vgremove_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputList for vgremove (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_pvcreate (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char volgroup[] = "VG";
+    char physvols_0[] = "/dev/sda1";
+    physvols_0[5] = devchar;
+    char *physvols[] = {
+      physvols_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_vgcreate (g, volgroup, physvols);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV1";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV2";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char vgname[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_vgremove (g, vgname);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_lvs (g);
+    if (r == NULL)
+      return -1;
+    if (r[0] != NULL) {
+      fprintf (stderr, "test_vgremove_0: extra elements returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
+    free (r);
+  }
+  return 0;
+}
+
+static int test_vgremove_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_VGREMOVE_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_VGREMOVE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_vgremove_1 (void)
+{
+  if (test_vgremove_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_vgremove_1");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_vgremove_1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputList for vgremove (1) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_pvcreate (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char volgroup[] = "VG";
+    char physvols_0[] = "/dev/sda1";
+    physvols_0[5] = devchar;
+    char *physvols[] = {
+      physvols_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_vgcreate (g, volgroup, physvols);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV1";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV2";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char vgname[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_vgremove (g, vgname);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_vgs (g);
+    if (r == NULL)
+      return -1;
+    if (r[0] != NULL) {
+      fprintf (stderr, "test_vgremove_1: extra elements returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
+    free (r);
+  }
+  return 0;
+}
+
+static int test_lvremove_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LVREMOVE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LVREMOVE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_lvremove_0 (void)
+{
+  if (test_lvremove_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_lvremove_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_lvremove_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputList for lvremove (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_pvcreate (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char volgroup[] = "VG";
+    char physvols_0[] = "/dev/sda1";
+    physvols_0[5] = devchar;
+    char *physvols[] = {
+      physvols_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_vgcreate (g, volgroup, physvols);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV1";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV2";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/VG/LV1";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvremove (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_lvs (g);
+    if (r == NULL)
+      return -1;
+    if (!r[0]) {
+      fprintf (stderr, "test_lvremove_0: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "/dev/VG/LV2";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_lvremove_0: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (r[1] != NULL) {
+      fprintf (stderr, "test_lvremove_0: extra elements returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
+    free (r);
+  }
+  return 0;
+}
+
+static int test_lvremove_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LVREMOVE_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LVREMOVE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_lvremove_1 (void)
+{
+  if (test_lvremove_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_lvremove_1");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_lvremove_1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputList for lvremove (1) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_pvcreate (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char volgroup[] = "VG";
+    char physvols_0[] = "/dev/sda1";
+    physvols_0[5] = devchar;
+    char *physvols[] = {
+      physvols_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_vgcreate (g, volgroup, physvols);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV1";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV2";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvremove (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_lvs (g);
+    if (r == NULL)
+      return -1;
+    if (r[0] != NULL) {
+      fprintf (stderr, "test_lvremove_1: extra elements returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
+    free (r);
+  }
+  return 0;
+}
+
+static int test_lvremove_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LVREMOVE_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LVREMOVE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_lvremove_2 (void)
+{
+  if (test_lvremove_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_lvremove_2");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_lvremove_2 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputList for lvremove (2) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_pvcreate (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char volgroup[] = "VG";
+    char physvols_0[] = "/dev/sda1";
+    physvols_0[5] = devchar;
+    char *physvols[] = {
+      physvols_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_vgcreate (g, volgroup, physvols);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV1";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char logvol[] = "LV2";
+    char volgroup[] = "VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/VG";
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvremove (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_vgs (g);
+    if (r == NULL)
+      return -1;
+    if (!r[0]) {
+      fprintf (stderr, "test_lvremove_2: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "VG";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_lvremove_2: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (r[1] != NULL) {
+      fprintf (stderr, "test_lvremove_2: extra elements returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
+    free (r);
+  }
+  return 0;
+}
+
+static int test_mount_ro_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MOUNT_RO_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MOUNT_RO");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_mount_ro_0 (void)
+{
+  if (test_mount_ro_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mount_ro_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mount_ro_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestLastFail for mount_ro (0) */
+  {
+    char pathordevice[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount (g, pathordevice);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount_ro (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/new";
+    int r;
+    suppress_error = 1;
+    r = guestfs_touch (g, path);
+    if (r != -1)
+      return -1;
+  }
+  return 0;
+}
+
+static int test_mount_ro_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MOUNT_RO_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MOUNT_RO");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_mount_ro_1 (void)
+{
+  if (test_mount_ro_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mount_ro_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mount_ro_1: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for mount_ro (1) */
+  char expected[] = "data";
+  {
+    char path[] = "/new";
+    char content[] = "data";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char pathordevice[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount (g, pathordevice);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount_ro (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_cat (g, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_mount_ro_1: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_tgz_in_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_TGZ_IN_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_TGZ_IN");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_tgz_in_0 (void)
+{
+  if (test_tgz_in_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_tgz_in_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_tgz_in_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for tgz_in (0) */
+  char expected[] = "hello\n";
+  {
+    char directory[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_tgz_in (g, "images/helloworld.tar.gz", directory);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/hello";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_cat (g, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_tgz_in_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_tar_in_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_TAR_IN_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_TAR_IN");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_tar_in_0 (void)
+{
+  if (test_tar_in_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_tar_in_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_tar_in_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for tar_in (0) */
+  char expected[] = "hello\n";
+  {
+    char directory[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_tar_in (g, "images/helloworld.tar", directory);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/hello";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_cat (g, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_tar_in_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_checksum_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CHECKSUM_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CHECKSUM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_checksum_0 (void)
+{
+  if (test_checksum_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_checksum_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_checksum_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for checksum (0) */
+  char expected[] = "935282863";
+  {
+    char path[] = "/new";
+    char content[] = "test\n";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char csumtype[] = "crc";
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_checksum_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_checksum_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CHECKSUM_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CHECKSUM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_checksum_1 (void)
+{
+  if (test_checksum_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_checksum_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_checksum_1: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestLastFail for checksum (1) */
+  {
+    char csumtype[] = "crc";
+    char path[] = "/new";
+    char *r;
+    suppress_error = 1;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r != NULL)
+      return -1;
+    free (r);
+  }
+  return 0;
+}
+
+static int test_checksum_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CHECKSUM_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CHECKSUM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_checksum_2 (void)
+{
+  if (test_checksum_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_checksum_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_checksum_2: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for checksum (2) */
+  char expected[] = "d8e8fca2dc0f896fd7cb4cb0031ba249";
+  {
+    char path[] = "/new";
+    char content[] = "test\n";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char csumtype[] = "md5";
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_checksum_2: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_checksum_3_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CHECKSUM_3");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CHECKSUM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_checksum_3 (void)
+{
+  if (test_checksum_3_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_checksum_3");
+    return 0;
+  }
+
+  /* InitBasicFS for test_checksum_3: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for checksum (3) */
+  char expected[] = "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83";
+  {
+    char path[] = "/new";
+    char content[] = "test\n";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char csumtype[] = "sha1";
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_checksum_3: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_checksum_4_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CHECKSUM_4");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CHECKSUM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_checksum_4 (void)
+{
+  if (test_checksum_4_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_checksum_4");
+    return 0;
+  }
+
+  /* InitBasicFS for test_checksum_4: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for checksum (4) */
+  char expected[] = "52f1bf093f4b7588726035c176c0cdb4376cfea53819f1395ac9e6ec";
+  {
+    char path[] = "/new";
+    char content[] = "test\n";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char csumtype[] = "sha224";
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_checksum_4: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_checksum_5_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CHECKSUM_5");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CHECKSUM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_checksum_5 (void)
+{
+  if (test_checksum_5_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_checksum_5");
+    return 0;
+  }
+
+  /* InitBasicFS for test_checksum_5: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for checksum (5) */
+  char expected[] = "f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2";
+  {
+    char path[] = "/new";
+    char content[] = "test\n";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char csumtype[] = "sha256";
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_checksum_5: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_checksum_6_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CHECKSUM_6");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CHECKSUM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_checksum_6 (void)
+{
+  if (test_checksum_6_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_checksum_6");
+    return 0;
+  }
+
+  /* InitBasicFS for test_checksum_6: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for checksum (6) */
+  char expected[] = "109bb6b5b6d5547c1ce03c7a8bd7d8f80c1cb0957f50c4f7fda04692079917e4f9cad52b878f3d8234e1a170b154b72d";
+  {
+    char path[] = "/new";
+    char content[] = "test\n";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char csumtype[] = "sha384";
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_checksum_6: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_checksum_7_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CHECKSUM_7");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CHECKSUM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_checksum_7 (void)
+{
+  if (test_checksum_7_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_checksum_7");
+    return 0;
+  }
+
+  /* InitBasicFS for test_checksum_7: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for checksum (7) */
+  char expected[] = "0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123";
+  {
+    char path[] = "/new";
+    char content[] = "test\n";
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, path, content, 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char csumtype[] = "sha512";
+    char path[] = "/new";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_checksum_7: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_download_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_DOWNLOAD_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_DOWNLOAD");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_download_0 (void)
+{
+  if (test_download_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_download_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_download_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for download (0) */
+  char expected[] = "e3eda01d9815f8d24aae2dbd89b68b06";
+  {
+    char remotefilename[] = "/COPYING.LIB";
+    int r;
+    suppress_error = 0;
+    r = guestfs_upload (g, "COPYING.LIB", remotefilename);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char remotefilename[] = "/COPYING.LIB";
+    int r;
+    suppress_error = 0;
+    r = guestfs_download (g, remotefilename, "testdownload.tmp");
+    if (r == -1)
+      return -1;
+  }
+  {
+    char remotefilename[] = "/upload";
+    int r;
+    suppress_error = 0;
+    r = guestfs_upload (g, "testdownload.tmp", remotefilename);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char csumtype[] = "md5";
+    char path[] = "/upload";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_download_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_upload_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_UPLOAD_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_UPLOAD");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_upload_0 (void)
+{
+  if (test_upload_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_upload_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_upload_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for upload (0) */
+  char expected[] = "e3eda01d9815f8d24aae2dbd89b68b06";
+  {
+    char remotefilename[] = "/COPYING.LIB";
+    int r;
+    suppress_error = 0;
+    r = guestfs_upload (g, "COPYING.LIB", remotefilename);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char csumtype[] = "md5";
+    char path[] = "/COPYING.LIB";
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, csumtype, path);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_upload_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_blockdev_rereadpt_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_BLOCKDEV_REREADPT_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_BLOCKDEV_REREADPT");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_blockdev_rereadpt_0 (void)
+{
+  if (test_blockdev_rereadpt_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_blockdev_rereadpt_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_blockdev_rereadpt_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestRun for blockdev_rereadpt (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_rereadpt (g, device);
+    if (r == -1)
+      return -1;
+  }
+  return 0;
+}
+
+static int test_blockdev_flushbufs_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_BLOCKDEV_FLUSHBUFS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_BLOCKDEV_FLUSHBUFS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_blockdev_flushbufs_0 (void)
+{
+  if (test_blockdev_flushbufs_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_blockdev_flushbufs_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_blockdev_flushbufs_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestRun for blockdev_flushbufs (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_flushbufs (g, device);
+    if (r == -1)
+      return -1;
+  }
+  return 0;
+}
+
+static int test_blockdev_getsize64_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETSIZE64_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETSIZE64");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_blockdev_getsize64_0 (void)
+{
+  if (test_blockdev_getsize64_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_blockdev_getsize64_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_blockdev_getsize64_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputInt for blockdev_getsize64 (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int64_t r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getsize64 (g, device);
+    if (r == -1)
+      return -1;
+    if (r != 524288000) {
+      fprintf (stderr, "test_blockdev_getsize64_0: expected 524288000 but got %d\n",               (int) r);
+      return -1;
+    }
+  }
+  return 0;
+}
+
+static int test_blockdev_getsz_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETSZ_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETSZ");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_blockdev_getsz_0 (void)
+{
+  if (test_blockdev_getsz_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_blockdev_getsz_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_blockdev_getsz_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputInt for blockdev_getsz (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int64_t r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getsz (g, device);
+    if (r == -1)
+      return -1;
+    if (r != 1024000) {
+      fprintf (stderr, "test_blockdev_getsz_0: expected 1024000 but got %d\n",               (int) r);
+      return -1;
+    }
+  }
+  return 0;
+}
+
+static int test_blockdev_getbsz_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETBSZ_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETBSZ");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_blockdev_getbsz_0 (void)
+{
+  if (test_blockdev_getbsz_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_blockdev_getbsz_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_blockdev_getbsz_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputInt for blockdev_getbsz (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getbsz (g, device);
+    if (r == -1)
+      return -1;
+    if (r != 4096) {
+      fprintf (stderr, "test_blockdev_getbsz_0: expected 4096 but got %d\n",               (int) r);
+      return -1;
+    }
+  }
+  return 0;
+}
+
+static int test_blockdev_getss_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETSS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETSS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_blockdev_getss_0 (void)
+{
+  if (test_blockdev_getss_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_blockdev_getss_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_blockdev_getss_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputInt for blockdev_getss (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getss (g, device);
+    if (r == -1)
+      return -1;
+    if (r != 512) {
+      fprintf (stderr, "test_blockdev_getss_0: expected 512 but got %d\n",               (int) r);
+      return -1;
+    }
+  }
+  return 0;
+}
+
+static int test_blockdev_getro_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETRO_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_BLOCKDEV_GETRO");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_blockdev_getro_0 (void)
+{
+  if (test_blockdev_getro_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_blockdev_getro_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_blockdev_getro_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputTrue for blockdev_getro (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setro (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getro (g, device);
+    if (r == -1)
+      return -1;
+    if (!r) {
+      fprintf (stderr, "test_blockdev_getro_0: expected true, got false\n");
+      return -1;
+    }
+  }
+  return 0;
+}
+
+static int test_blockdev_setrw_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_BLOCKDEV_SETRW_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_BLOCKDEV_SETRW");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_blockdev_setrw_0 (void)
+{
+  if (test_blockdev_setrw_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_blockdev_setrw_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_blockdev_setrw_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputFalse for blockdev_setrw (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getro (g, device);
+    if (r == -1)
+      return -1;
+    if (r) {
+      fprintf (stderr, "test_blockdev_setrw_0: expected false, got true\n");
+      return -1;
+    }
+  }
+  return 0;
+}
+
+static int test_blockdev_setro_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_BLOCKDEV_SETRO_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_BLOCKDEV_SETRO");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_blockdev_setro_0 (void)
+{
+  if (test_blockdev_setro_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_blockdev_setro_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_blockdev_setro_0 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputTrue for blockdev_setro (0) */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setro (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getro (g, device);
+    if (r == -1)
+      return -1;
+    if (!r) {
+      fprintf (stderr, "test_blockdev_setro_0: expected true, got false\n");
+      return -1;
+    }
+  }
+  return 0;
+}
+
+static int test_statvfs_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_STATVFS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_STATVFS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_statvfs_0 (void)
+{
+  if (test_statvfs_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_statvfs_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_statvfs_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputStruct for statvfs (0) */
+  {
+    char path[] = "/";
+    struct guestfs_statvfs *r;
+    suppress_error = 0;
+    r = guestfs_statvfs (g, path);
+    if (r == NULL)
+      return -1;
+    if (r->bfree != 487702) {
+      fprintf (stderr, "test_statvfs_0: bfree was %d, expected 487702\n",
+               (int) r->bfree);
+      return -1;
+    }
+    if (r->blocks != 490020) {
+      fprintf (stderr, "test_statvfs_0: blocks was %d, expected 490020\n",
+               (int) r->blocks);
+      return -1;
+    }
+    if (r->bsize != 1024) {
+      fprintf (stderr, "test_statvfs_0: bsize was %d, expected 1024\n",
+               (int) r->bsize);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_lstat_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LSTAT_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LSTAT");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_lstat_0 (void)
+{
+  if (test_lstat_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_lstat_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_lstat_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputStruct for lstat (0) */
+  {
+    char path[] = "/new";
+    int r;
+    suppress_error = 0;
+    r = guestfs_touch (g, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/new";
+    struct guestfs_stat *r;
+    suppress_error = 0;
+    r = guestfs_lstat (g, path);
+    if (r == NULL)
+      return -1;
+    if (r->size != 0) {
+      fprintf (stderr, "test_lstat_0: size was %d, expected 0\n",
+               (int) r->size);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_stat_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_STAT_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_STAT");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_stat_0 (void)
+{
+  if (test_stat_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_stat_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_stat_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputStruct for stat (0) */
+  {
+    char path[] = "/new";
+    int r;
+    suppress_error = 0;
+    r = guestfs_touch (g, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char path[] = "/new";
+    struct guestfs_stat *r;
+    suppress_error = 0;
+    r = guestfs_stat (g, path);
+    if (r == NULL)
+      return -1;
+    if (r->size != 0) {
+      fprintf (stderr, "test_stat_0: size was %d, expected 0\n",
+               (int) r->size);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_command_lines_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_0 (void)
+{
+  if (test_command_lines_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_0: create ext2 on /dev/sda1 */
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, device);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_umount_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_lvm_remove_all (g);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char device[] = "/dev/sda";
+    device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
-    char logvol[] = "LV1";
-    char volgroup[] = "VG";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutputList for command_lines (0) */
   {
-    char logvol[] = "LV2";
-    char volgroup[] = "VG";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/VG/LV1";
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvremove (g, device);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "1";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
     char **r;
     int i;
     suppress_error = 0;
-    r = guestfs_lvs (g);
+    r = guestfs_command_lines (g, arguments);
     if (r == NULL)
       return -1;
     if (!r[0]) {
-      fprintf (stderr, "test_lvremove_0: short list returned from command\n");
+      fprintf (stderr, "test_command_lines_0: short list returned from command\n");
       print_strings (r);
       return -1;
     }
     {
-      char expected[] = "/dev/VG/LV2";
+      char expected[] = "Result1";
       if (strcmp (r[0], expected) != 0) {
-        fprintf (stderr, "test_lvremove_0: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        fprintf (stderr, "test_command_lines_0: expected \"%s\" but got \"%s\"\n", expected, r[0]);
         return -1;
       }
     }
     if (r[1] != NULL) {
-      fprintf (stderr, "test_lvremove_0: extra elements returned from command\n");
+      fprintf (stderr, "test_command_lines_0: extra elements returned from command\n");
       print_strings (r);
       return -1;
     }
@@ -2770,9 +6913,25 @@ static int test_lvremove_0 (void)
   return 0;
 }
 
-static int test_lvremove_1 (void)
+static int test_command_lines_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_1 (void)
 {
-  /* InitEmpty for lvremove (1) */
+  if (test_command_lines_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2796,65 +6955,85 @@ static int test_lvremove_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for lvremove (1) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_pvcreate (g, device);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
   {
-    char volgroup[] = "VG";
-    char physvols_0[] = "/dev/sda";
-    physvols_0[5] = devchar;
-    char *physvols[] = {
-      physvols_0,
-      NULL
-    };
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_vgcreate (g, volgroup, physvols);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
-    char logvol[] = "LV1";
-    char volgroup[] = "VG";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutputList for command_lines (1) */
   {
-    char logvol[] = "LV2";
-    char volgroup[] = "VG";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/VG";
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvremove (g, device);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "2";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
     char **r;
     int i;
     suppress_error = 0;
-    r = guestfs_lvs (g);
+    r = guestfs_command_lines (g, arguments);
     if (r == NULL)
       return -1;
-    if (r[0] != NULL) {
-      fprintf (stderr, "test_lvremove_1: extra elements returned from command\n");
+    if (!r[0]) {
+      fprintf (stderr, "test_command_lines_1: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "Result2";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_command_lines_1: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (r[1] != NULL) {
+      fprintf (stderr, "test_command_lines_1: extra elements returned from command\n");
       print_strings (r);
       return -1;
     }
@@ -2865,9 +7044,25 @@ static int test_lvremove_1 (void)
   return 0;
 }
 
-static int test_lvremove_2 (void)
+static int test_command_lines_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_2 (void)
 {
-  /* InitEmpty for lvremove (2) */
+  if (test_command_lines_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -2891,77 +7086,97 @@ static int test_lvremove_2 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for lvremove (2) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_pvcreate (g, device);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
   {
-    char volgroup[] = "VG";
-    char physvols_0[] = "/dev/sda";
-    physvols_0[5] = devchar;
-    char *physvols[] = {
-      physvols_0,
-      NULL
-    };
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_vgcreate (g, volgroup, physvols);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
-    char logvol[] = "LV1";
-    char volgroup[] = "VG";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutputList for command_lines (2) */
   {
-    char logvol[] = "LV2";
-    char volgroup[] = "VG";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvcreate (g, logvol, volgroup, 50);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/VG";
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvremove (g, device);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "3";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
     char **r;
     int i;
     suppress_error = 0;
-    r = guestfs_vgs (g);
+    r = guestfs_command_lines (g, arguments);
     if (r == NULL)
       return -1;
     if (!r[0]) {
-      fprintf (stderr, "test_lvremove_2: short list returned from command\n");
+      fprintf (stderr, "test_command_lines_2: short list returned from command\n");
       print_strings (r);
       return -1;
     }
     {
-      char expected[] = "VG";
+      char expected[] = "";
       if (strcmp (r[0], expected) != 0) {
-        fprintf (stderr, "test_lvremove_2: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        fprintf (stderr, "test_command_lines_2: expected \"%s\" but got \"%s\"\n", expected, r[0]);
         return -1;
       }
     }
-    if (r[1] != NULL) {
-      fprintf (stderr, "test_lvremove_2: extra elements returned from command\n");
+    if (!r[1]) {
+      fprintf (stderr, "test_command_lines_2: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "Result3";
+      if (strcmp (r[1], expected) != 0) {
+        fprintf (stderr, "test_command_lines_2: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        return -1;
+      }
+    }
+    if (r[2] != NULL) {
+      fprintf (stderr, "test_command_lines_2: extra elements returned from command\n");
       print_strings (r);
       return -1;
     }
@@ -2972,9 +7187,25 @@ static int test_lvremove_2 (void)
   return 0;
 }
 
-static int test_mount_ro_0 (void)
+static int test_command_lines_3_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_3");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_3 (void)
 {
-  /* InitBasicFS for mount_ro (0): create ext2 on /dev/sda1 */
+  if (test_command_lines_3_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_3");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_3: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3032,39 +7263,92 @@ static int test_mount_ro_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestLastFail for mount_ro (0) */
+  /* TestOutputList for command_lines (3) */
   {
-    char pathordevice[] = "/";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_umount (g, pathordevice);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
-    char mountpoint[] = "/";
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_mount_ro (g, device, mountpoint);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/new";
-    int r;
-    suppress_error = 1;
-    r = guestfs_touch (g, path);
-    if (r != -1)
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "4";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_command_lines (g, arguments);
+    if (r == NULL)
+      return -1;
+    if (!r[0]) {
+      fprintf (stderr, "test_command_lines_3: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_command_lines_3: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (!r[1]) {
+      fprintf (stderr, "test_command_lines_3: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "Result4";
+      if (strcmp (r[1], expected) != 0) {
+        fprintf (stderr, "test_command_lines_3: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        return -1;
+      }
+    }
+    if (r[2] != NULL) {
+      fprintf (stderr, "test_command_lines_3: extra elements returned from command\n");
+      print_strings (r);
       return -1;
+    }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
+    free (r);
   }
   return 0;
 }
 
-static int test_mount_ro_1 (void)
+static int test_command_lines_4_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_4");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_4 (void)
 {
-  /* InitBasicFS for mount_ro (1): create ext2 on /dev/sda1 */
+  if (test_command_lines_4_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_4");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_4: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3122,54 +7406,104 @@ static int test_mount_ro_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for mount_ro (1) */
-  char expected[] = "data";
-  {
-    char path[] = "/new";
-    char content[] = "data";
-    int r;
-    suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
-    if (r == -1)
-      return -1;
-  }
+  /* TestOutputList for command_lines (4) */
   {
-    char pathordevice[] = "/";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_umount (g, pathordevice);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
-    char mountpoint[] = "/";
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_mount_ro (g, device, mountpoint);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/new";
-    char *r;
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "5";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_cat (g, path);
+    r = guestfs_command_lines (g, arguments);
     if (r == NULL)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_mount_ro_1: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (!r[0]) {
+      fprintf (stderr, "test_command_lines_4: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_command_lines_4: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (!r[1]) {
+      fprintf (stderr, "test_command_lines_4: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "Result5";
+      if (strcmp (r[1], expected) != 0) {
+        fprintf (stderr, "test_command_lines_4: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        return -1;
+      }
+    }
+    if (!r[2]) {
+      fprintf (stderr, "test_command_lines_4: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "";
+      if (strcmp (r[2], expected) != 0) {
+        fprintf (stderr, "test_command_lines_4: expected \"%s\" but got \"%s\"\n", expected, r[2]);
+        return -1;
+      }
+    }
+    if (r[3] != NULL) {
+      fprintf (stderr, "test_command_lines_4: extra elements returned from command\n");
+      print_strings (r);
       return -1;
     }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_tgz_in_0 (void)
+static int test_command_lines_5_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_5");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_5 (void)
 {
-  /* InitBasicFS for tgz_in (0): create ext2 on /dev/sda1 */
+  if (test_command_lines_5_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_5");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_5: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3227,35 +7561,116 @@ static int test_tgz_in_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for tgz_in (0) */
-  char expected[] = "hello\n";
+  /* TestOutputList for command_lines (5) */
   {
-    char directory[] = "/";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_tgz_in (g, "images/helloworld.tar.gz", directory);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/hello";
-    char *r;
+    char path[] = "/test-command";
+    int r;
     suppress_error = 0;
-    r = guestfs_cat (g, path);
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "6";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_command_lines (g, arguments);
     if (r == NULL)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_tgz_in_0: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (!r[0]) {
+      fprintf (stderr, "test_command_lines_5: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_command_lines_5: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (!r[1]) {
+      fprintf (stderr, "test_command_lines_5: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "";
+      if (strcmp (r[1], expected) != 0) {
+        fprintf (stderr, "test_command_lines_5: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        return -1;
+      }
+    }
+    if (!r[2]) {
+      fprintf (stderr, "test_command_lines_5: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "Result6";
+      if (strcmp (r[2], expected) != 0) {
+        fprintf (stderr, "test_command_lines_5: expected \"%s\" but got \"%s\"\n", expected, r[2]);
+        return -1;
+      }
+    }
+    if (!r[3]) {
+      fprintf (stderr, "test_command_lines_5: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "";
+      if (strcmp (r[3], expected) != 0) {
+        fprintf (stderr, "test_command_lines_5: expected \"%s\" but got \"%s\"\n", expected, r[3]);
+        return -1;
+      }
+    }
+    if (r[4] != NULL) {
+      fprintf (stderr, "test_command_lines_5: extra elements returned from command\n");
+      print_strings (r);
       return -1;
     }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_tar_in_0 (void)
+static int test_command_lines_6_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_6");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_6 (void)
 {
-  /* InitBasicFS for tar_in (0): create ext2 on /dev/sda1 */
+  if (test_command_lines_6_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_6");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_6: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3313,35 +7728,68 @@ static int test_tar_in_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for tar_in (0) */
-  char expected[] = "hello\n";
+  /* TestOutputList for command_lines (6) */
   {
-    char directory[] = "/";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_tar_in (g, "images/helloworld.tar", directory);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/hello";
-    char *r;
+    char path[] = "/test-command";
+    int r;
     suppress_error = 0;
-    r = guestfs_cat (g, path);
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "7";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_command_lines (g, arguments);
     if (r == NULL)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_tar_in_0: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (r[0] != NULL) {
+      fprintf (stderr, "test_command_lines_6: extra elements returned from command\n");
+      print_strings (r);
       return -1;
     }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_checksum_0 (void)
+static int test_command_lines_7_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_7");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_7 (void)
 {
-  /* InitBasicFS for checksum (0): create ext2 on /dev/sda1 */
+  if (test_command_lines_7_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_7");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_7: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3399,37 +7847,80 @@ static int test_checksum_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for checksum (0) */
-  char expected[] = "935282863";
+  /* TestOutputList for command_lines (7) */
   {
-    char path[] = "/new";
-    char content[] = "test\n";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char csumtype[] = "crc";
-    char path[] = "/new";
-    char *r;
+    char path[] = "/test-command";
+    int r;
     suppress_error = 0;
-    r = guestfs_checksum (g, csumtype, path);
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "8";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_command_lines (g, arguments);
     if (r == NULL)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_checksum_0: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (!r[0]) {
+      fprintf (stderr, "test_command_lines_7: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_command_lines_7: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (r[1] != NULL) {
+      fprintf (stderr, "test_command_lines_7: extra elements returned from command\n");
+      print_strings (r);
       return -1;
     }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_checksum_1 (void)
+static int test_command_lines_8_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_8");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_8 (void)
 {
-  /* InitBasicFS for checksum (1): create ext2 on /dev/sda1 */
+  if (test_command_lines_8_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_8");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_8: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3487,111 +7978,92 @@ static int test_checksum_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestLastFail for checksum (1) */
-  {
-    char csumtype[] = "crc";
-    char path[] = "/new";
-    char *r;
-    suppress_error = 1;
-    r = guestfs_checksum (g, csumtype, path);
-    if (r != NULL)
-      return -1;
-    free (r);
-  }
-  return 0;
-}
-
-static int test_checksum_2 (void)
-{
-  /* InitBasicFS for checksum (2): create ext2 on /dev/sda1 */
-  {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
-    int r;
-    suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, device);
-    if (r == -1)
-      return -1;
-  }
+  /* TestOutputList for command_lines (8) */
   {
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
-    char lines_0[] = ",";
-    char *lines[] = {
-      lines_0,
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "9";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
       NULL
     };
-    int r;
-    suppress_error = 0;
-    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char fstype[] = "ext2";
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
-    int r;
-    suppress_error = 0;
-    r = guestfs_mkfs (g, fstype, device);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
-    char mountpoint[] = "/";
-    int r;
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_mount (g, device, mountpoint);
-    if (r == -1)
+    r = guestfs_command_lines (g, arguments);
+    if (r == NULL)
       return -1;
-  }
-  /* TestOutput for checksum (2) */
-  char expected[] = "d8e8fca2dc0f896fd7cb4cb0031ba249";
-  {
-    char path[] = "/new";
-    char content[] = "test\n";
-    int r;
-    suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
-    if (r == -1)
+    if (!r[0]) {
+      fprintf (stderr, "test_command_lines_8: short list returned from command\n");
+      print_strings (r);
       return -1;
-  }
-  {
-    char csumtype[] = "md5";
-    char path[] = "/new";
-    char *r;
-    suppress_error = 0;
-    r = guestfs_checksum (g, csumtype, path);
-    if (r == NULL)
+    }
+    {
+      char expected[] = "";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_command_lines_8: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (!r[1]) {
+      fprintf (stderr, "test_command_lines_8: short list returned from command\n");
+      print_strings (r);
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_checksum_2: expected \"%s\" but got \"%s\"\n", expected, r);
+    }
+    {
+      char expected[] = "";
+      if (strcmp (r[1], expected) != 0) {
+        fprintf (stderr, "test_command_lines_8: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        return -1;
+      }
+    }
+    if (r[2] != NULL) {
+      fprintf (stderr, "test_command_lines_8: extra elements returned from command\n");
+      print_strings (r);
       return -1;
     }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_checksum_3 (void)
+static int test_command_lines_9_skip (void)
 {
-  /* InitBasicFS for checksum (3): create ext2 on /dev/sda1 */
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_9");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_9 (void)
+{
+  if (test_command_lines_9_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_9");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_9: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3640,46 +8112,101 @@ static int test_checksum_3 (void)
       return -1;
   }
   {
-    char device[] = "/dev/sda1";
-    device[5] = devchar;
-    char mountpoint[] = "/";
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, device, mountpoint);
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputList for command_lines (9) */
+  {
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_mount (g, device, mountpoint);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
-  /* TestOutput for checksum (3) */
-  char expected[] = "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83";
   {
-    char path[] = "/new";
-    char content[] = "test\n";
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
-    char csumtype[] = "sha1";
-    char path[] = "/new";
-    char *r;
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "10";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_checksum (g, csumtype, path);
+    r = guestfs_command_lines (g, arguments);
     if (r == NULL)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_checksum_3: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (!r[0]) {
+      fprintf (stderr, "test_command_lines_9: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "Result10-1";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_command_lines_9: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (!r[1]) {
+      fprintf (stderr, "test_command_lines_9: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "Result10-2";
+      if (strcmp (r[1], expected) != 0) {
+        fprintf (stderr, "test_command_lines_9: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        return -1;
+      }
+    }
+    if (r[2] != NULL) {
+      fprintf (stderr, "test_command_lines_9: extra elements returned from command\n");
+      print_strings (r);
       return -1;
     }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_checksum_4 (void)
+static int test_command_lines_10_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_LINES_10");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_lines_10 (void)
 {
-  /* InitBasicFS for checksum (4): create ext2 on /dev/sda1 */
+  if (test_command_lines_10_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_lines_10");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_lines_10: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3737,37 +8264,92 @@ static int test_checksum_4 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for checksum (4) */
-  char expected[] = "52f1bf093f4b7588726035c176c0cdb4376cfea53819f1395ac9e6ec";
+  /* TestOutputList for command_lines (10) */
   {
-    char path[] = "/new";
-    char content[] = "test\n";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char csumtype[] = "sha224";
-    char path[] = "/new";
-    char *r;
+    char path[] = "/test-command";
+    int r;
     suppress_error = 0;
-    r = guestfs_checksum (g, csumtype, path);
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "11";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char **r;
+    int i;
+    suppress_error = 0;
+    r = guestfs_command_lines (g, arguments);
     if (r == NULL)
       return -1;
-    if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_checksum_4: expected \"%s\" but got \"%s\"\n", expected, r);
+    if (!r[0]) {
+      fprintf (stderr, "test_command_lines_10: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "Result11-1";
+      if (strcmp (r[0], expected) != 0) {
+        fprintf (stderr, "test_command_lines_10: expected \"%s\" but got \"%s\"\n", expected, r[0]);
+        return -1;
+      }
+    }
+    if (!r[1]) {
+      fprintf (stderr, "test_command_lines_10: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    {
+      char expected[] = "Result11-2";
+      if (strcmp (r[1], expected) != 0) {
+        fprintf (stderr, "test_command_lines_10: expected \"%s\" but got \"%s\"\n", expected, r[1]);
+        return -1;
+      }
+    }
+    if (r[2] != NULL) {
+      fprintf (stderr, "test_command_lines_10: extra elements returned from command\n");
+      print_strings (r);
       return -1;
     }
+    for (i = 0; r[i] != NULL; ++i)
+      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_checksum_5 (void)
+static int test_command_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_0 (void)
 {
-  /* InitBasicFS for checksum (5): create ext2 on /dev/sda1 */
+  if (test_command_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3825,27 +8407,39 @@ static int test_checksum_5 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for checksum (5) */
-  char expected[] = "f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2";
+  /* TestOutput for command (0) */
+  char expected[] = "Result1";
   {
-    char path[] = "/new";
-    char content[] = "test\n";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char csumtype[] = "sha256";
-    char path[] = "/new";
+    char path[] = "/test-command";
+    int r;
+    suppress_error = 0;
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "1";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
     char *r;
     suppress_error = 0;
-    r = guestfs_checksum (g, csumtype, path);
+    r = guestfs_command (g, arguments);
     if (r == NULL)
       return -1;
     if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_checksum_5: expected \"%s\" but got \"%s\"\n", expected, r);
+      fprintf (stderr, "test_command_0: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
@@ -3853,9 +8447,25 @@ static int test_checksum_5 (void)
   return 0;
 }
 
-static int test_checksum_6 (void)
+static int test_command_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_1 (void)
 {
-  /* InitBasicFS for checksum (6): create ext2 on /dev/sda1 */
+  if (test_command_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -3913,27 +8523,39 @@ static int test_checksum_6 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for checksum (6) */
-  char expected[] = "109bb6b5b6d5547c1ce03c7a8bd7d8f80c1cb0957f50c4f7fda04692079917e4f9cad52b878f3d8234e1a170b154b72d";
+  /* TestOutput for command (1) */
+  char expected[] = "Result2\n";
   {
-    char path[] = "/new";
-    char content[] = "test\n";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char csumtype[] = "sha384";
-    char path[] = "/new";
+    char path[] = "/test-command";
+    int r;
+    suppress_error = 0;
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "2";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
     char *r;
     suppress_error = 0;
-    r = guestfs_checksum (g, csumtype, path);
+    r = guestfs_command (g, arguments);
     if (r == NULL)
       return -1;
     if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_checksum_6: expected \"%s\" but got \"%s\"\n", expected, r);
+      fprintf (stderr, "test_command_1: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
@@ -3941,9 +8563,25 @@ static int test_checksum_6 (void)
   return 0;
 }
 
-static int test_checksum_7 (void)
+static int test_command_2_skip (void)
 {
-  /* InitBasicFS for checksum (7): create ext2 on /dev/sda1 */
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_2 (void)
+{
+  if (test_command_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4001,27 +8639,39 @@ static int test_checksum_7 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for checksum (7) */
-  char expected[] = "0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123";
+  /* TestOutput for command (2) */
+  char expected[] = "\nResult3";
   {
-    char path[] = "/new";
-    char content[] = "test\n";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, path, content, 0);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char csumtype[] = "sha512";
-    char path[] = "/new";
+    char path[] = "/test-command";
+    int r;
+    suppress_error = 0;
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "3";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
     char *r;
     suppress_error = 0;
-    r = guestfs_checksum (g, csumtype, path);
+    r = guestfs_command (g, arguments);
     if (r == NULL)
       return -1;
     if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_checksum_7: expected \"%s\" but got \"%s\"\n", expected, r);
+      fprintf (stderr, "test_command_2: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
@@ -4029,9 +8679,25 @@ static int test_checksum_7 (void)
   return 0;
 }
 
-static int test_download_0 (void)
+static int test_command_3_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_3");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_3 (void)
 {
-  /* InitBasicFS for download (0): create ext2 on /dev/sda1 */
+  if (test_command_3_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_3");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_3: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4089,42 +8755,39 @@ static int test_download_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for download (0) */
-  char expected[] = "e3eda01d9815f8d24aae2dbd89b68b06";
-  {
-    char remotefilename[] = "/COPYING.LIB";
-    int r;
-    suppress_error = 0;
-    r = guestfs_upload (g, "COPYING.LIB", remotefilename);
-    if (r == -1)
-      return -1;
-  }
+  /* TestOutput for command (3) */
+  char expected[] = "\nResult4\n";
   {
-    char remotefilename[] = "/COPYING.LIB";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_download (g, remotefilename, "testdownload.tmp");
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char remotefilename[] = "/upload";
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_upload (g, "testdownload.tmp", remotefilename);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
-    char csumtype[] = "md5";
-    char path[] = "/upload";
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "4";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
     char *r;
     suppress_error = 0;
-    r = guestfs_checksum (g, csumtype, path);
+    r = guestfs_command (g, arguments);
     if (r == NULL)
       return -1;
     if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_download_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      fprintf (stderr, "test_command_3: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
@@ -4132,9 +8795,25 @@ static int test_download_0 (void)
   return 0;
 }
 
-static int test_upload_0 (void)
+static int test_command_4_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_4");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_4 (void)
 {
-  /* InitBasicFS for upload (0): create ext2 on /dev/sda1 */
+  if (test_command_4_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_4");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_4: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4192,75 +8871,65 @@ static int test_upload_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for upload (0) */
-  char expected[] = "e3eda01d9815f8d24aae2dbd89b68b06";
+  /* TestOutput for command (4) */
+  char expected[] = "\nResult5\n\n";
   {
-    char remotefilename[] = "/COPYING.LIB";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_upload (g, "COPYING.LIB", remotefilename);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char csumtype[] = "md5";
-    char path[] = "/COPYING.LIB";
+    char path[] = "/test-command";
+    int r;
+    suppress_error = 0;
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "5";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
     char *r;
     suppress_error = 0;
-    r = guestfs_checksum (g, csumtype, path);
+    r = guestfs_command (g, arguments);
     if (r == NULL)
       return -1;
     if (strcmp (r, expected) != 0) {
-      fprintf (stderr, "test_upload_0: expected \"%s\" but got \"%s\"\n", expected, r);
+      fprintf (stderr, "test_command_4: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
   }
   return 0;
 }
-
-static int test_blockdev_rereadpt_0 (void)
-{
-  /* InitEmpty for blockdev_rereadpt (0) */
-  {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
-    int r;
-    suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, device);
-    if (r == -1)
-      return -1;
-  }
-  {
-    int r;
-    suppress_error = 0;
-    r = guestfs_umount_all (g);
-    if (r == -1)
-      return -1;
-  }
-  {
-    int r;
-    suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
-    if (r == -1)
-      return -1;
-  }
-  /* TestRun for blockdev_rereadpt (0) */
-  {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
-    int r;
-    suppress_error = 0;
-    r = guestfs_blockdev_rereadpt (g, device);
-    if (r == -1)
-      return -1;
-  }
+
+static int test_command_5_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_5");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
   return 0;
 }
 
-static int test_blockdev_flushbufs_0 (void)
+static int test_command_5 (void)
 {
-  /* InitEmpty for blockdev_flushbufs (0) */
+  if (test_command_5_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_5");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_5: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4284,65 +8953,99 @@ static int test_blockdev_flushbufs_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestRun for blockdev_flushbufs (0) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_flushbufs (g, device);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
-  return 0;
-}
-
-static int test_blockdev_getsize64_0 (void)
-{
-  /* InitEmpty for blockdev_getsize64 (0) */
   {
-    char device[] = "/dev/sda";
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
     device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, device);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutput for command (5) */
+  char expected[] = "\n\nResult6\n\n";
   {
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for blockdev_getsize64 (0) */
   {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
-    int64_t r;
+    char path[] = "/test-command";
+    int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getsize64 (g, device);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
-    if (r != 524288000) {
-      fprintf (stderr, "test_blockdev_getsize64_0: expected 524288000 but got %d\n",               (int) r);
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "6";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char *r;
+    suppress_error = 0;
+    r = guestfs_command (g, arguments);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_command_5: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_blockdev_getsz_0 (void)
+static int test_command_6_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_6");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_6 (void)
 {
-  /* InitEmpty for blockdev_getsz (0) */
+  if (test_command_6_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_6");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_6: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4366,69 +9069,99 @@ static int test_blockdev_getsz_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for blockdev_getsz (0) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
-    int64_t r;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
+    int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getsz (g, device);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
-    if (r != 1024000) {
-      fprintf (stderr, "test_blockdev_getsz_0: expected 1024000 but got %d\n",               (int) r);
-      return -1;
-    }
   }
-  return 0;
-}
-
-static int test_blockdev_getbsz_0 (void)
-{
-  /* InitEmpty for blockdev_getbsz (0) */
   {
-    char device[] = "/dev/sda";
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
     device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, device);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutput for command (6) */
+  char expected[] = "";
   {
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for blockdev_getbsz (0) */
   {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getbsz (g, device);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
-    if (r != 4096) {
-      fprintf (stderr, "test_blockdev_getbsz_0: expected 4096 but got %d\n",               (int) r);
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "7";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char *r;
+    suppress_error = 0;
+    r = guestfs_command (g, arguments);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_command_6: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_blockdev_getss_0 (void)
+static int test_command_7_skip (void)
 {
-  /* InitEmpty for blockdev_getss (0) */
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_7");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_7 (void)
+{
+  if (test_command_7_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_7");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_7: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4452,78 +9185,99 @@ static int test_blockdev_getss_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for blockdev_getss (0) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getss (g, device);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
-    if (r != 512) {
-      fprintf (stderr, "test_blockdev_getss_0: expected 512 but got %d\n",               (int) r);
-      return -1;
-    }
   }
-  return 0;
-}
-
-static int test_blockdev_getro_0 (void)
-{
-  /* InitEmpty for blockdev_getro (0) */
   {
-    char device[] = "/dev/sda";
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
     device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, device);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
   }
   {
+    char device[] = "/dev/sda1";
+    device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutput for command (7) */
+  char expected[] = "\n";
   {
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
-  /* TestOutputTrue for blockdev_getro (0) */
   {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setro (g, device);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
-    int r;
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "8";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char *r;
     suppress_error = 0;
-    r = guestfs_blockdev_getro (g, device);
-    if (r == -1)
+    r = guestfs_command (g, arguments);
+    if (r == NULL)
       return -1;
-    if (!r) {
-      fprintf (stderr, "test_blockdev_getro_0: expected true, got false\n");
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_command_7: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_blockdev_setrw_0 (void)
+static int test_command_8_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_8");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_8 (void)
 {
-  /* InitEmpty for blockdev_setrw (0) */
+  if (test_command_8_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_8");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_8: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4547,87 +9301,99 @@ static int test_blockdev_setrw_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputFalse for blockdev_setrw (0) */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
+    char lines_0[] = ",";
+    char *lines[] = {
+      lines_0,
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, device);
+    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda";
+    char fstype[] = "ext2";
+    char device[] = "/dev/sda1";
     device[5] = devchar;
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getro (g, device);
+    r = guestfs_mkfs (g, fstype, device);
     if (r == -1)
       return -1;
-    if (r) {
-      fprintf (stderr, "test_blockdev_setrw_0: expected false, got true\n");
-      return -1;
-    }
   }
-  return 0;
-}
-
-static int test_blockdev_setro_0 (void)
-{
-  /* InitEmpty for blockdev_setro (0) */
   {
-    char device[] = "/dev/sda";
+    char device[] = "/dev/sda1";
     device[5] = devchar;
+    char mountpoint[] = "/";
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, device);
-    if (r == -1)
-      return -1;
-  }
-  {
-    int r;
-    suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_mount (g, device, mountpoint);
     if (r == -1)
       return -1;
   }
+  /* TestOutput for command (8) */
+  char expected[] = "\n\n";
   {
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
-  /* TestOutputTrue for blockdev_setro (0) */
   {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
+    char path[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setro (g, device);
+    r = guestfs_chmod (g, 493, path);
     if (r == -1)
       return -1;
   }
   {
-    char device[] = "/dev/sda";
-    device[5] = devchar;
-    int r;
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "9";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char *r;
     suppress_error = 0;
-    r = guestfs_blockdev_getro (g, device);
-    if (r == -1)
+    r = guestfs_command (g, arguments);
+    if (r == NULL)
       return -1;
-    if (!r) {
-      fprintf (stderr, "test_blockdev_setro_0: expected true, got false\n");
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_command_8: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_statvfs_0 (void)
+static int test_command_9_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_9");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_9 (void)
 {
-  /* InitBasicFS for statvfs (0): create ext2 on /dev/sda1 */
+  if (test_command_9_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_9");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_9: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4685,27 +9451,39 @@ static int test_statvfs_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputStruct for statvfs (0) */
+  /* TestOutput for command (9) */
+  char expected[] = "Result10-1\nResult10-2\n";
   {
-    char path[] = "/";
-    struct guestfs_statvfs *r;
+    char remotefilename[] = "/test-command";
+    int r;
     suppress_error = 0;
-    r = guestfs_statvfs (g, path);
-    if (r == NULL)
-      return -1;
-    if (r->bfree != 487702) {
-      fprintf (stderr, "test_statvfs_0: bfree was %d, expected 487702\n",
-               (int) r->bfree);
+    r = guestfs_upload (g, "test-command", remotefilename);
+    if (r == -1)
       return -1;
-    }
-    if (r->blocks != 490020) {
-      fprintf (stderr, "test_statvfs_0: blocks was %d, expected 490020\n",
-               (int) r->blocks);
+  }
+  {
+    char path[] = "/test-command";
+    int r;
+    suppress_error = 0;
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
       return -1;
-    }
-    if (r->bsize != 1024) {
-      fprintf (stderr, "test_statvfs_0: bsize was %d, expected 1024\n",
-               (int) r->bsize);
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "10";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char *r;
+    suppress_error = 0;
+    r = guestfs_command (g, arguments);
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_command_9: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
@@ -4713,9 +9491,25 @@ static int test_statvfs_0 (void)
   return 0;
 }
 
-static int test_lstat_0 (void)
+static int test_command_10_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_10");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_10 (void)
 {
-  /* InitBasicFS for lstat (0): create ext2 on /dev/sda1 */
+  if (test_command_10_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_10");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_10: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4773,25 +9567,39 @@ static int test_lstat_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputStruct for lstat (0) */
+  /* TestOutput for command (10) */
+  char expected[] = "Result11-1\nResult11-2";
   {
-    char path[] = "/new";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_touch (g, path);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/new";
-    struct guestfs_stat *r;
+    char path[] = "/test-command";
+    int r;
     suppress_error = 0;
-    r = guestfs_lstat (g, path);
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char arguments_1[] = "11";
+    char *arguments[] = {
+      arguments_0,
+      arguments_1,
+      NULL
+    };
+    char *r;
+    suppress_error = 0;
+    r = guestfs_command (g, arguments);
     if (r == NULL)
       return -1;
-    if (r->size != 0) {
-      fprintf (stderr, "test_lstat_0: size was %d, expected 0\n",
-               (int) r->size);
+    if (strcmp (r, expected) != 0) {
+      fprintf (stderr, "test_command_10: expected \"%s\" but got \"%s\"\n", expected, r);
       return -1;
     }
     free (r);
@@ -4799,9 +9607,25 @@ static int test_lstat_0 (void)
   return 0;
 }
 
-static int test_stat_0 (void)
+static int test_command_11_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_COMMAND_11");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_COMMAND");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
+static int test_command_11 (void)
 {
-  /* InitBasicFS for stat (0): create ext2 on /dev/sda1 */
+  if (test_command_11_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_command_11");
+    return 0;
+  }
+
+  /* InitBasicFS for test_command_11: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4859,35 +9683,58 @@ static int test_stat_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputStruct for stat (0) */
+  /* TestLastFail for command (11) */
   {
-    char path[] = "/new";
+    char remotefilename[] = "/test-command";
     int r;
     suppress_error = 0;
-    r = guestfs_touch (g, path);
+    r = guestfs_upload (g, "test-command", remotefilename);
     if (r == -1)
       return -1;
   }
   {
-    char path[] = "/new";
-    struct guestfs_stat *r;
+    char path[] = "/test-command";
+    int r;
     suppress_error = 0;
-    r = guestfs_stat (g, path);
-    if (r == NULL)
+    r = guestfs_chmod (g, 493, path);
+    if (r == -1)
       return -1;
-    if (r->size != 0) {
-      fprintf (stderr, "test_stat_0: size was %d, expected 0\n",
-               (int) r->size);
+  }
+  {
+    char arguments_0[] = "/test-command";
+    char *arguments[] = {
+      arguments_0,
+      NULL
+    };
+    char *r;
+    suppress_error = 1;
+    r = guestfs_command (g, arguments);
+    if (r != NULL)
       return -1;
-    }
     free (r);
   }
   return 0;
 }
 
+static int test_file_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_FILE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_file_0 (void)
 {
-  /* InitBasicFS for file (0): create ext2 on /dev/sda1 */
+  if (test_file_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_file_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_file_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -4971,9 +9818,25 @@ static int test_file_0 (void)
   return 0;
 }
 
+static int test_file_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_FILE_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_file_1 (void)
 {
-  /* InitBasicFS for file (1): create ext2 on /dev/sda1 */
+  if (test_file_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_file_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_file_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5058,9 +9921,25 @@ static int test_file_1 (void)
   return 0;
 }
 
+static int test_file_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_FILE_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_file_2 (void)
 {
-  /* InitBasicFS for file (2): create ext2 on /dev/sda1 */
+  if (test_file_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_file_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_file_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5131,9 +10010,25 @@ static int test_file_2 (void)
   return 0;
 }
 
+static int test_umount_all_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_UMOUNT_ALL_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_UMOUNT_ALL");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_umount_all_0 (void)
 {
-  /* InitBasicFS for umount_all (0): create ext2 on /dev/sda1 */
+  if (test_umount_all_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_umount_all_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_umount_all_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5218,9 +10113,25 @@ static int test_umount_all_0 (void)
   return 0;
 }
 
+static int test_umount_all_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_UMOUNT_ALL_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_UMOUNT_ALL");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_umount_all_1 (void)
 {
-  /* InitEmpty for umount_all (1) */
+  if (test_umount_all_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_umount_all_1");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_umount_all_1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5373,9 +10284,25 @@ static int test_umount_all_1 (void)
   return 0;
 }
 
+static int test_mounts_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MOUNTS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MOUNTS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_mounts_0 (void)
 {
-  /* InitBasicFS for mounts (0): create ext2 on /dev/sda1 */
+  if (test_mounts_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mounts_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mounts_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5466,9 +10393,25 @@ static int test_mounts_0 (void)
   return 0;
 }
 
+static int test_umount_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_UMOUNT_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_UMOUNT");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_umount_0 (void)
 {
-  /* InitEmpty for umount (0) */
+  if (test_umount_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_umount_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_umount_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5559,9 +10502,25 @@ static int test_umount_0 (void)
   return 0;
 }
 
+static int test_umount_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_UMOUNT_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_UMOUNT");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_umount_1 (void)
 {
-  /* InitEmpty for umount (1) */
+  if (test_umount_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_umount_1");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_umount_1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5647,9 +10606,25 @@ static int test_umount_1 (void)
   return 0;
 }
 
+static int test_write_file_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_WRITE_FILE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_WRITE_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_write_file_0 (void)
 {
-  /* InitBasicFS for write_file (0): create ext2 on /dev/sda1 */
+  if (test_write_file_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_write_file_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_write_file_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5734,9 +10709,25 @@ static int test_write_file_0 (void)
   return 0;
 }
 
+static int test_write_file_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_WRITE_FILE_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_WRITE_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_write_file_1 (void)
 {
-  /* InitBasicFS for write_file (1): create ext2 on /dev/sda1 */
+  if (test_write_file_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_write_file_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_write_file_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5821,9 +10812,25 @@ static int test_write_file_1 (void)
   return 0;
 }
 
+static int test_write_file_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_WRITE_FILE_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_WRITE_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_write_file_2 (void)
 {
-  /* InitBasicFS for write_file (2): create ext2 on /dev/sda1 */
+  if (test_write_file_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_write_file_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_write_file_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5908,9 +10915,25 @@ static int test_write_file_2 (void)
   return 0;
 }
 
+static int test_write_file_3_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_WRITE_FILE_3");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_WRITE_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_write_file_3 (void)
 {
-  /* InitBasicFS for write_file (3): create ext2 on /dev/sda1 */
+  if (test_write_file_3_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_write_file_3");
+    return 0;
+  }
+
+  /* InitBasicFS for test_write_file_3: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -5995,9 +11018,25 @@ static int test_write_file_3 (void)
   return 0;
 }
 
+static int test_write_file_4_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_WRITE_FILE_4");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_WRITE_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_write_file_4 (void)
 {
-  /* InitBasicFS for write_file (4): create ext2 on /dev/sda1 */
+  if (test_write_file_4_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_write_file_4");
+    return 0;
+  }
+
+  /* InitBasicFS for test_write_file_4: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -6082,9 +11121,25 @@ static int test_write_file_4 (void)
   return 0;
 }
 
+static int test_write_file_5_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_WRITE_FILE_5");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_WRITE_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_write_file_5 (void)
 {
-  /* InitBasicFS for write_file (5): create ext2 on /dev/sda1 */
+  if (test_write_file_5_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_write_file_5");
+    return 0;
+  }
+
+  /* InitBasicFS for test_write_file_5: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -6169,9 +11224,25 @@ static int test_write_file_5 (void)
   return 0;
 }
 
+static int test_mkfs_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MKFS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MKFS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_mkfs_0 (void)
 {
-  /* InitEmpty for mkfs (0) */
+  if (test_mkfs_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mkfs_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_mkfs_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -6256,9 +11327,25 @@ static int test_mkfs_0 (void)
   return 0;
 }
 
+static int test_lvcreate_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LVCREATE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LVCREATE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_lvcreate_0 (void)
 {
-  /* InitEmpty for lvcreate (0) */
+  if (test_lvcreate_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_lvcreate_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_lvcreate_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -6483,9 +11570,25 @@ static int test_lvcreate_0 (void)
   return 0;
 }
 
+static int test_vgcreate_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_VGCREATE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_VGCREATE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_vgcreate_0 (void)
 {
-  /* InitEmpty for vgcreate (0) */
+  if (test_vgcreate_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_vgcreate_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_vgcreate_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -6629,9 +11732,25 @@ static int test_vgcreate_0 (void)
   return 0;
 }
 
+static int test_pvcreate_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_PVCREATE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_PVCREATE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_pvcreate_0 (void)
 {
-  /* InitEmpty for pvcreate (0) */
+  if (test_pvcreate_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_pvcreate_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_pvcreate_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -6759,9 +11878,25 @@ static int test_pvcreate_0 (void)
   return 0;
 }
 
+static int test_is_dir_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_IS_DIR_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_IS_DIR");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_is_dir_0 (void)
 {
-  /* InitBasicFS for is_dir (0): create ext2 on /dev/sda1 */
+  if (test_is_dir_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_is_dir_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_is_dir_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -6843,9 +11978,25 @@ static int test_is_dir_0 (void)
   return 0;
 }
 
+static int test_is_dir_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_IS_DIR_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_IS_DIR");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_is_dir_1 (void)
 {
-  /* InitBasicFS for is_dir (1): create ext2 on /dev/sda1 */
+  if (test_is_dir_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_is_dir_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_is_dir_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -6927,9 +12078,25 @@ static int test_is_dir_1 (void)
   return 0;
 }
 
+static int test_is_file_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_IS_FILE_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_IS_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_is_file_0 (void)
 {
-  /* InitBasicFS for is_file (0): create ext2 on /dev/sda1 */
+  if (test_is_file_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_is_file_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_is_file_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7011,9 +12178,25 @@ static int test_is_file_0 (void)
   return 0;
 }
 
+static int test_is_file_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_IS_FILE_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_IS_FILE");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_is_file_1 (void)
 {
-  /* InitBasicFS for is_file (1): create ext2 on /dev/sda1 */
+  if (test_is_file_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_is_file_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_is_file_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7095,9 +12278,25 @@ static int test_is_file_1 (void)
   return 0;
 }
 
+static int test_exists_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_EXISTS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_EXISTS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_exists_0 (void)
 {
-  /* InitBasicFS for exists (0): create ext2 on /dev/sda1 */
+  if (test_exists_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_exists_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_exists_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7179,9 +12378,25 @@ static int test_exists_0 (void)
   return 0;
 }
 
+static int test_exists_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_EXISTS_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_EXISTS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_exists_1 (void)
 {
-  /* InitBasicFS for exists (1): create ext2 on /dev/sda1 */
+  if (test_exists_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_exists_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_exists_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7263,9 +12478,25 @@ static int test_exists_1 (void)
   return 0;
 }
 
+static int test_mkdir_p_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MKDIR_P_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MKDIR_P");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_mkdir_p_0 (void)
 {
-  /* InitBasicFS for mkdir_p (0): create ext2 on /dev/sda1 */
+  if (test_mkdir_p_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mkdir_p_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mkdir_p_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7347,9 +12578,25 @@ static int test_mkdir_p_0 (void)
   return 0;
 }
 
+static int test_mkdir_p_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MKDIR_P_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MKDIR_P");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_mkdir_p_1 (void)
 {
-  /* InitBasicFS for mkdir_p (1): create ext2 on /dev/sda1 */
+  if (test_mkdir_p_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mkdir_p_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mkdir_p_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7431,9 +12678,25 @@ static int test_mkdir_p_1 (void)
   return 0;
 }
 
+static int test_mkdir_p_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MKDIR_P_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MKDIR_P");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_mkdir_p_2 (void)
 {
-  /* InitBasicFS for mkdir_p (2): create ext2 on /dev/sda1 */
+  if (test_mkdir_p_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mkdir_p_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mkdir_p_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7515,9 +12778,25 @@ static int test_mkdir_p_2 (void)
   return 0;
 }
 
+static int test_mkdir_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MKDIR_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MKDIR");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_mkdir_0 (void)
 {
-  /* InitBasicFS for mkdir (0): create ext2 on /dev/sda1 */
+  if (test_mkdir_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mkdir_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mkdir_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7599,9 +12878,25 @@ static int test_mkdir_0 (void)
   return 0;
 }
 
+static int test_mkdir_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MKDIR_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MKDIR");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_mkdir_1 (void)
 {
-  /* InitBasicFS for mkdir (1): create ext2 on /dev/sda1 */
+  if (test_mkdir_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mkdir_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_mkdir_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7671,9 +12966,25 @@ static int test_mkdir_1 (void)
   return 0;
 }
 
+static int test_rm_rf_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_RM_RF_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_RM_RF");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_rm_rf_0 (void)
 {
-  /* InitBasicFS for rm_rf (0): create ext2 on /dev/sda1 */
+  if (test_rm_rf_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_rm_rf_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_rm_rf_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7779,9 +13090,25 @@ static int test_rm_rf_0 (void)
   return 0;
 }
 
+static int test_rmdir_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_RMDIR_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_RMDIR");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_rmdir_0 (void)
 {
-  /* InitBasicFS for rmdir (0): create ext2 on /dev/sda1 */
+  if (test_rmdir_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_rmdir_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_rmdir_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7859,9 +13186,25 @@ static int test_rmdir_0 (void)
   return 0;
 }
 
+static int test_rmdir_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_RMDIR_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_RMDIR");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_rmdir_1 (void)
 {
-  /* InitBasicFS for rmdir (1): create ext2 on /dev/sda1 */
+  if (test_rmdir_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_rmdir_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_rmdir_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -7931,9 +13274,25 @@ static int test_rmdir_1 (void)
   return 0;
 }
 
+static int test_rmdir_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_RMDIR_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_RMDIR");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_rmdir_2 (void)
 {
-  /* InitBasicFS for rmdir (2): create ext2 on /dev/sda1 */
+  if (test_rmdir_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_rmdir_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_rmdir_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -8011,9 +13370,25 @@ static int test_rmdir_2 (void)
   return 0;
 }
 
+static int test_rm_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_RM_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_RM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_rm_0 (void)
 {
-  /* InitBasicFS for rm (0): create ext2 on /dev/sda1 */
+  if (test_rm_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_rm_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_rm_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -8091,9 +13466,25 @@ static int test_rm_0 (void)
   return 0;
 }
 
+static int test_rm_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_RM_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_RM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_rm_1 (void)
 {
-  /* InitBasicFS for rm (1): create ext2 on /dev/sda1 */
+  if (test_rm_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_rm_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_rm_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -8163,9 +13554,25 @@ static int test_rm_1 (void)
   return 0;
 }
 
+static int test_rm_2_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_RM_2");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_RM");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_rm_2 (void)
 {
-  /* InitBasicFS for rm (2): create ext2 on /dev/sda1 */
+  if (test_rm_2_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_rm_2");
+    return 0;
+  }
+
+  /* InitBasicFS for test_rm_2: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -8243,9 +13650,25 @@ static int test_rm_2 (void)
   return 0;
 }
 
+static int test_read_lines_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_READ_LINES_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_READ_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_read_lines_0 (void)
 {
-  /* InitBasicFS for read_lines (0): create ext2 on /dev/sda1 */
+  if (test_read_lines_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_read_lines_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_read_lines_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -8369,9 +13792,25 @@ static int test_read_lines_0 (void)
   return 0;
 }
 
+static int test_read_lines_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_READ_LINES_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_READ_LINES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_read_lines_1 (void)
 {
-  /* InitBasicFS for read_lines (1): create ext2 on /dev/sda1 */
+  if (test_read_lines_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_read_lines_1");
+    return 0;
+  }
+
+  /* InitBasicFS for test_read_lines_1: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -8459,9 +13898,25 @@ static int test_read_lines_1 (void)
   return 0;
 }
 
+static int test_lvs_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LVS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LVS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_lvs_0 (void)
 {
-  /* InitBasicFSonLVM for lvs (0): create ext2 on /dev/VG/LV */
+  if (test_lvs_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_lvs_0");
+    return 0;
+  }
+
+  /* InitBasicFSonLVM for test_lvs_0: create ext2 on /dev/VG/LV */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -8581,9 +14036,25 @@ static int test_lvs_0 (void)
   return 0;
 }
 
+static int test_lvs_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LVS_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LVS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_lvs_1 (void)
 {
-  /* InitEmpty for lvs (1) */
+  if (test_lvs_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_lvs_1");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_lvs_1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -8766,9 +14237,25 @@ static int test_lvs_1 (void)
   return 0;
 }
 
+static int test_vgs_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_VGS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_VGS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_vgs_0 (void)
 {
-  /* InitBasicFSonLVM for vgs (0): create ext2 on /dev/VG/LV */
+  if (test_vgs_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_vgs_0");
+    return 0;
+  }
+
+  /* InitBasicFSonLVM for test_vgs_0: create ext2 on /dev/VG/LV */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -8888,9 +14375,25 @@ static int test_vgs_0 (void)
   return 0;
 }
 
+static int test_vgs_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_VGS_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_VGS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_vgs_1 (void)
 {
-  /* InitEmpty for vgs (1) */
+  if (test_vgs_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_vgs_1");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_vgs_1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9034,9 +14537,25 @@ static int test_vgs_1 (void)
   return 0;
 }
 
+static int test_pvs_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_PVS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_PVS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_pvs_0 (void)
 {
-  /* InitBasicFSonLVM for pvs (0): create ext2 on /dev/VG/LV */
+  if (test_pvs_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_pvs_0");
+    return 0;
+  }
+
+  /* InitBasicFSonLVM for test_pvs_0: create ext2 on /dev/VG/LV */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9157,9 +14676,25 @@ static int test_pvs_0 (void)
   return 0;
 }
 
+static int test_pvs_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_PVS_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_PVS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_pvs_1 (void)
 {
-  /* InitEmpty for pvs (1) */
+  if (test_pvs_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_pvs_1");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_pvs_1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9287,9 +14822,25 @@ static int test_pvs_1 (void)
   return 0;
 }
 
+static int test_list_partitions_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LIST_PARTITIONS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LIST_PARTITIONS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_list_partitions_0 (void)
 {
-  /* InitBasicFS for list_partitions (0): create ext2 on /dev/sda1 */
+  if (test_list_partitions_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_list_partitions_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_list_partitions_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9380,9 +14931,25 @@ static int test_list_partitions_0 (void)
   return 0;
 }
 
+static int test_list_partitions_1_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LIST_PARTITIONS_1");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LIST_PARTITIONS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_list_partitions_1 (void)
 {
-  /* InitEmpty for list_partitions (1) */
+  if (test_list_partitions_1_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_list_partitions_1");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_list_partitions_1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9483,9 +15050,25 @@ static int test_list_partitions_1 (void)
   return 0;
 }
 
+static int test_list_devices_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LIST_DEVICES_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LIST_DEVICES");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_list_devices_0 (void)
 {
-  /* InitEmpty for list_devices (0) */
+  if (test_list_devices_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_list_devices_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_list_devices_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9568,9 +15151,25 @@ static int test_list_devices_0 (void)
   return 0;
 }
 
+static int test_ls_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_LS_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_LS");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_ls_0 (void)
 {
-  /* InitBasicFS for ls (0): create ext2 on /dev/sda1 */
+  if (test_ls_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_ls_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_ls_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9721,9 +15320,25 @@ static int test_ls_0 (void)
   return 0;
 }
 
+static int test_cat_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_CAT_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_CAT");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_cat_0 (void)
 {
-  /* InitBasicFS for cat (0): create ext2 on /dev/sda1 */
+  if (test_cat_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_cat_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_cat_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9808,9 +15423,25 @@ static int test_cat_0 (void)
   return 0;
 }
 
+static int test_touch_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_TOUCH_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_TOUCH");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_touch_0 (void)
 {
-  /* InitBasicFS for touch (0): create ext2 on /dev/sda1 */
+  if (test_touch_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_touch_0");
+    return 0;
+  }
+
+  /* InitBasicFS for test_touch_0: create ext2 on /dev/sda1 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9892,9 +15523,25 @@ static int test_touch_0 (void)
   return 0;
 }
 
+static int test_sync_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_SYNC_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_SYNC");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_sync_0 (void)
 {
-  /* InitEmpty for sync (0) */
+  if (test_sync_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_sync_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_sync_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -9929,9 +15576,25 @@ static int test_sync_0 (void)
   return 0;
 }
 
+static int test_mount_0_skip (void)
+{
+  const char *str;
+
+  str = getenv ("SKIP_TEST_MOUNT_0");
+  if (str && strcmp (str, "1") == 0) return 1;
+  str = getenv ("SKIP_TEST_MOUNT");
+  if (str && strcmp (str, "1") == 0) return 1;
+  return 0;
+}
+
 static int test_mount_0 (void)
 {
-  /* InitEmpty for mount (0) */
+  if (test_mount_0_skip ()) {
+    printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mount_0");
+    return 0;
+  }
+
+  /* InitNone|InitEmpty for test_mount_0 */
   {
     char device[] = "/dev/sda";
     device[5] = devchar;
@@ -10039,7 +15702,7 @@ int main (int argc, char *argv[])
   srcdir = getenv ("srcdir");
   if (!srcdir) srcdir = ".";
   chdir (srcdir);
-  guestfs_set_path (g, ".");
+  guestfs_set_path (g, "appliance");
 
   filename = "test1.img";
   fd = open (filename, O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK|O_TRUNC, 0666);
@@ -10156,9 +15819,39 @@ int main (int argc, char *argv[])
     free (devs[i]);
   free (devs);
 
-  nr_tests = 110;
+  nr_tests = 140;
 
   test_num++;
+  printf ("%3d/%3d test_find_0\n", test_num, nr_tests);
+  if (test_find_0 () == -1) {
+    printf ("test_find_0 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_find_1\n", test_num, nr_tests);
+  if (test_find_1 () == -1) {
+    printf ("test_find_1 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_find_2\n", test_num, nr_tests);
+  if (test_find_2 () == -1) {
+    printf ("test_find_2 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_lvresize_0\n", test_num, nr_tests);
+  if (test_lvresize_0 () == -1) {
+    printf ("test_lvresize_0 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_zerofree_0\n", test_num, nr_tests);
+  if (test_zerofree_0 () == -1) {
+    printf ("test_zerofree_0 FAILED\n");
+    failed++;
+  }
+  test_num++;
   printf ("%3d/%3d test_hexdump_0\n", test_num, nr_tests);
   if (test_hexdump_0 () == -1) {
     printf ("test_hexdump_0 FAILED\n");
@@ -10171,12 +15864,24 @@ int main (int argc, char *argv[])
     failed++;
   }
   test_num++;
+  printf ("%3d/%3d test_strings_e_1\n", test_num, nr_tests);
+  if (test_strings_e_1 () == -1) {
+    printf ("test_strings_e_1 FAILED\n");
+    failed++;
+  }
+  test_num++;
   printf ("%3d/%3d test_strings_0\n", test_num, nr_tests);
   if (test_strings_0 () == -1) {
     printf ("test_strings_0 FAILED\n");
     failed++;
   }
   test_num++;
+  printf ("%3d/%3d test_strings_1\n", test_num, nr_tests);
+  if (test_strings_1 () == -1) {
+    printf ("test_strings_1 FAILED\n");
+    failed++;
+  }
+  test_num++;
   printf ("%3d/%3d test_equal_0\n", test_num, nr_tests);
   if (test_equal_0 () == -1) {
     printf ("test_equal_0 FAILED\n");
@@ -10507,6 +16212,144 @@ int main (int argc, char *argv[])
     failed++;
   }
   test_num++;
+  printf ("%3d/%3d test_command_lines_0\n", test_num, nr_tests);
+  if (test_command_lines_0 () == -1) {
+    printf ("test_command_lines_0 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_1\n", test_num, nr_tests);
+  if (test_command_lines_1 () == -1) {
+    printf ("test_command_lines_1 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_2\n", test_num, nr_tests);
+  if (test_command_lines_2 () == -1) {
+    printf ("test_command_lines_2 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_3\n", test_num, nr_tests);
+  if (test_command_lines_3 () == -1) {
+    printf ("test_command_lines_3 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_4\n", test_num, nr_tests);
+  if (test_command_lines_4 () == -1) {
+    printf ("test_command_lines_4 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_5\n", test_num, nr_tests);
+  if (test_command_lines_5 () == -1) {
+    printf ("test_command_lines_5 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_6\n", test_num, nr_tests);
+  if (test_command_lines_6 () == -1) {
+    printf ("test_command_lines_6 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_7\n", test_num, nr_tests);
+  if (test_command_lines_7 () == -1) {
+    printf ("test_command_lines_7 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_8\n", test_num, nr_tests);
+  if (test_command_lines_8 () == -1) {
+    printf ("test_command_lines_8 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_9\n", test_num, nr_tests);
+  if (test_command_lines_9 () == -1) {
+    printf ("test_command_lines_9 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_lines_10\n", test_num, nr_tests);
+  if (test_command_lines_10 () == -1) {
+    printf ("test_command_lines_10 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_0\n", test_num, nr_tests);
+  if (test_command_0 () == -1) {
+    printf ("test_command_0 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_1\n", test_num, nr_tests);
+  if (test_command_1 () == -1) {
+    printf ("test_command_1 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_2\n", test_num, nr_tests);
+  if (test_command_2 () == -1) {
+    printf ("test_command_2 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_3\n", test_num, nr_tests);
+  if (test_command_3 () == -1) {
+    printf ("test_command_3 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_4\n", test_num, nr_tests);
+  if (test_command_4 () == -1) {
+    printf ("test_command_4 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_5\n", test_num, nr_tests);
+  if (test_command_5 () == -1) {
+    printf ("test_command_5 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_6\n", test_num, nr_tests);
+  if (test_command_6 () == -1) {
+    printf ("test_command_6 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_7\n", test_num, nr_tests);
+  if (test_command_7 () == -1) {
+    printf ("test_command_7 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_8\n", test_num, nr_tests);
+  if (test_command_8 () == -1) {
+    printf ("test_command_8 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_9\n", test_num, nr_tests);
+  if (test_command_9 () == -1) {
+    printf ("test_command_9 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_10\n", test_num, nr_tests);
+  if (test_command_10 () == -1) {
+    printf ("test_command_10 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_command_11\n", test_num, nr_tests);
+  if (test_command_11 () == -1) {
+    printf ("test_command_11 FAILED\n");
+    failed++;
+  }
+  test_num++;
   printf ("%3d/%3d test_file_0\n", test_num, nr_tests);
   if (test_file_0 () == -1) {
     printf ("test_file_0 FAILED\n");