Generated code for 'checksum' command.
[libguestfs.git] / tests.c
diff --git a/tests.c b/tests.c
index b3d2f49..9744575 100644 (file)
--- a/tests.c
+++ b/tests.c
@@ -69,6 +69,13 @@ static void no_test_warnings (void)
   fprintf (stderr, "warning: \"guestfs_get_autosync\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_set_verbose\" has no tests\n");
   fprintf (stderr, "warning: \"guestfs_get_verbose\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_is_ready\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_is_config\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_is_launching\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_is_busy\" has no tests\n");
+  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_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");
@@ -94,11 +101,13 @@ static void no_test_warnings (void)
   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_upload\" has no tests\n");
+  fprintf (stderr, "warning: \"guestfs_download\" has no tests\n");
 }
 
-static int test_blockdev_rereadpt_0 (void)
+static int test_checksum_0 (void)
 {
-  /* InitEmpty for blockdev_rereadpt (0) */
+  /* InitBasicFS for checksum (0): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -113,48 +122,57 @@ static int test_blockdev_rereadpt_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestRun for blockdev_rereadpt (0) */
   {
+    char *lines[] = {
+      ",",
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_rereadpt (g, "/dev/sda");
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
-  return 0;
-}
-
-static int test_blockdev_flushbufs_0 (void)
-{
-  /* InitEmpty for blockdev_flushbufs (0) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
     if (r == -1)
       return -1;
   }
   {
     int r;
     suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
+    r = guestfs_mount (g, "/dev/sda1", "/");
     if (r == -1)
       return -1;
   }
-  /* TestRun for blockdev_flushbufs (0) */
+  /* TestOutput for checksum (0) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_flushbufs (g, "/dev/sda");
+    r = guestfs_write_file (g, "/new", "test\n", 0);
     if (r == -1)
       return -1;
   }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, "crc", "/new");
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, "935282863") != 0) {
+      fprintf (stderr, "test_checksum_0: expected \"935282863\" but got \"%s\"\n", r);
+      return -1;
+    }
+    free (r);
+  }
   return 0;
 }
 
-static int test_blockdev_getsize64_0 (void)
+static int test_checksum_1 (void)
 {
-  /* InitEmpty for blockdev_getsize64 (0) */
+  /* InitBasicFS for checksum (1): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -169,24 +187,46 @@ static int test_blockdev_getsize64_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for blockdev_getsize64 (0) */
   {
-    int64_t r;
+    char *lines[] = {
+      ",",
+      NULL
+    };
+    int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getsize64 (g, "/dev/sda");
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
     if (r == -1)
       return -1;
-    if (r != 524288000) {
-      fprintf (stderr, "test_blockdev_getsize64_0: expected 524288000 but got %d\n",               (int) r);
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
+    if (r == -1)
       return -1;
-    }
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestLastFail for checksum (1) */
+  {
+    char *r;
+    suppress_error = 1;
+    r = guestfs_checksum (g, "crc", "/new");
+    if (r != NULL)
+      return -1;
+    free (r);
   }
   return 0;
 }
 
-static int test_blockdev_getsz_0 (void)
+static int test_checksum_2 (void)
 {
-  /* InitEmpty for blockdev_getsz (0) */
+  /* InitBasicFS for checksum (2): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -201,56 +241,57 @@ static int test_blockdev_getsz_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for blockdev_getsz (0) */
   {
-    int64_t r;
+    char *lines[] = {
+      ",",
+      NULL
+    };
+    int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getsz (g, "/dev/sda");
+    r = guestfs_sfdisk (g, "/dev/sda", 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) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
     if (r == -1)
       return -1;
   }
   {
     int r;
     suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
+    r = guestfs_mount (g, "/dev/sda1", "/");
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for blockdev_getbsz (0) */
+  /* TestOutput for checksum (2) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getbsz (g, "/dev/sda");
+    r = guestfs_write_file (g, "/new", "test\n", 0);
     if (r == -1)
       return -1;
-    if (r != 4096) {
-      fprintf (stderr, "test_blockdev_getbsz_0: expected 4096 but got %d\n",               (int) r);
+  }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, "md5", "/new");
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, "d8e8fca2dc0f896fd7cb4cb0031ba249") != 0) {
+      fprintf (stderr, "test_checksum_2: expected \"d8e8fca2dc0f896fd7cb4cb0031ba249\" but got \"%s\"\n", r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_blockdev_getss_0 (void)
+static int test_checksum_3 (void)
 {
-  /* InitEmpty for blockdev_getss (0) */
+  /* InitBasicFS for checksum (3): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -265,63 +306,57 @@ static int test_blockdev_getss_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputInt for blockdev_getss (0) */
   {
+    char *lines[] = {
+      ",",
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getss (g, "/dev/sda");
+    r = guestfs_sfdisk (g, "/dev/sda", 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) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
     if (r == -1)
       return -1;
   }
   {
     int r;
     suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
+    r = guestfs_mount (g, "/dev/sda1", "/");
     if (r == -1)
       return -1;
   }
-  /* TestOutputTrue for blockdev_getro (0) */
+  /* TestOutput for checksum (3) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setro (g, "/dev/sda");
+    r = guestfs_write_file (g, "/new", "test\n", 0);
     if (r == -1)
       return -1;
   }
   {
-    int r;
+    char *r;
     suppress_error = 0;
-    r = guestfs_blockdev_getro (g, "/dev/sda");
-    if (r == -1)
+    r = guestfs_checksum (g, "sha1", "/new");
+    if (r == NULL)
       return -1;
-    if (!r) {
-      fprintf (stderr, "test_blockdev_getro_0: expected true, got false\n");
+    if (strcmp (r, "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83") != 0) {
+      fprintf (stderr, "test_checksum_3: expected \"4e1243bd22c66e76c2ba9eddc1f91394e57f9f83\" but got \"%s\"\n", r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_blockdev_setrw_0 (void)
+static int test_checksum_4 (void)
 {
-  /* InitEmpty for blockdev_setrw (0) */
+  /* InitBasicFS for checksum (4): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -336,31 +371,57 @@ static int test_blockdev_setrw_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputFalse for blockdev_setrw (0) */
   {
+    char *lines[] = {
+      ",",
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, "/dev/sda");
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
   {
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getro (g, "/dev/sda");
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
     if (r == -1)
       return -1;
-    if (r) {
-      fprintf (stderr, "test_blockdev_setrw_0: expected false, got true\n");
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for checksum (4) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, "/new", "test\n", 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, "sha224", "/new");
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, "52f1bf093f4b7588726035c176c0cdb4376cfea53819f1395ac9e6ec") != 0) {
+      fprintf (stderr, "test_checksum_4: expected \"52f1bf093f4b7588726035c176c0cdb4376cfea53819f1395ac9e6ec\" but got \"%s\"\n", r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_blockdev_setro_0 (void)
+static int test_checksum_5 (void)
 {
-  /* InitEmpty for blockdev_setro (0) */
+  /* InitBasicFS for checksum (5): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -375,31 +436,57 @@ static int test_blockdev_setro_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputTrue for blockdev_setro (0) */
   {
+    char *lines[] = {
+      ",",
+      NULL
+    };
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_setro (g, "/dev/sda");
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
     if (r == -1)
       return -1;
   }
   {
     int r;
     suppress_error = 0;
-    r = guestfs_blockdev_getro (g, "/dev/sda");
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
     if (r == -1)
       return -1;
-    if (!r) {
-      fprintf (stderr, "test_blockdev_setro_0: expected true, got false\n");
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for checksum (5) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, "/new", "test\n", 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, "sha256", "/new");
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, "f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2") != 0) {
+      fprintf (stderr, "test_checksum_5: expected \"f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2\" but got \"%s\"\n", r);
       return -1;
     }
+    free (r);
   }
   return 0;
 }
 
-static int test_statvfs_0 (void)
+static int test_checksum_6 (void)
 {
-  /* InitBasicFS for statvfs (0): create ext2 on /dev/sda1 */
+  /* InitBasicFS for checksum (6): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -439,26 +526,22 @@ static int test_statvfs_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputStruct for statvfs (0) */
+  /* TestOutput for checksum (6) */
   {
-    struct guestfs_statvfs *r;
+    int r;
     suppress_error = 0;
-    r = guestfs_statvfs (g, "/");
-    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_write_file (g, "/new", "test\n", 0);
+    if (r == -1)
       return -1;
-    }
-    if (r->blocks != 490020) {
-      fprintf (stderr, "test_statvfs_0: blocks was %d, expected 490020\n",
-               (int) r->blocks);
+  }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, "sha384", "/new");
+    if (r == NULL)
       return -1;
-    }
-    if (r->bsize != 1024) {
-      fprintf (stderr, "test_statvfs_0: bsize was %d, expected 1024\n",
-               (int) r->bsize);
+    if (strcmp (r, "109bb6b5b6d5547c1ce03c7a8bd7d8f80c1cb0957f50c4f7fda04692079917e4f9cad52b878f3d8234e1a170b154b72d") != 0) {
+      fprintf (stderr, "test_checksum_6: expected \"109bb6b5b6d5547c1ce03c7a8bd7d8f80c1cb0957f50c4f7fda04692079917e4f9cad52b878f3d8234e1a170b154b72d\" but got \"%s\"\n", r);
       return -1;
     }
     free (r);
@@ -466,9 +549,9 @@ static int test_statvfs_0 (void)
   return 0;
 }
 
-static int test_lstat_0 (void)
+static int test_checksum_7 (void)
 {
-  /* InitBasicFS for lstat (0): create ext2 on /dev/sda1 */
+  /* InitBasicFS for checksum (7): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -508,33 +591,787 @@ static int test_lstat_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputStruct for lstat (0) */
+  /* TestOutput for checksum (7) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, "/new", "test\n", 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_checksum (g, "sha512", "/new");
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, "0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123") != 0) {
+      fprintf (stderr, "test_checksum_7: expected \"0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123\" but got \"%s\"\n", r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_blockdev_rereadpt_0 (void)
+{
+  /* InitEmpty for blockdev_rereadpt (0) */
+  {
+    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) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_rereadpt (g, "/dev/sda");
+    if (r == -1)
+      return -1;
+  }
+  return 0;
+}
+
+static int test_blockdev_flushbufs_0 (void)
+{
+  /* InitEmpty for blockdev_flushbufs (0) */
+  {
+    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) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_flushbufs (g, "/dev/sda");
+    if (r == -1)
+      return -1;
+  }
+  return 0;
+}
+
+static int test_blockdev_getsize64_0 (void)
+{
+  /* InitEmpty for blockdev_getsize64 (0) */
+  {
+    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) */
+  {
+    int64_t r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getsize64 (g, "/dev/sda");
+    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 (void)
+{
+  /* InitEmpty for blockdev_getsz (0) */
+  {
+    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) */
+  {
+    int64_t r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getsz (g, "/dev/sda");
+    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) */
+  {
+    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) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getbsz (g, "/dev/sda");
+    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 (void)
+{
+  /* InitEmpty for blockdev_getss (0) */
+  {
+    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) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getss (g, "/dev/sda");
+    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) */
+  {
+    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) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setro (g, "/dev/sda");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getro (g, "/dev/sda");
+    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 (void)
+{
+  /* InitEmpty for blockdev_setrw (0) */
+  {
+    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) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setrw (g, "/dev/sda");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getro (g, "/dev/sda");
+    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) */
+  {
+    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) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_setro (g, "/dev/sda");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_blockdev_getro (g, "/dev/sda");
+    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 (void)
+{
+  /* InitBasicFS for statvfs (0): create ext2 on /dev/sda1 */
+  {
+    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 *lines[] = {
+      ",",
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputStruct for statvfs (0) */
+  {
+    struct guestfs_statvfs *r;
+    suppress_error = 0;
+    r = guestfs_statvfs (g, "/");
+    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 (void)
+{
+  /* InitBasicFS for lstat (0): create ext2 on /dev/sda1 */
+  {
+    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 *lines[] = {
+      ",",
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputStruct for lstat (0) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_touch (g, "/new");
+    if (r == -1)
+      return -1;
+  }
+  {
+    struct guestfs_stat *r;
+    suppress_error = 0;
+    r = guestfs_lstat (g, "/new");
+    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 (void)
+{
+  /* InitBasicFS for stat (0): create ext2 on /dev/sda1 */
+  {
+    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 *lines[] = {
+      ",",
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputStruct for stat (0) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_touch (g, "/new");
+    if (r == -1)
+      return -1;
+  }
+  {
+    struct guestfs_stat *r;
+    suppress_error = 0;
+    r = guestfs_stat (g, "/new");
+    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_file_0 (void)
+{
+  /* InitBasicFS for file (0): create ext2 on /dev/sda1 */
+  {
+    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 *lines[] = {
+      ",",
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for file (0) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_touch (g, "/new");
+    if (r == -1)
+      return -1;
+  }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_file (g, "/new");
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, "empty") != 0) {
+      fprintf (stderr, "test_file_0: expected \"empty\" but got \"%s\"\n", r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_file_1 (void)
+{
+  /* InitBasicFS for file (1): create ext2 on /dev/sda1 */
+  {
+    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 *lines[] = {
+      ",",
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutput for file (1) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, "/new", "some content\n", 0);
+    if (r == -1)
+      return -1;
+  }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_file (g, "/new");
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, "ASCII text") != 0) {
+      fprintf (stderr, "test_file_1: expected \"ASCII text\" but got \"%s\"\n", r);
+      return -1;
+    }
+    free (r);
+  }
+  return 0;
+}
+
+static int test_file_2 (void)
+{
+  /* InitBasicFS for file (2): create ext2 on /dev/sda1 */
+  {
+    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 *lines[] = {
+      ",",
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestLastFail for file (2) */
+  {
+    char *r;
+    suppress_error = 1;
+    r = guestfs_file (g, "/nofile");
+    if (r != NULL)
+      return -1;
+    free (r);
+  }
+  return 0;
+}
+
+static int test_umount_all_0 (void)
+{
+  /* InitBasicFS for umount_all (0): create ext2 on /dev/sda1 */
+  {
+    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 *lines[] = {
+      ",",
+      NULL
+    };
+    int r;
+    suppress_error = 0;
+    r = guestfs_sfdisk (g, "/dev/sda", 0, 0, 0, lines);
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mkfs (g, "ext2", "/dev/sda1");
+    if (r == -1)
+      return -1;
+  }
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_mount (g, "/dev/sda1", "/");
+    if (r == -1)
+      return -1;
+  }
+  /* TestOutputList for umount_all (0) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_touch (g, "/new");
+    r = guestfs_umount_all (g);
     if (r == -1)
       return -1;
   }
   {
-    struct guestfs_stat *r;
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_lstat (g, "/new");
+    r = guestfs_mounts (g);
     if (r == NULL)
       return -1;
-    if (r->size != 0) {
-      fprintf (stderr, "test_lstat_0: size was %d, expected 0\n",
-               (int) r->size);
+    if (r[0] != NULL) {
+      fprintf (stderr, "test_umount_all_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_stat_0 (void)
+static int test_mounts_0 (void)
 {
-  /* InitBasicFS for stat (0): create ext2 on /dev/sda1 */
+  /* InitBasicFS for mounts (0): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -574,33 +1411,38 @@ static int test_stat_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputStruct for stat (0) */
-  {
-    int r;
-    suppress_error = 0;
-    r = guestfs_touch (g, "/new");
-    if (r == -1)
-      return -1;
-  }
+  /* TestOutputList for mounts (0) */
   {
-    struct guestfs_stat *r;
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_stat (g, "/new");
+    r = guestfs_mounts (g);
     if (r == NULL)
       return -1;
-    if (r->size != 0) {
-      fprintf (stderr, "test_stat_0: size was %d, expected 0\n",
-               (int) r->size);
+    if (!r[0]) {
+      fprintf (stderr, "test_mounts_0: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    if (strcmp (r[0], "/dev/sda1") != 0) {
+      fprintf (stderr, "test_mounts_0: expected \"/dev/sda1\" but got \"%s\"\n", r[0]);
+      return -1;
+    }
+    if (r[1] != NULL) {
+      fprintf (stderr, "test_mounts_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_file_0 (void)
+static int test_umount_0 (void)
 {
-  /* InitBasicFS for file (0): create ext2 on /dev/sda1 */
+  /* InitEmpty for umount (0) */
   {
     int r;
     suppress_error = 0;
@@ -615,6 +1457,7 @@ static int test_file_0 (void)
     if (r == -1)
       return -1;
   }
+  /* TestOutputList for umount (0) */
   {
     char *lines[] = {
       ",",
@@ -640,32 +1483,37 @@ static int test_file_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for file (0) */
-  {
-    int r;
-    suppress_error = 0;
-    r = guestfs_touch (g, "/new");
-    if (r == -1)
-      return -1;
-  }
   {
-    char *r;
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_file (g, "/new");
+    r = guestfs_mounts (g);
     if (r == NULL)
       return -1;
-    if (strcmp (r, "empty") != 0) {
-      fprintf (stderr, "test_file_0: expected \"empty\" but got \"%s\"\n", r);
+    if (!r[0]) {
+      fprintf (stderr, "test_umount_0: short list returned from command\n");
+      print_strings (r);
+      return -1;
+    }
+    if (strcmp (r[0], "/dev/sda1") != 0) {
+      fprintf (stderr, "test_umount_0: expected \"/dev/sda1\" but got \"%s\"\n", r[0]);
+      return -1;
+    }
+    if (r[1] != NULL) {
+      fprintf (stderr, "test_umount_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_file_1 (void)
+static int test_umount_1 (void)
 {
-  /* InitBasicFS for file (1): create ext2 on /dev/sda1 */
+  /* InitEmpty for umount (1) */
   {
     int r;
     suppress_error = 0;
@@ -680,6 +1528,7 @@ static int test_file_1 (void)
     if (r == -1)
       return -1;
   }
+  /* TestOutputList for umount (1) */
   {
     char *lines[] = {
       ",",
@@ -705,32 +1554,35 @@ static int test_file_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for file (1) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, "/new", "some content\n", 0);
+    r = guestfs_umount (g, "/");
     if (r == -1)
       return -1;
   }
   {
-    char *r;
+    char **r;
+    int i;
     suppress_error = 0;
-    r = guestfs_file (g, "/new");
+    r = guestfs_mounts (g);
     if (r == NULL)
       return -1;
-    if (strcmp (r, "ASCII text") != 0) {
-      fprintf (stderr, "test_file_1: expected \"ASCII text\" but got \"%s\"\n", r);
+    if (r[0] != NULL) {
+      fprintf (stderr, "test_umount_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_file_2 (void)
+static int test_write_file_0 (void)
 {
-  /* InitBasicFS for file (2): create ext2 on /dev/sda1 */
+  /* InitBasicFS for write_file (0): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -770,21 +1622,32 @@ static int test_file_2 (void)
     if (r == -1)
       return -1;
   }
-  /* TestLastFail for file (2) */
+  /* TestOutput for write_file (0) */
+  {
+    int r;
+    suppress_error = 0;
+    r = guestfs_write_file (g, "/new", "new file contents", 0);
+    if (r == -1)
+      return -1;
+  }
   {
     char *r;
-    suppress_error = 1;
-    r = guestfs_file (g, "/nofile");
-    if (r != NULL)
+    suppress_error = 0;
+    r = guestfs_cat (g, "/new");
+    if (r == NULL)
+      return -1;
+    if (strcmp (r, "new file contents") != 0) {
+      fprintf (stderr, "test_write_file_0: expected \"new file contents\" but got \"%s\"\n", r);
       return -1;
+    }
     free (r);
   }
   return 0;
 }
 
-static int test_umount_all_0 (void)
+static int test_write_file_1 (void)
 {
-  /* InitBasicFS for umount_all (0): create ext2 on /dev/sda1 */
+  /* InitBasicFS for write_file (1): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -824,36 +1687,32 @@ static int test_umount_all_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for umount_all (0) */
+  /* TestOutput for write_file (1) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_umount_all (g);
+    r = guestfs_write_file (g, "/new", "\nnew file contents\n", 0);
     if (r == -1)
       return -1;
   }
   {
-    char **r;
-    int i;
+    char *r;
     suppress_error = 0;
-    r = guestfs_mounts (g);
+    r = guestfs_cat (g, "/new");
     if (r == NULL)
       return -1;
-    if (r[0] != NULL) {
-      fprintf (stderr, "test_umount_all_0: extra elements returned from command\n");
-      print_strings (r);
+    if (strcmp (r, "\nnew file contents\n") != 0) {
+      fprintf (stderr, "test_write_file_1: expected \"\nnew file contents\n\" but got \"%s\"\n", r);
       return -1;
     }
-    for (i = 0; r[i] != NULL; ++i)
-      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_mounts_0 (void)
+static int test_write_file_2 (void)
 {
-  /* InitBasicFS for mounts (0): create ext2 on /dev/sda1 */
+  /* InitBasicFS for write_file (2): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -893,38 +1752,32 @@ static int test_mounts_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for mounts (0) */
+  /* TestOutput for write_file (2) */
   {
-    char **r;
-    int i;
+    int r;
     suppress_error = 0;
-    r = guestfs_mounts (g);
-    if (r == NULL)
-      return -1;
-    if (!r[0]) {
-      fprintf (stderr, "test_mounts_0: short list returned from command\n");
-      print_strings (r);
+    r = guestfs_write_file (g, "/new", "\n\n", 0);
+    if (r == -1)
       return -1;
-    }
-    if (strcmp (r[0], "/dev/sda1") != 0) {
-      fprintf (stderr, "test_mounts_0: expected \"/dev/sda1\" but got \"%s\"\n", r[0]);
+  }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_cat (g, "/new");
+    if (r == NULL)
       return -1;
-    }
-    if (r[1] != NULL) {
-      fprintf (stderr, "test_mounts_0: extra elements returned from command\n");
-      print_strings (r);
+    if (strcmp (r, "\n\n") != 0) {
+      fprintf (stderr, "test_write_file_2: expected \"\n\n\" but got \"%s\"\n", r);
       return -1;
     }
-    for (i = 0; r[i] != NULL; ++i)
-      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_umount_0 (void)
+static int test_write_file_3 (void)
 {
-  /* InitEmpty for umount (0) */
+  /* InitBasicFS for write_file (3): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -939,7 +1792,6 @@ static int test_umount_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for umount (0) */
   {
     char *lines[] = {
       ",",
@@ -965,37 +1817,32 @@ static int test_umount_0 (void)
     if (r == -1)
       return -1;
   }
+  /* TestOutput for write_file (3) */
   {
-    char **r;
-    int i;
+    int r;
     suppress_error = 0;
-    r = guestfs_mounts (g);
-    if (r == NULL)
-      return -1;
-    if (!r[0]) {
-      fprintf (stderr, "test_umount_0: short list returned from command\n");
-      print_strings (r);
+    r = guestfs_write_file (g, "/new", "", 0);
+    if (r == -1)
       return -1;
-    }
-    if (strcmp (r[0], "/dev/sda1") != 0) {
-      fprintf (stderr, "test_umount_0: expected \"/dev/sda1\" but got \"%s\"\n", r[0]);
+  }
+  {
+    char *r;
+    suppress_error = 0;
+    r = guestfs_cat (g, "/new");
+    if (r == NULL)
       return -1;
-    }
-    if (r[1] != NULL) {
-      fprintf (stderr, "test_umount_0: extra elements returned from command\n");
-      print_strings (r);
+    if (strcmp (r, "") != 0) {
+      fprintf (stderr, "test_write_file_3: expected \"\" but got \"%s\"\n", r);
       return -1;
     }
-    for (i = 0; r[i] != NULL; ++i)
-      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_umount_1 (void)
+static int test_write_file_4 (void)
 {
-  /* InitEmpty for umount (1) */
+  /* InitBasicFS for write_file (4): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -1010,7 +1857,6 @@ static int test_umount_1 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutputList for umount (1) */
   {
     char *lines[] = {
       ",",
@@ -1036,35 +1882,32 @@ static int test_umount_1 (void)
     if (r == -1)
       return -1;
   }
+  /* TestOutput for write_file (4) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_umount (g, "/");
+    r = guestfs_write_file (g, "/new", "\n\n\n", 0);
     if (r == -1)
       return -1;
   }
   {
-    char **r;
-    int i;
+    char *r;
     suppress_error = 0;
-    r = guestfs_mounts (g);
+    r = guestfs_cat (g, "/new");
     if (r == NULL)
       return -1;
-    if (r[0] != NULL) {
-      fprintf (stderr, "test_umount_1: extra elements returned from command\n");
-      print_strings (r);
+    if (strcmp (r, "\n\n\n") != 0) {
+      fprintf (stderr, "test_write_file_4: expected \"\n\n\n\" but got \"%s\"\n", r);
       return -1;
     }
-    for (i = 0; r[i] != NULL; ++i)
-      free (r[i]);
     free (r);
   }
   return 0;
 }
 
-static int test_write_file_0 (void)
+static int test_write_file_5 (void)
 {
-  /* InitEmpty for write_file (0) */
+  /* InitBasicFS for write_file (5): create ext2 on /dev/sda1 */
   {
     int r;
     suppress_error = 0;
@@ -1079,7 +1922,6 @@ static int test_write_file_0 (void)
     if (r == -1)
       return -1;
   }
-  /* TestOutput for write_file (0) */
   {
     char *lines[] = {
       ",",
@@ -1105,10 +1947,11 @@ static int test_write_file_0 (void)
     if (r == -1)
       return -1;
   }
+  /* TestOutput for write_file (5) */
   {
     int r;
     suppress_error = 0;
-    r = guestfs_write_file (g, "/new", "new file contents", 0);
+    r = guestfs_write_file (g, "/new", "\n", 0);
     if (r == -1)
       return -1;
   }
@@ -1118,8 +1961,8 @@ static int test_write_file_0 (void)
     r = guestfs_cat (g, "/new");
     if (r == NULL)
       return -1;
-    if (strcmp (r, "new file contents") != 0) {
-      fprintf (stderr, "test_write_file_0: expected \"new file contents\" but got \"%s\"\n", r);
+    if (strcmp (r, "\n") != 0) {
+      fprintf (stderr, "test_write_file_5: expected \"\n\" but got \"%s\"\n", r);
       return -1;
     }
     free (r);
@@ -4174,9 +5017,57 @@ int main (int argc, char *argv[])
     exit (1);
   }
 
-  nr_tests = 58;
+  nr_tests = 71;
 
   test_num++;
+  printf ("%3d/%3d test_checksum_0\n", test_num, nr_tests);
+  if (test_checksum_0 () == -1) {
+    printf ("test_checksum_0 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_checksum_1\n", test_num, nr_tests);
+  if (test_checksum_1 () == -1) {
+    printf ("test_checksum_1 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_checksum_2\n", test_num, nr_tests);
+  if (test_checksum_2 () == -1) {
+    printf ("test_checksum_2 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_checksum_3\n", test_num, nr_tests);
+  if (test_checksum_3 () == -1) {
+    printf ("test_checksum_3 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_checksum_4\n", test_num, nr_tests);
+  if (test_checksum_4 () == -1) {
+    printf ("test_checksum_4 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_checksum_5\n", test_num, nr_tests);
+  if (test_checksum_5 () == -1) {
+    printf ("test_checksum_5 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_checksum_6\n", test_num, nr_tests);
+  if (test_checksum_6 () == -1) {
+    printf ("test_checksum_6 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_checksum_7\n", test_num, nr_tests);
+  if (test_checksum_7 () == -1) {
+    printf ("test_checksum_7 FAILED\n");
+    failed++;
+  }
+  test_num++;
   printf ("%3d/%3d test_blockdev_rereadpt_0\n", test_num, nr_tests);
   if (test_blockdev_rereadpt_0 () == -1) {
     printf ("test_blockdev_rereadpt_0 FAILED\n");
@@ -4297,6 +5188,36 @@ int main (int argc, char *argv[])
     failed++;
   }
   test_num++;
+  printf ("%3d/%3d test_write_file_1\n", test_num, nr_tests);
+  if (test_write_file_1 () == -1) {
+    printf ("test_write_file_1 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_write_file_2\n", test_num, nr_tests);
+  if (test_write_file_2 () == -1) {
+    printf ("test_write_file_2 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_write_file_3\n", test_num, nr_tests);
+  if (test_write_file_3 () == -1) {
+    printf ("test_write_file_3 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_write_file_4\n", test_num, nr_tests);
+  if (test_write_file_4 () == -1) {
+    printf ("test_write_file_4 FAILED\n");
+    failed++;
+  }
+  test_num++;
+  printf ("%3d/%3d test_write_file_5\n", test_num, nr_tests);
+  if (test_write_file_5 () == -1) {
+    printf ("test_write_file_5 FAILED\n");
+    failed++;
+  }
+  test_num++;
   printf ("%3d/%3d test_mkfs_0\n", test_num, nr_tests);
   if (test_mkfs_0 () == -1) {
     printf ("test_mkfs_0 FAILED\n");