161 lines
5.1 KiB
Diff
161 lines
5.1 KiB
Diff
|
From 14cf5be3d322d7e3e81c21a3542ae046a5fe1fda Mon Sep 17 00:00:00 2001
|
||
|
From: "Brian C. Lane" <bcl@redhat.com>
|
||
|
Date: Mon, 8 Aug 2022 13:49:09 -0700
|
||
|
Subject: [PATCH 08/10] tests: Add a libparted test for
|
||
|
ped_partition_set_system on gpt
|
||
|
|
||
|
Test the libparted API to make sure the flag is not cleared by calling
|
||
|
ped_partition_set_system.
|
||
|
---
|
||
|
libparted/tests/Makefile.am | 6 ++-
|
||
|
libparted/tests/flags.c | 81 ++++++++++++++++++++++++++++++++++
|
||
|
libparted/tests/t1001-flags.sh | 23 ++++++++++
|
||
|
3 files changed, 108 insertions(+), 2 deletions(-)
|
||
|
create mode 100644 libparted/tests/flags.c
|
||
|
create mode 100755 libparted/tests/t1001-flags.sh
|
||
|
|
||
|
diff --git a/libparted/tests/Makefile.am b/libparted/tests/Makefile.am
|
||
|
index fd5cba5..260b692 100644
|
||
|
--- a/libparted/tests/Makefile.am
|
||
|
+++ b/libparted/tests/Makefile.am
|
||
|
@@ -3,9 +3,10 @@
|
||
|
#
|
||
|
# This file may be modified and/or distributed without restriction.
|
||
|
|
||
|
-TESTS = t1000-label.sh t2000-disk.sh t2100-zerolen.sh t3000-symlink.sh t4000-volser.sh
|
||
|
+TESTS = t1000-label.sh t1001-flags.sh t2000-disk.sh t2100-zerolen.sh \
|
||
|
+ t3000-symlink.sh t4000-volser.sh
|
||
|
EXTRA_DIST = $(TESTS)
|
||
|
-check_PROGRAMS = label disk zerolen symlink volser
|
||
|
+check_PROGRAMS = label disk zerolen symlink volser flags
|
||
|
AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
|
||
|
|
||
|
LDADD = \
|
||
|
@@ -24,6 +25,7 @@ disk_SOURCES = common.h common.c disk.c
|
||
|
zerolen_SOURCES = common.h common.c zerolen.c
|
||
|
symlink_SOURCES = common.h common.c symlink.c
|
||
|
volser_SOURCES = common.h common.c volser.c
|
||
|
+flags_SOURCES = common.h common.c flags.c
|
||
|
|
||
|
# Arrange to symlink to tests/init.sh.
|
||
|
CLEANFILES = init.sh
|
||
|
diff --git a/libparted/tests/flags.c b/libparted/tests/flags.c
|
||
|
new file mode 100644
|
||
|
index 0000000..c83a361
|
||
|
--- /dev/null
|
||
|
+++ b/libparted/tests/flags.c
|
||
|
@@ -0,0 +1,81 @@
|
||
|
+#include <config.h>
|
||
|
+#include <unistd.h>
|
||
|
+
|
||
|
+#include <check.h>
|
||
|
+
|
||
|
+#include <parted/parted.h>
|
||
|
+
|
||
|
+#include "common.h"
|
||
|
+#include "progname.h"
|
||
|
+
|
||
|
+#define STREQ(a, b) (strcmp (a, b) == 0)
|
||
|
+
|
||
|
+static char* temporary_disk;
|
||
|
+
|
||
|
+static void
|
||
|
+create_disk (void)
|
||
|
+{
|
||
|
+ temporary_disk = _create_disk (80 * 1024 * 1024);
|
||
|
+ fail_if (temporary_disk == NULL, "Failed to create temporary disk");
|
||
|
+}
|
||
|
+
|
||
|
+static void
|
||
|
+destroy_disk (void)
|
||
|
+{
|
||
|
+ unlink (temporary_disk);
|
||
|
+ free (temporary_disk);
|
||
|
+}
|
||
|
+
|
||
|
+/* TEST: Test partition type flag on gpt disklabel */
|
||
|
+START_TEST (test_gpt_flag)
|
||
|
+{
|
||
|
+ PedDevice* dev = ped_device_get (temporary_disk);
|
||
|
+ if (dev == NULL)
|
||
|
+ return;
|
||
|
+
|
||
|
+ PedDisk* disk = ped_disk_new_fresh (dev, ped_disk_type_get ("gpt"));
|
||
|
+ PedConstraint *constraint = ped_constraint_any (dev);
|
||
|
+ PedPartition *part = ped_partition_new (disk, PED_PARTITION_NORMAL,
|
||
|
+ ped_file_system_type_get("ext4"), 2048, 4096);
|
||
|
+ ped_partition_set_flag(part, PED_PARTITION_BIOS_GRUB, 1);
|
||
|
+ // Type should remain set to BIOS_GRUB
|
||
|
+ ped_partition_set_system(part, ped_file_system_type_get("ext4"));
|
||
|
+
|
||
|
+ ped_disk_add_partition (disk, part, constraint);
|
||
|
+ ped_disk_commit (disk);
|
||
|
+ ped_constraint_destroy (constraint);
|
||
|
+
|
||
|
+ // Check flag to confirm it is still set
|
||
|
+ part = ped_disk_get_partition (disk, 1);
|
||
|
+ fail_if (ped_partition_get_flag(part, PED_PARTITION_BIOS_GRUB) != 1, "BIOS_GRUB flag not set");
|
||
|
+
|
||
|
+ ped_disk_destroy (disk);
|
||
|
+ ped_device_destroy (dev);
|
||
|
+}
|
||
|
+END_TEST
|
||
|
+
|
||
|
+int
|
||
|
+main (int argc, char **argv)
|
||
|
+{
|
||
|
+ set_program_name (argv[0]);
|
||
|
+ int number_failed;
|
||
|
+ Suite* suite = suite_create ("Partition Flags");
|
||
|
+ TCase* tcase_gpt = tcase_create ("GPT");
|
||
|
+
|
||
|
+ /* Fail when an exception is raised */
|
||
|
+ ped_exception_set_handler (_test_exception_handler);
|
||
|
+
|
||
|
+ tcase_add_checked_fixture (tcase_gpt, create_disk, destroy_disk);
|
||
|
+ tcase_add_test (tcase_gpt, test_gpt_flag);
|
||
|
+ /* Disable timeout for this test */
|
||
|
+ tcase_set_timeout (tcase_gpt, 0);
|
||
|
+ suite_add_tcase (suite, tcase_gpt);
|
||
|
+
|
||
|
+ SRunner* srunner = srunner_create (suite);
|
||
|
+ srunner_run_all (srunner, CK_VERBOSE);
|
||
|
+
|
||
|
+ number_failed = srunner_ntests_failed (srunner);
|
||
|
+ srunner_free (srunner);
|
||
|
+
|
||
|
+ return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||
|
+}
|
||
|
diff --git a/libparted/tests/t1001-flags.sh b/libparted/tests/t1001-flags.sh
|
||
|
new file mode 100755
|
||
|
index 0000000..60a6248
|
||
|
--- /dev/null
|
||
|
+++ b/libparted/tests/t1001-flags.sh
|
||
|
@@ -0,0 +1,23 @@
|
||
|
+#!/bin/sh
|
||
|
+# run the flags unittest
|
||
|
+
|
||
|
+# Copyright (C) 2007-2014, 2019-2022 Free Software Foundation, Inc.
|
||
|
+
|
||
|
+# This program is free software; you can redistribute it and/or modify
|
||
|
+# it under the terms of the GNU General Public License as published by
|
||
|
+# the Free Software Foundation; either version 3 of the License, or
|
||
|
+# (at your option) any later version.
|
||
|
+
|
||
|
+# This program is distributed in the hope that it will be useful,
|
||
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
+# GNU General Public License for more details.
|
||
|
+
|
||
|
+# You should have received a copy of the GNU General Public License
|
||
|
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
+
|
||
|
+. "${top_srcdir=../..}/tests/init.sh"; path_prepend_ .
|
||
|
+
|
||
|
+flags || fail=1
|
||
|
+
|
||
|
+Exit $fail
|
||
|
--
|
||
|
2.37.1
|
||
|
|