Blame SOURCES/0050-tests-t3310-flags.sh-Add-test-for-mac-table-flags.patch

003ee8
From 81b397bbc9eb270ef0b3ed52d40c3a76ecd9ac80 Mon Sep 17 00:00:00 2001
003ee8
From: Mike Fleetwood <mike.fleetwood@googlemail.com>
003ee8
Date: Sat, 1 Oct 2016 16:40:21 +0100
003ee8
Subject: [PATCH 50/53] tests: t3310-flags.sh: Add test for mac table flags
003ee8
003ee8
MAC partition table reserves partition 1 for the partition map
003ee8
partition, so the created test partition will be number 2.  Adapt
003ee8
accordingly.
003ee8
003ee8
Setting flags 'root' and 'swap' also sets the partition name to 'root'
003ee8
and 'swap' respectively, so no longer match the partition name in
003ee8
extract_flags().
003ee8
003ee8
Don't test lvm and raid flags as they fail to be cleared with a single
003ee8
set off command.  See FIXME comment in the test for more details.
003ee8
003ee8
Signed-off-by: Brian C. Lane <bcl@redhat.com>
003ee8
---
003ee8
 tests/print-flags.c  | 12 +++++++-----
003ee8
 tests/t3310-flags.sh | 27 ++++++++++++++++++++++-----
003ee8
 2 files changed, 29 insertions(+), 10 deletions(-)
003ee8
003ee8
diff --git a/tests/print-flags.c b/tests/print-flags.c
003ee8
index 3176ca6..db088e8 100644
003ee8
--- a/tests/print-flags.c
003ee8
+++ b/tests/print-flags.c
003ee8
@@ -12,11 +12,12 @@ main (int argc, char **argv)
003ee8
 	PedDevice *dev;
003ee8
 	PedDisk *disk;
003ee8
 	PedPartition *part;
003ee8
+	int partnum;
003ee8
 
003ee8
 	set_program_name (argv[0]);
003ee8
 
003ee8
-	if (argc != 2 ) {
003ee8
-		fprintf (stderr, "Usage: %s <device>\n", argv[0]);
003ee8
+	if (argc != 3 ) {
003ee8
+		fprintf (stderr, "Usage: %s <device> <ptnnum>\n", argv[0]);
003ee8
 		return EXIT_FAILURE;
003ee8
 	}
003ee8
 
003ee8
@@ -38,11 +39,12 @@ main (int argc, char **argv)
003ee8
 		return EXIT_FAILURE;
003ee8
 	}
003ee8
 
003ee8
-	part = ped_disk_get_partition (disk, 1);
003ee8
+	partnum = atoi (argv[2]);
003ee8
+	part = ped_disk_get_partition (disk, partnum);
003ee8
 	if (!part) {
003ee8
 		fprintf (stderr,
003ee8
-		         "Error: failed to get partition 1 from device %s\n",
003ee8
-		         argv[1]);
003ee8
+		         "Error: failed to get partition %d from device %s\n",
003ee8
+		         partnum, argv[1]);
003ee8
 		return EXIT_FAILURE;
003ee8
 	}
003ee8
 
003ee8
diff --git a/tests/t3310-flags.sh b/tests/t3310-flags.sh
003ee8
index 3f80213..672160d 100644
003ee8
--- a/tests/t3310-flags.sh
003ee8
+++ b/tests/t3310-flags.sh
003ee8
@@ -22,16 +22,22 @@ dev=dev-file
003ee8
 
003ee8
 extract_flags()
003ee8
 {
003ee8
-  perl -nle '/^1:2048s:4095s:2048s::(?:PTNNAME)?:(.+);$/ and print $1' "$@"
003ee8
+  perl -nle '/^[^:]*:2048s:4095s:2048s::[^:]*:(.+);$/ and print $1' "$@"
003ee8
 }
003ee8
 
003ee8
-for table_type in bsd gpt msdos; do
003ee8
+for table_type in bsd gpt mac msdos; do
003ee8
+  ptn_num=1
003ee8
 
003ee8
   case $table_type in
003ee8
     bsd)   primary_or_name=''
003ee8
            ;;
003ee8
     gpt)   primary_or_name='PTNNAME'
003ee8
            ;;
003ee8
+    mac)   primary_or_name='PTNNAME'
003ee8
+           # MAC table has the partition map partition as the first
003ee8
+           # partition so the created test partition will be number 2.
003ee8
+           ptn_num=2
003ee8
+           ;;
003ee8
     msdos) primary_or_name='primary'
003ee8
            ;;
003ee8
   esac
003ee8
@@ -45,14 +51,25 @@ for table_type in bsd gpt msdos; do
003ee8
   compare /dev/null out || fail=1
003ee8
 
003ee8
   # Query libparted for the available flags for this test partition.
003ee8
-  flags=`print-flags $dev` \
003ee8
+  flags=`print-flags $dev $ptn_num` \
003ee8
     || { warn_ "$ME_: $table_type: failed to get available flags";
003ee8
          fail=1; continue; }
003ee8
+  case $table_type in
003ee8
+    mac)   # FIXME: Setting root or swap flags also sets the partition
003ee8
+           # name to root or swap respectively.  Probably intended
003ee8
+           # behaviour.  Setting lvm or raid flags after root or swap
003ee8
+           # takes two goes to clear the lvm or raid flag.  Is this
003ee8
+           # intended?  For now don't test lvm or raid flags as this
003ee8
+           # test only tries to clear the flags once which causes this
003ee8
+           # test to fail.
003ee8
+           flags=`echo "$flags" | egrep -v 'lvm|raid'`
003ee8
+           ;;
003ee8
+  esac
003ee8
 
003ee8
   for mode in on_only on_and_off ; do
003ee8
     for flag in $flags; do
003ee8
       # Turn on each flag, one at a time.
003ee8
-      parted -m -s $dev set 1 $flag on unit s print > raw 2> err || fail=1
003ee8
+      parted -m -s $dev set $ptn_num $flag on unit s print > raw 2> err || fail=1
003ee8
       extract_flags raw > out
003ee8
       grep -w "$flag" out \
003ee8
         || { warn_ "$ME_: $table_type: flag '$flag' not turned on: $(cat out)"; fail=1; }
003ee8
@@ -60,7 +77,7 @@ for table_type in bsd gpt msdos; do
003ee8
 
003ee8
       if test $mode = on_and_off; then
003ee8
         # Turn it off
003ee8
-        parted -m -s $dev set 1 $flag off unit s print > raw 2> err || fail=1
003ee8
+        parted -m -s $dev set $ptn_num $flag off unit s print > raw 2> err || fail=1
003ee8
         extract_flags raw > out
003ee8
         grep -w "$flag" out \
003ee8
           && { warn_ "$ME_: $table_type: flag '$flag' not turned off: $(cat out)"; fail=1; }
003ee8
-- 
003ee8
2.7.4
003ee8