From: bvk.groups@gmail.com <> Date: Thu, 9 Sep 2010 15:54:17 +0000 (+0530) Subject: * tests/partmap_test.in: New test for partitions. X-Git-Tag: 1.99~558 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8901b00c88756d239d9034414c195a78ee83c149;p=thirdparty%2Fgrub.git * tests/partmap_test.in: New test for partitions. * Makefile.util.def: Rules for new test. --- 8901b00c88756d239d9034414c195a78ee83c149 diff --cc ChangeLog index b0354a4fc,b0354a4fc..cd53ca445 --- a/ChangeLog +++ b/ChangeLog @@@ -1,3 -1,3 +1,8 @@@ ++2010-09-09 BVK Chaitanya ++ ++ * tests/partmap_test.in: New test for partitions. ++ * Makefile.util.def: Rules for new test. ++ 2010-09-09 Robert Millan * util/grub-probe.c (probe): Fix a pair of unhandled error diff --cc tests/partmap_test.in index 000000000,80b38e58b..14897e9da mode 000000,100644..100644 --- a/tests/partmap_test.in +++ b/tests/partmap_test.in @@@ -1,0 -1,259 +1,274 @@@ + #! /bin/sh -e ++# ++# Copyright (C) 2010 Free Software Foundation, Inc. ++# ++# GRUB 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. ++# ++# GRUB 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 GRUB. If not, see . + + 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