[PATCH 1/3] tests: convert more tests to new framework
Jim Meyering
meyering at redhat.com
Fri Nov 6 07:14:32 UTC 2009
* tests/t0400-loop-clobber-infloop.sh: Convert.
* tests/t0010-script-no-ctrl-chars.sh: Likewise.
* tests/t3000-resize-fs.sh: Likewise, and convert it to use scsi_debug.
* tests/t-local.sh (require_512_byte_sector_size_): Copy this
function from test-lib.sh.
---
tests/t-local.sh | 6 ++
tests/t0010-script-no-ctrl-chars.sh | 36 +++++-------
tests/t0400-loop-clobber-infloop.sh | 27 +++++----
tests/t3000-resize-fs.sh | 105 +++++++++++++++++++++-------------
4 files changed, 101 insertions(+), 73 deletions(-)
diff --git a/tests/t-local.sh b/tests/t-local.sh
index de134e3..096e67c 100644
--- a/tests/t-local.sh
+++ b/tests/t-local.sh
@@ -91,4 +91,10 @@ scsi_debug_setup_()
return 0
}
+require_512_byte_sector_size_()
+{
+ test $sector_size_ = 512 \
+ || skip_test_ FS test with sector size != 512
+}
+
. $srcdir/t-lvm.sh
diff --git a/tests/t0010-script-no-ctrl-chars.sh b/tests/t0010-script-no-ctrl-chars.sh
index 9862eea..2fbc19d 100755
--- a/tests/t0010-script-no-ctrl-chars.sh
+++ b/tests/t0010-script-no-ctrl-chars.sh
@@ -16,35 +16,31 @@
# 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='--script does no readline initialization'
+if test "$VERBOSE" = yes; then
+ set -x
+ parted --version
+fi
: ${srcdir=.}
-. $srcdir/test-lib.sh
+. $srcdir/t-lib.sh
ss=$sector_size_
n_sectors=5000
dev=loop-file
-test_expect_success \
- 'create the test file' \
- 'dd if=/dev/null of=$dev bs=$ss seek=$n_sectors'
+fail=0
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
-test_expect_success \
- 'run parted -s FILE mklabel msdos' \
- 'parted -s $dev mklabel msdos > out 2>&1'
-test_expect_success 'expect no output' 'compare out /dev/null'
+parted -s $dev mklabel msdos > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
-test_expect_success \
- 'print partition table in --script mode' \
- 'TERM=xterm parted -m -s $dev u s p > out 2>&1'
+# print partition table in --script mode
+TERM=xterm parted -m -s $dev u s p > out 2>&1 || fail=1
-ok=0
-sed "s,.*/$dev:,$dev:," out > k && mv k out &&
-printf "BYT;\n$dev:${n_sectors}s:file:$ss:$ss:msdos:;\n" > exp &&
- ok=1
+sed "s,.*/$dev:,$dev:," out > k && mv k out || fail=1
+printf "BYT;\n$dev:${n_sectors}s:file:$ss:$ss:msdos:;\n" > exp || fail=1
-test_expect_success \
- 'match against expected output' \
- 'test $ok = 1 && compare out exp'
+compare out exp || fail=1
-test_done
+Exit $fail
diff --git a/tests/t0400-loop-clobber-infloop.sh b/tests/t0400-loop-clobber-infloop.sh
index 824c410..185f91e 100644
--- a/tests/t0400-loop-clobber-infloop.sh
+++ b/tests/t0400-loop-clobber-infloop.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# do not infloop in loop_clobber
# Copyright (C) 2009 Free Software Foundation, Inc.
@@ -15,25 +16,25 @@
# 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='do not infloop in loop_clobber'
+if test "$VERBOSE" = yes; then
+ set -x
+ parted --version
+fi
: ${srcdir=.}
-. $srcdir/test-lib.sh
+. $srcdir/t-lib.sh
N=1M
dev=loop-file
-test_expect_success \
- 'create a file large enough to hold a partition table' \
- 'dd if=/dev/null of=$dev bs=1 seek=$N 2> /dev/null'
+fail=0
+dd if=/dev/null of=$dev bs=1 seek=$N || fail=1
-test_expect_success \
- 'create a swap partition in the entire device' \
- 'mkswap $dev'
+mkswap $dev || fail=1
# There was a small interval (no release) during which this would infloop.
-test_expect_success \
- 'create a dos partition table' \
- 'parted -s $dev mklabel msdos > out 2>&1'
-test_expect_success 'expect no output' 'compare out /dev/null'
+# create a dos partition table
+parted -s $dev mklabel msdos > out 2>&1 || fail=1
-test_done
+compare out /dev/null || fail=1
+
+Exit $fail
diff --git a/tests/t3000-resize-fs.sh b/tests/t3000-resize-fs.sh
index 0620a5e..c338be8 100755
--- a/tests/t3000-resize-fs.sh
+++ b/tests/t3000-resize-fs.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# exercise the resize sub-command; FAT and HFS only
# Copyright (C) 2009 Free Software Foundation, Inc.
@@ -15,42 +16,59 @@
# 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='exercise the resize sub-command; FAT and HFS only'
+if test "$VERBOSE" = yes; then
+ set -x
+ parted --version
+fi
: ${srcdir=.}
-. $srcdir/test-lib.sh
+. $srcdir/t-lib.sh
+require_root_
+require_scsi_debug_module_
require_512_byte_sector_size_
-dev=$DEVICE_TO_ERASE
-sz=$DEVICE_TO_ERASE_SIZE
+
+cat <<EOF > exp-warning || framework_failure
+WARNING: you are attempting to use parted to operate on (resize) a file system.
+parted's file system manipulation code is not as robust as what you'll find in
+dedicated, file-system-specific packages like e2fsprogs. We recommend
+you use parted only to manipulate partition tables, whenever possible.
+Support for performing most operations on most types of file systems
+will be removed in an upcoming release.
+EOF
+
ss=$sector_size_
start=63s
default_end=546147s
new_end=530144s
+# create memory-backed device
+scsi_debug_setup_ dev_size_mb=550 > dev-name ||
+ skip_test_ 'failed to create scsi_debug device'
+dev=$(cat dev-name)
+
+fail=0
+
+parted -s $dev mklabel gpt > out 2>&1 || fail=1
+# expect no output
+compare out /dev/null || fail=1
+
# ensure that the disk is large enough
dev_n_sectors=$(parted -s $dev u s p|sed -n '2s/.* \([0-9]*\)s$/\1/p')
device_sectors_required=$(echo $default_end | sed 's/s$//')
-test_expect_success \
- "whether $dev is large enough for this test" \
- 'test $device_sectors_required -le $dev_n_sectors'
+# Ensure that $dev is large enough for this test
+test $device_sectors_required -le $dev_n_sectors || fail=1
for fs_type in hfs+ fat32; do
- test_expect_success \
- 'create a partition table' \
- 'parted -s $dev mklabel gpt > out 2>&1'
- test_expect_success 'expect no output' 'compare out /dev/null'
-
- test_expect_success \
- "create an empty $fs_type partition, cylinder aligned, size > 256 MB" \
- 'parted -s $dev mkpart primary $fs_type $start $default_end > out 2>&1'
- test_expect_success 'expect no output' 'compare out /dev/null'
+ # create an empty $fs_type partition, cylinder aligned, size > 256 MB
+ parted -s $dev mkpart primary $fs_type $start $default_end > out 2>&1 || fail=1
+ # expect no output
+ compare out /dev/null || fail=1
- test_expect_success \
- 'print partition table' \
- 'parted -m -s $dev u s p > out 2>&1'
+ # print partition table
+ parted -m -s $dev u s p > out 2>&1 || fail=1
# FIXME: check expected output
@@ -58,11 +76,15 @@ for fs_type in hfs+ fat32; do
# device, ${dev}1 (i.e., /dev/sde1) is not created immediately, and
# without some delay, this mount command would fail. Using a flash card
# as $dev, the loop below typically iterates 7-20 times.
- test_expect_success \
- 'wait for new partition device to appear' \
- 'i=0; while :; do
- test -e "${dev}1" && break; test $i = 90 && break;
- i=$(expr $i + 1); done; test $i != 90'
+
+ # wait for new partition device to appear
+ i=0
+ while :; do
+ test -e "${dev}1" && break; test $i = 90 && break;
+ i=$(expr $i + 1)
+ sleep .01 2>/dev/null || sleep 1
+ done
+ test $i = 90 && fail=1
case $fs_type in
fat32) mkfs_cmd='mkfs.vfat -F 32';;
@@ -70,26 +92,29 @@ for fs_type in hfs+ fat32; do
*) error "internal error: unhandled fs type: $fs_type";;
esac
- test_expect_success \
- 'create the file system' \
- '$mkfs_cmd ${dev}1'
+ # create the file system
+ $mkfs_cmd ${dev}1 || fail=1
# NOTE: shrinking is the only type of resizing that works.
- test_expect_success \
- 'resize that file system to be one cylinder (8MiB) smaller' \
- 'parted -s $dev resize 1 $start $new_end > out 2>&1'
- test_expect_success 'expect no output' 'compare out /dev/null'
+ # resize that file system to be one cylinder (8MiB) smaller
+ parted -s $dev resize 1 $start $new_end > out 2> err || fail=1
+ # expect no output
+ compare out /dev/null || fail=1
+ compare err exp-warning || fail=1
+
+ # print partition table
+ parted -m -s $dev u s p > out 2>&1 || fail=1
- test_expect_success \
- 'print partition table' \
- 'parted -m -s $dev u s p > out 2>&1'
+ # compare against expected output
+ sed -n 3p out > k && mv k out || fail=1
+ printf "1:$start:$new_end:530082s:$fs_type:primary:$ms;\n" > exp || fail=1
+ compare out exp || fail=1
- test_expect_success \
- 'compare against expected output' \
- 'sed -n 3p out > k && mv k out &&
- printf "1:$start:$new_end:530082s:$fs_type:primary:$ms;\n" > exp &&
- compare out exp'
+ # Create a clean partition table for the next iteration.
+ parted -s $dev mklabel gpt > out 2>&1 || fail=1
+ # expect no output
+ compare out /dev/null || fail=1
done
-test_done
+Exit $fail
--
1.6.5.2
More information about the parted-devel
mailing list