summaryrefslogtreecommitdiffstats
path: root/tests.c
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2009-04-30 17:23:57 +0100
committerRichard Jones <rjones@redhat.com>2009-04-30 17:25:14 +0100
commite4733575efff31742444b180cdcfbc2504b144c8 (patch)
tree353bcf493a356fd36470ef5673038f3207f096b1 /tests.c
parent41b959fd9b057354f642d84398b875d02b88b864 (diff)
downloadlibguestfs-e4733575efff31742444b180cdcfbc2504b144c8.tar.gz
libguestfs-e4733575efff31742444b180cdcfbc2504b144c8.tar.xz
libguestfs-e4733575efff31742444b180cdcfbc2504b144c8.zip
Fix umount_all command so it unmounts filesystems in the correct order.
Diffstat (limited to 'tests.c')
-rw-r--r--tests.c128
1 files changed, 127 insertions, 1 deletions
diff --git a/tests.c b/tests.c
index 2c30596a..9a45cced 100644
--- a/tests.c
+++ b/tests.c
@@ -2744,6 +2744,126 @@ static int test_umount_all_0 (void)
return 0;
}
+static int test_umount_all_1 (void)
+{
+ /* InitEmpty for umount_all (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 umount_all (1) */
+ {
+ char *lines[] = {
+ ",10",
+ ",20",
+ ",",
+ 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_mkfs (g, "ext2", "/dev/sda2");
+ if (r == -1)
+ return -1;
+ }
+ {
+ int r;
+ suppress_error = 0;
+ r = guestfs_mkfs (g, "ext2", "/dev/sda3");
+ if (r == -1)
+ return -1;
+ }
+ {
+ int r;
+ suppress_error = 0;
+ r = guestfs_mount (g, "/dev/sda1", "/");
+ if (r == -1)
+ return -1;
+ }
+ {
+ int r;
+ suppress_error = 0;
+ r = guestfs_mkdir (g, "/mp1");
+ if (r == -1)
+ return -1;
+ }
+ {
+ int r;
+ suppress_error = 0;
+ r = guestfs_mount (g, "/dev/sda2", "/mp1");
+ if (r == -1)
+ return -1;
+ }
+ {
+ int r;
+ suppress_error = 0;
+ r = guestfs_mkdir (g, "/mp1/mp2");
+ if (r == -1)
+ return -1;
+ }
+ {
+ int r;
+ suppress_error = 0;
+ r = guestfs_mount (g, "/dev/sda3", "/mp1/mp2");
+ if (r == -1)
+ return -1;
+ }
+ {
+ int r;
+ suppress_error = 0;
+ r = guestfs_mkdir (g, "/mp1/mp2/mp3");
+ if (r == -1)
+ return -1;
+ }
+ {
+ int r;
+ suppress_error = 0;
+ r = guestfs_umount_all (g);
+ if (r == -1)
+ return -1;
+ }
+ {
+ char **r;
+ int i;
+ suppress_error = 0;
+ r = guestfs_mounts (g);
+ if (r == NULL)
+ return -1;
+ if (r[0] != NULL) {
+ fprintf (stderr, "test_umount_all_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_mounts_0 (void)
{
/* InitBasicFS for mounts (0): create ext2 on /dev/sda1 */
@@ -6393,7 +6513,7 @@ int main (int argc, char *argv[])
exit (1);
}
- nr_tests = 90;
+ nr_tests = 91;
test_num++;
printf ("%3d/%3d test_set_e2uuid_0\n", test_num, nr_tests);
@@ -6654,6 +6774,12 @@ int main (int argc, char *argv[])
failed++;
}
test_num++;
+ printf ("%3d/%3d test_umount_all_1\n", test_num, nr_tests);
+ if (test_umount_all_1 () == -1) {
+ printf ("test_umount_all_1 FAILED\n");
+ failed++;
+ }
+ test_num++;
printf ("%3d/%3d test_mounts_0\n", test_num, nr_tests);
if (test_mounts_0 () == -1) {
printf ("test_mounts_0 FAILED\n");