* tests/t2300-dos-label-extended-bootcode.sh: New file. * tests/Makefile.am (TESTS): Add t2300-dos-label-extended-bootcode.sh.
Signed-off-by: Petr Uzel <[email protected]> --- tests/Makefile.am | 1 + tests/t2300-dos-label-extended-bootcode.sh | 86 ++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 0 deletions(-) create mode 100755 tests/t2300-dos-label-extended-bootcode.sh diff --git a/tests/Makefile.am b/tests/Makefile.am index 0beedd4..f2de6a6 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -10,6 +10,7 @@ TESTS = \ t2000-mkfs.sh \ t2100-mkswap.sh \ t2200-dos-label-recog.sh \ + t2300-dos-label-extended-bootcode.sh \ t3000-constraints.sh \ t3100-resize-ext2-partion.sh \ t4000-sun-raid-type.sh \ diff --git a/tests/t2300-dos-label-extended-bootcode.sh b/tests/t2300-dos-label-extended-bootcode.sh new file mode 100755 index 0000000..5247907 --- /dev/null +++ b/tests/t2300-dos-label-extended-bootcode.sh @@ -0,0 +1,86 @@ +#!/bin/sh + +# Copyright (C) 2009 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/>. + +test_description='Make sure that parted preserves bootcode in extended partition.' + +: ${srcdir=.} +. $srcdir/test-lib.sh + + +N=10M +prim_part_size=5M +dev=loop-file +bootcode=bootcode +bootcode_size=440 +bootcode_before=bootcode_before +bootcode_after=bootcode_after + + +test_expect_success \ + 'Create the test file' \ + 'dd if=/dev/null of=$dev bs=1 seek=$N 2>/dev/null' + +test_expect_success \ + 'Create msdos label' \ + 'parted -s $dev mklabel msdos > out 2>&1' +test_expect_success 'Expect no output' 'compare out /dev/null' + +test_expect_success \ + 'Create primary partition' \ + 'parted -s $dev mkpart primary 0 $prim_part_size > out 2>&1' +test_expect_success 'Expect no output' 'compare out /dev/null' + +test_expect_success \ + 'Create extended partition' \ + 'parted -s $dev mkpart extended $prim_part_size $N > out 2>&1' +test_expect_success 'Expect no output' 'compare out /dev/null' + +test_expect_success \ + 'Create logical partition' \ + 'parted -s $dev mkpart logical $prim_part_size $N > out 2>&1' +test_expect_success 'Expect no output' 'compare out /dev/null' + +test_expect_success \ + 'Get start of extended partition' \ + 'ep_start=`parted -s $dev unit B print | grep extended | sed -e "s/^ *[[:digit:]]* *\([[:digit:]]*\)B.*$/\1/"`' + +test_expect_success \ + 'Prepare fake bootcode' \ + 'rm -rf $bootcode && for char in `seq 1 440`; do echo -n "X" >> $bootcode; done' + +test_expect_success \ + 'Install fake bootcode' \ + 'dd if=$bootcode of=$dev bs=1 seek=$ep_start count=$bootcode_size conv=notrunc 2> /dev/null' + +test_expect_success \ + 'Save fake bootcode for later comparison' \ + 'dd if=$dev of=$bootcode_before bs=1 skip=$ep_start count=$bootcode_size 2>/dev/null' + +test_expect_success \ + 'Unset bootflag for logical partition' \ + 'parted -s $dev set 5 boot of > out 2>&1' +test_expect_success 'Expect no output' 'compare out /dev/null' + +test_expect_success \ + 'Retrieve bootcode after parted operation' \ + 'dd if=$dev of=$bootcode_after bs=1 skip=$ep_start count=$bootcode_size 2>/dev/null' + +test_expect_success \ + 'Expect bootcode has not changed' \ + 'compare $bootcode_before $bootcode_after' + +test_done -- 1.6.3 -- Best regards / s pozdravem Petr Uzel, Packages maintainer --------------------------------------------------------------------- SUSE LINUX, s.r.o. e-mail: [email protected] Lihovarská 1060/12 tel: +420 284 028 964 190 00 Prague 9 fax: +420 284 028 951 Czech Republic http://www.suse.cz _______________________________________________ parted-devel mailing list [email protected] http://lists.alioth.debian.org/mailman/listinfo/parted-devel

