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

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