X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=capitests%2Ftests.c;h=6713a2d630468ab4a372b9df0a9f80e7a218a87d;hp=5d9459803b76c48a1b46acbb2528a1f4fc09cf59;hb=460d139e6a52da67a4f1947035b1978610349f78;hpb=e2206733d1287f5809dbde954f3eb64420471b0d diff --git a/capitests/tests.c b/capitests/tests.c index 5d94598..6713a2d 100644 --- a/capitests/tests.c +++ b/capitests/tests.c @@ -62,11 +62,39 @@ static void print_table (char * const * const argv) static void no_test_warnings (void) { + fprintf (stderr, "warning: \"guestfs_test0\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rint\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rinterr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rint64\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rint64err\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rbool\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rboolerr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rconststring\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rconststringerr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rstring\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rstringerr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rstringlist\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rstringlisterr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rintbool\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rintboolerr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rpvlist\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rpvlisterr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rvglist\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rvglisterr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rlvlist\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rlvlisterr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rstat\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rstaterr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rstatvfs\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rstatvfserr\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rhashtable\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_test0rhashtableerr\" has no tests\n"); fprintf (stderr, "warning: \"guestfs_launch\" has no tests\n"); fprintf (stderr, "warning: \"guestfs_wait_ready\" has no tests\n"); fprintf (stderr, "warning: \"guestfs_kill_subprocess\" has no tests\n"); fprintf (stderr, "warning: \"guestfs_add_drive\" has no tests\n"); fprintf (stderr, "warning: \"guestfs_add_cdrom\" has no tests\n"); + fprintf (stderr, "warning: \"guestfs_add_drive_ro\" has no tests\n"); fprintf (stderr, "warning: \"guestfs_config\" has no tests\n"); fprintf (stderr, "warning: \"guestfs_set_qemu\" has no tests\n"); fprintf (stderr, "warning: \"guestfs_get_qemu\" has no tests\n"); @@ -127,6 +155,225 @@ static void no_test_warnings (void) fprintf (stderr, "warning: \"guestfs_e2fsck_f\" has no tests\n"); } +static int test_ntfs_3g_probe_0_skip (void) +{ + const char *str; + + str = getenv ("SKIP_TEST_NTFS_3G_PROBE_0"); + if (str && strcmp (str, "1") == 0) return 1; + str = getenv ("SKIP_TEST_NTFS_3G_PROBE"); + if (str && strcmp (str, "1") == 0) return 1; + return 0; +} + +static int test_ntfs_3g_probe_0 (void) +{ + if (test_ntfs_3g_probe_0_skip ()) { + printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_ntfs_3g_probe_0"); + return 0; + } + + /* InitNone|InitEmpty for test_ntfs_3g_probe_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 ntfs_3g_probe (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 fstype[] = "ntfs"; + 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; + int r; + suppress_error = 0; + r = guestfs_ntfs_3g_probe (g, 1, device); + if (r == -1) + return -1; + if (r != 0) { + fprintf (stderr, "test_ntfs_3g_probe_0: expected 0 but got %d\n", (int) r); + return -1; + } + } + return 0; +} + +static int test_ntfs_3g_probe_1_skip (void) +{ + const char *str; + + str = getenv ("SKIP_TEST_NTFS_3G_PROBE_1"); + if (str && strcmp (str, "1") == 0) return 1; + str = getenv ("SKIP_TEST_NTFS_3G_PROBE"); + if (str && strcmp (str, "1") == 0) return 1; + return 0; +} + +static int test_ntfs_3g_probe_1 (void) +{ + if (test_ntfs_3g_probe_1_skip ()) { + printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_ntfs_3g_probe_1"); + return 0; + } + + /* InitNone|InitEmpty for test_ntfs_3g_probe_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; + } + /* TestOutputInt for ntfs_3g_probe (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; + int r; + suppress_error = 0; + r = guestfs_ntfs_3g_probe (g, 1, device); + if (r == -1) + return -1; + if (r != 12) { + fprintf (stderr, "test_ntfs_3g_probe_1: expected 12 but got %d\n", (int) r); + return -1; + } + } + return 0; +} + +static int test_sleep_0_skip (void) +{ + const char *str; + + str = getenv ("SKIP_TEST_SLEEP_0"); + if (str && strcmp (str, "1") == 0) return 1; + str = getenv ("SKIP_TEST_SLEEP"); + if (str && strcmp (str, "1") == 0) return 1; + return 0; +} + +static int test_sleep_0 (void) +{ + if (test_sleep_0_skip ()) { + printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_sleep_0"); + return 0; + } + + /* InitNone|InitEmpty for test_sleep_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 sleep (0) */ + { + int r; + suppress_error = 0; + r = guestfs_sleep (g, 1); + if (r == -1) + return -1; + } + return 0; +} + static int test_find_0_skip (void) { const char *str; @@ -4762,7 +5009,7 @@ static int test_tgz_in_0 (void) char directory[] = "/"; int r; suppress_error = 0; - r = guestfs_tgz_in (g, "images/helloworld.tar.gz", directory); + r = guestfs_tgz_in (g, "../images/helloworld.tar.gz", directory); if (r == -1) return -1; } @@ -4864,7 +5111,7 @@ static int test_tar_in_0 (void) char directory[] = "/"; int r; suppress_error = 0; - r = guestfs_tar_in (g, "images/helloworld.tar", directory); + r = guestfs_tar_in (g, "../images/helloworld.tar", directory); if (r == -1) return -1; } @@ -5702,6 +5949,111 @@ static int test_checksum_7 (void) return 0; } +static int test_checksum_8_skip (void) +{ + const char *str; + + str = getenv ("SKIP_TEST_CHECKSUM_8"); + 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_8 (void) +{ + if (test_checksum_8_skip ()) { + printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_checksum_8"); + return 0; + } + + /* InitBasicFS for test_checksum_8: 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 (8) */ + char expected[] = "46d6ca27ee07cdc6fa99c2e138cc522c"; + { + char device[] = "/dev/sdd"; + device[5] = devchar; + char mountpoint[] = "/"; + int r; + suppress_error = 0; + r = guestfs_mount (g, device, mountpoint); + if (r == -1) + return -1; + } + { + char csumtype[] = "md5"; + char path[] = "/known-3"; + 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_8: expected \"%s\" but got \"%s\"\n", expected, r); + return -1; + } + free (r); + } + return 0; +} + static int test_download_0_skip (void) { const char *str; @@ -5784,7 +6136,7 @@ static int test_download_0 (void) char remotefilename[] = "/COPYING.LIB"; int r; suppress_error = 0; - r = guestfs_upload (g, "COPYING.LIB", remotefilename); + r = guestfs_upload (g, "../COPYING.LIB", remotefilename); if (r == -1) return -1; } @@ -5903,7 +6255,7 @@ static int test_upload_0 (void) char remotefilename[] = "/COPYING.LIB"; int r; suppress_error = 0; - r = guestfs_upload (g, "COPYING.LIB", remotefilename); + r = guestfs_upload (g, "../COPYING.LIB", remotefilename); if (r == -1) return -1; } @@ -12778,6 +13130,198 @@ static int test_mkdir_p_2 (void) return 0; } +static int test_mkdir_p_3_skip (void) +{ + const char *str; + + str = getenv ("SKIP_TEST_MKDIR_P_3"); + 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_3 (void) +{ + if (test_mkdir_p_3_skip ()) { + printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mkdir_p_3"); + return 0; + } + + /* InitBasicFS for test_mkdir_p_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; + } + /* TestRun for mkdir_p (3) */ + { + char path[] = "/new"; + int r; + suppress_error = 0; + r = guestfs_mkdir (g, path); + if (r == -1) + return -1; + } + { + char path[] = "/new"; + int r; + suppress_error = 0; + r = guestfs_mkdir_p (g, path); + if (r == -1) + return -1; + } + return 0; +} + +static int test_mkdir_p_4_skip (void) +{ + const char *str; + + str = getenv ("SKIP_TEST_MKDIR_P_4"); + 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_4 (void) +{ + if (test_mkdir_p_4_skip ()) { + printf ("%s skipped (reason: SKIP_TEST_* variable set)\n", "test_mkdir_p_4"); + return 0; + } + + /* InitBasicFS for test_mkdir_p_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; + } + /* TestLastFail for mkdir_p (4) */ + { + char path[] = "/new"; + int r; + suppress_error = 0; + r = guestfs_touch (g, path); + if (r == -1) + return -1; + } + { + char path[] = "/new"; + int r; + suppress_error = 1; + r = guestfs_mkdir_p (g, path); + if (r != -1) + return -1; + } + return 0; +} + static int test_mkdir_0_skip (void) { const char *str; @@ -15139,7 +15683,20 @@ static int test_list_devices_0 (void) return -1; } } - if (r[3] != NULL) { + if (!r[3]) { + fprintf (stderr, "test_list_devices_0: short list returned from command\n"); + print_strings (r); + return -1; + } + { + char expected[] = "/dev/sdd"; + expected[5] = devchar; + if (strcmp (r[3], expected) != 0) { + fprintf (stderr, "test_list_devices_0: expected \"%s\" but got \"%s\"\n", expected, r[3]); + return -1; + } + } + if (r[4] != NULL) { fprintf (stderr, "test_list_devices_0: extra elements returned from command\n"); print_strings (r); return -1; @@ -15683,7 +16240,6 @@ int main (int argc, char *argv[]) { char c = 0; int failed = 0; - const char *srcdir; const char *filename; int fd, i; int nr_tests, test_num = 0; @@ -15785,6 +16341,11 @@ int main (int argc, char *argv[]) exit (1); } + if (guestfs_add_drive_ro (g, "../images/test.sqsh") == -1) { + printf ("guestfs_add_drive_ro ../images/test.sqsh FAILED\n"); + exit (1); + } + if (guestfs_launch (g) == -1) { printf ("guestfs_launch FAILED\n"); exit (1); @@ -15816,9 +16377,27 @@ int main (int argc, char *argv[]) free (devs[i]); free (devs); - nr_tests = 140; + nr_tests = 146; test_num++; + printf ("%3d/%3d test_ntfs_3g_probe_0\n", test_num, nr_tests); + if (test_ntfs_3g_probe_0 () == -1) { + printf ("test_ntfs_3g_probe_0 FAILED\n"); + failed++; + } + test_num++; + printf ("%3d/%3d test_ntfs_3g_probe_1\n", test_num, nr_tests); + if (test_ntfs_3g_probe_1 () == -1) { + printf ("test_ntfs_3g_probe_1 FAILED\n"); + failed++; + } + test_num++; + printf ("%3d/%3d test_sleep_0\n", test_num, nr_tests); + if (test_sleep_0 () == -1) { + printf ("test_sleep_0 FAILED\n"); + failed++; + } + test_num++; printf ("%3d/%3d test_find_0\n", test_num, nr_tests); if (test_find_0 () == -1) { printf ("test_find_0 FAILED\n"); @@ -16125,6 +16704,12 @@ int main (int argc, char *argv[]) failed++; } test_num++; + printf ("%3d/%3d test_checksum_8\n", test_num, nr_tests); + if (test_checksum_8 () == -1) { + printf ("test_checksum_8 FAILED\n"); + failed++; + } + test_num++; printf ("%3d/%3d test_download_0\n", test_num, nr_tests); if (test_download_0 () == -1) { printf ("test_download_0 FAILED\n"); @@ -16509,6 +17094,18 @@ int main (int argc, char *argv[]) failed++; } test_num++; + printf ("%3d/%3d test_mkdir_p_3\n", test_num, nr_tests); + if (test_mkdir_p_3 () == -1) { + printf ("test_mkdir_p_3 FAILED\n"); + failed++; + } + test_num++; + printf ("%3d/%3d test_mkdir_p_4\n", test_num, nr_tests); + if (test_mkdir_p_4 () == -1) { + printf ("test_mkdir_p_4 FAILED\n"); + failed++; + } + test_num++; printf ("%3d/%3d test_mkdir_0\n", test_num, nr_tests); if (test_mkdir_0 () == -1) { printf ("test_mkdir_0 FAILED\n");