]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
added new partmaps test
authorbvk.groups@gmail.com <>
Thu, 9 Sep 2010 15:40:17 +0000 (21:10 +0530)
committerbvk.groups@gmail.com <>
Thu, 9 Sep 2010 15:40:17 +0000 (21:10 +0530)
Makefile.util.def
tests/partmap_test.in [new file with mode: 0644]

index 413c7eed86ba20feb5f45683a660808238bc7a73..b9901ad66188298afad05c939872d57ba670dbd0 100644 (file)
@@ -538,6 +538,12 @@ script = {
   common = tests/grub_script_not.in;
 };
 
+script = {
+  testcase;
+  name = partmap_test;
+  common = tests/partmap_test.in;
+};
+
 program = {
   testcase;
   name = example_unit_test;
diff --git a/tests/partmap_test.in b/tests/partmap_test.in
new file mode 100644 (file)
index 0000000..80b38e5
--- /dev/null
@@ -0,0 +1,259 @@
+#! /bin/sh -e
+
+parted=/sbin/parted
+grubshell=@builddir@/grub-shell
+
+create_disk_image () {
+    name=$1
+    size=$2
+    qemu-img create ${name} ${size} >/dev/null
+}
+
+check_output () {
+    outfile=$1
+    shift
+
+    for disk in $@; do
+       if ! grep "($disk)" ${outfile} >/dev/null
+       then
+           echo "($disk): disk/partiton not found"
+           exit 1
+       fi
+    done
+}
+
+list_parts () {
+    mod=$1;
+    shift;
+    imgfile=$1
+    shift
+    outfile=$1
+    shift
+
+    echo ls | ${grubshell} --boot=cd --qemu-opts="-hda ${imgfile}" \
+       --modules=$mod | tr -d "\n\r" > ${outfile}
+    cat ${outfile}
+    echo
+}
+
+imgfile=`mktemp`
+outfile=`mktemp`
+
+#
+# MSDOS partition types
+#
+
+echo "Checking MSDOS partition types..."
+
+# 0 primary
+create_disk_image ${imgfile} 64M
+${parted} -a none -s ${imgfile} mklabel msdos
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0
+
+# 1 primary
+create_disk_image ${imgfile} 64M
+${parted} -a none -s ${imgfile} mklabel msdos mkpart primary 0 10M 
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,msdos1
+
+# 2 primary
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel msdos mkpart primary 0 10M mkpart primary 10M 20M
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,msdos1 hd0,msdos2
+
+# 3 primary
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel msdos mkpart primary 0 10M mkpart primary 10M 20M mkpart primary 20M 30M
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,msdos1 hd0,msdos2 hd0,msdos3
+
+# 4 primary
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel msdos mkpart primary 0 10M mkpart primary 10M 20M mkpart primary 20M 30M mkpart primary 30M 40M
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,msdos1 hd0,msdos2 hd0,msdos3 hd0,msdos4
+
+# 1 primary, 1 extended
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel msdos mkpart primary 0 10M mkpart primary 10M 20M mkpart extended 20M 100%
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,msdos1
+
+# 1 primary, 1 extended, 1 logical
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel msdos mkpart primary 0 10M mkpart primary 10M 20M mkpart extended 20M 100% mkpart logical 20M 30M
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,msdos1 hd0,msdos5
+
+# 1 primary, 1 extended, 2 logical
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel msdos mkpart primary 0 10M mkpart primary 10M 20M mkpart extended 20M 100% mkpart logical 20M 30M mkpart logical 30M 40M
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,msdos1 hd0,msdos5 hd0,msdos6
+
+# 1 primary, 1 extended, 3 logical
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel msdos mkpart primary 0 10M mkpart primary 10M 20M mkpart extended 20M 100% mkpart logical 20M 30M mkpart logical 30M 40M mkpart logical 40M 50M
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,msdos1 hd0,msdos5 hd0,msdos6 hd0,msdos7
+
+# 1 primary, 1 extended, 4 logical
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel msdos mkpart primary 0 10M mkpart primary 10M 20M mkpart extended 20M 100% mkpart logical 20M 30M mkpart logical 30M 40M mkpart logical 40M 50M mkpart logical 50M 60M
+list_parts part_msdos ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,msdos1 hd0,msdos5 hd0,msdos6 hd0,msdos7 hd0,msdos8
+
+
+#
+# GPT partition types
+#
+
+echo "Checking GPT partition types..."
+
+# 0 parts
+create_disk_image ${imgfile} 64M
+${parted} -a none -s ${imgfile} mklabel gpt
+list_parts part_gpt ${imgfile} ${outfile}
+check_output ${outfile} hd0
+
+# 1 parts
+create_disk_image ${imgfile} 64M
+${parted} -a none -s ${imgfile} mklabel gpt mkpart 1 0 10M 
+list_parts part_gpt ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,gpt1
+
+# 2 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel gpt mkpart 1 0 10M mkpart 2 10M 20M
+list_parts part_gpt ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,gpt1 hd0,gpt2
+
+# 3 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel gpt mkpart 1 0 10M mkpart 2 10M 20M mkpart 3 20M 30M
+list_parts part_gpt ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,gpt1 hd0,gpt2 hd0,gpt3
+
+# 4 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel gpt mkpart 1 0 10M mkpart 2 10M 20M mkpart 4 20M 30M mkpart 5 30M 40M
+list_parts part_gpt ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,gpt1 hd0,gpt2 hd0,gpt3 hd0,gpt4
+
+# 5 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel gpt mkpart 1 0 10M mkpart 2 10M 20M mkpart 3 20M 30M mkpart 4 30M 40M mkpart 5 40M 50M
+list_parts part_gpt ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,gpt1 hd0,gpt2 hd0,gpt3 hd0,gpt4 hd0,gpt5
+
+# 6 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel gpt mkpart 1 0 10M mkpart 2 10M 20M mkpart 3 20M 30M mkpart 4 30M 40M mkpart 5 40M 50M mkpart 6 50M 60M
+list_parts part_gpt ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,gpt1 hd0,gpt2 hd0,gpt3 hd0,gpt4 hd0,gpt5 hd0,gpt6
+
+
+#
+# SUN partition types
+#
+# It seems partition #3 is reserved for whole disk by parted.
+#
+
+echo "Checking SUN partition types..."
+
+# 0 parts
+create_disk_image ${imgfile} 64M
+${parted} -a none -s ${imgfile} mklabel sun
+list_parts part_sun ${imgfile} ${outfile}
+check_output ${outfile} hd0
+
+# 1 parts
+create_disk_image ${imgfile} 64M
+${parted} -a none -s ${imgfile} mklabel sun mkpart 0 10M 
+list_parts part_sun ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,sun1
+
+# 2 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel sun mkpart 0 10M mkpart 10M 20M
+list_parts part_sun ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,sun1 hd0,sun2
+
+# 3 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel sun mkpart 0 10M mkpart 10M 20M mkpart 20M 30M
+list_parts part_sun ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,sun1 hd0,sun2 hd0,sun4
+
+# 4 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel sun mkpart 0 10M mkpart 10M 20M mkpart 20M 30M mkpart 30M 40M
+list_parts part_sun ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,sun1 hd0,sun2 hd0,sun4 hd0,sun5
+
+# 5 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel sun mkpart 0 10M mkpart 10M 20M mkpart 20M 30M mkpart 30M 40M mkpart 40M 50M
+list_parts part_sun ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,sun1 hd0,sun2 hd0,sun4 hd0,sun5 hd0,sun6
+
+# 6 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel sun mkpart 0 10M mkpart 10M 20M mkpart 20M 30M mkpart 30M 40M mkpart 40M 50M mkpart 50M 60M
+list_parts part_sun ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,sun1 hd0,sun2 hd0,sun4 hd0,sun5 hd0,sun6 hd0,sun7
+
+
+#
+# Apple partition types
+#
+# Partition table itself is part of some partition, so there is always
+# a partition by default.  But I don't understand why GRUB displays
+# two partitions by default :-(
+#
+
+echo "Checking APPLE partition types..."
+
+# 0 parts
+create_disk_image ${imgfile} 64M
+${parted} -a none -s ${imgfile} mklabel mac
+list_parts part_apple ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,apple1 hd0,apple2
+
+# 1 parts
+create_disk_image ${imgfile} 64M
+${parted} -a none -s ${imgfile} mklabel mac mkpart a 1M 10M
+list_parts part_apple ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,apple1 hd0,apple2 hd0,apple3
+
+# 2 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel mac mkpart a 1M 10M mkpart b 10M 20M
+list_parts part_apple ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,apple1 hd0,apple2 hd0,apple3 hd0,apple4
+
+# 3 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel mac mkpart a 1M 10M mkpart b 10M 20M mkpart c 20M 30M
+list_parts part_apple ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,apple1 hd0,apple2 hd0,apple4 hd0,apple5
+
+# 4 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel mac mkpart a 1M 10M mkpart b 10M 20M mkpart c 20M 30M mkpart d 30M 40M
+list_parts part_apple ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,apple1 hd0,apple2 hd0,apple4 hd0,apple5 hd0,apple6
+
+# 5 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel mac mkpart a 1M 10M mkpart b 10M 20M mkpart c 20M 30M mkpart d 30M 40M mkpart e 40M 50M
+list_parts part_apple ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,apple1 hd0,apple2 hd0,apple4 hd0,apple5 hd0,apple6 hd0,apple7
+
+# 6 parts
+create_disk_image ${imgfile} 128M
+${parted} -a none -s ${imgfile} mklabel mac mkpart a 1M 10M mkpart b 10M 20M mkpart c 20M 30M mkpart d 30M 40M mkpart e 40M 50M mkpart f 50M 60M
+list_parts part_apple ${imgfile} ${outfile}
+check_output ${outfile} hd0 hd0,apple1 hd0,apple2 hd0,apple4 hd0,apple5 hd0,apple6 hd0,apple7 hd0,apple8