Please find attached a patch to add a new test for the cloning of disk labels.

I have a feeling that this is leading to too much of duplication of
code. What do you say?

Happy hacking,
Debarshi
--
GPG key ID: 63D4A5A7
Key server: pgp.mit.edu
diff --git a/libparted/tests/label.c b/libparted/tests/label.c
index 6accb91..b654817 100644
--- a/libparted/tests/label.c
+++ b/libparted/tests/label.c
@@ -56,17 +56,69 @@ START_TEST (test_create_label)
 }
 END_TEST
 
+/* TEST: Clone the disk label of a loop device. */
+START_TEST (test_clone_label)
+{
+        PedDevice *dev = ped_device_get (temporary_disk);
+        if (dev == NULL)
+                return;
+
+        PedDiskType *type;
+        PedDisk *clone;
+        PedDisk *disk;
+
+        for (type = ped_disk_type_get_next (NULL); type;
+             type = ped_disk_type_get_next (type)) {
+
+                /* Not implemented yet. */
+                if (strncmp (type->name, "aix", 3) == 0
+                    || strncmp (type->name, "dvh", 3) == 0)
+                        continue;
+
+                /* Create the disk label. */
+                disk = ped_disk_new_fresh (dev, type);
+                fail_if (!disk, "Failed to create a label of type: %s",
+                         type->name);
+                fail_if (!ped_disk_commit(disk),
+                         "Failed to commit label to device");
+                ped_disk_destroy (disk);
+
+                /* Try to read the disk label. */
+                disk = ped_disk_new (dev);
+                fail_if (!disk,
+                         "Failed to read the just created label of type: %s",
+                         type->name);
+
+                /* Try to clone the disk label. */
+                clone = ped_disk_duplicate (disk);
+                fail_if (!clone,
+                         "Failed to clone the just created label of type: %s",
+                         type->name);
+
+                ped_disk_destroy (clone);
+                ped_disk_destroy (disk);
+        }
+        ped_device_destroy (dev);
+}
+END_TEST
+
 int main(void)
 {
         int number_failed;
         Suite *suite = suite_create("Disk Label");
         TCase *tcase_basic = tcase_create("Create");
+        TCase *tcase_clone = tcase_create ("Clone");
 
         tcase_add_checked_fixture(tcase_basic, create_disk, destroy_disk);
         tcase_add_test(tcase_basic, test_create_label);
         tcase_set_timeout(tcase_basic, 0); /* disable timeout for this tests */
         suite_add_tcase(suite, tcase_basic);
 
+        tcase_add_checked_fixture (tcase_clone, create_disk, destroy_disk);
+        tcase_add_test (tcase_clone, test_clone_label);
+        tcase_set_timeout (tcase_clone, 0); /* disable timeout for this test */
+        suite_add_tcase (suite, tcase_clone);
+
         SRunner *srunner = srunner_create(suite);
         srunner_run_all(srunner, CK_VERBOSE);
 
_______________________________________________
parted-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/parted-devel

Reply via email to