e2fsprogs/tests/run_e2fsck
Andreas Dilger f9fd342e56 tests: clean up sed filtering of test output
The sed filters for test outputs that are used to remove build and
test specific information (such as version strings, dates, times,
UUIDs) were unconditionally deleting the first line of output.  This
would normally contain the tool version string, but in some cases
contained other information that was being lost.  This can lead to
difficulty debugging test failures.

The sed filtering has been changed to only remove the actual version
strings.  As well, similar filter strings were duplicated throughout
many scripts, and "sed" and "tr" were often called multiple times in
a pipeline.  These have been consolidated into a single filter.sed
file to avoid having to maintain these filters in multiple places.

In a few cases, accidentally deleted messages have been restored to
the expect output for the tests.  In other cases, trivial whitespace
has been changed in the expect files.

Signed-off-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2013-06-15 18:44:09 -04:00

113 lines
2.4 KiB
Plaintext

if [ "$DESCRIPTION"x != x ]; then
test_description="$DESCRIPTION"
fi
if [ "$IMAGE"x = x ]; then
IMAGE=$test_dir/image.gz
fi
if [ "$FSCK_OPT"x = x ]; then
FSCK_OPT=-yf
fi
if [ "$SECOND_FSCK_OPT"x = x ]; then
SECOND_FSCK_OPT=-yf
fi
if [ "$OUT1"x = x ]; then
OUT1=$test_name.1.log
fi
if [ "$OUT2"x = x ]; then
OUT2=$test_name.2.log
fi
if [ "$EXP1"x = x ]; then
if [ -f $test_dir/expect.1.gz ]; then
EXP1=$test_name.1.tmp
gunzip < $test_dir/expect.1.gz > $EXP1
else
EXP1=$test_dir/expect.1
fi
fi
if [ "$EXP2"x = x ]; then
if [ -f $test_dir/expect.2.gz ]; then
EXP2=$test_name.2.tmp
gunzip < $test_dir/expect.2.gz > $EXP2
else
EXP2=$test_dir/expect.2
fi
fi
if [ "$SKIP_GUNZIP" != "true" ] ; then
gunzip < $IMAGE > $TMPFILE
fi
cp /dev/null $OUT1
eval $PREP_CMD
$FSCK $FSCK_OPT -N test_filesys $TMPFILE > $OUT1.new 2>&1
status=$?
echo Exit status is $status >> $OUT1.new
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" $OUT1.new >> $OUT1
rm -f $OUT1.new
if [ "$ONE_PASS_ONLY" != "true" ]; then
$FSCK $SECOND_FSCK_OPT -N test_filesys $TMPFILE > $OUT2.new 2>&1
status=$?
echo Exit status is $status >> $OUT2.new
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" $OUT2.new > $OUT2
rm -f $OUT2.new
fi
eval $AFTER_CMD
if [ "$SKIP_VERIFY" != "true" ] ; then
rm -f $test_name.ok $test_name.failed
cmp -s $OUT1 $EXP1
status1=$?
if [ "$ONE_PASS_ONLY" != "true" ]; then
cmp -s $OUT2 $EXP2
status2=$?
else
status2=0
fi
if [ "$PASS_ZERO" = "true" ]; then
cmp -s $test_name.0.log $test_dir/expect.0
status3=$?
else
status3=0
fi
if [ -z "$test_description" ] ; then
description="$test_name"
else
description="$test_name: $test_description"
fi
if [ "$status1" -eq 0 -a "$status2" -eq 0 -a "$status3" -eq 0 ] ; then
echo "$description: ok"
touch $test_name.ok
else
echo "$description: failed"
rm -f $test_name.failed
if [ "$PASS_ZERO" = "true" ]; then
diff $DIFF_OPTS $test_dir/expect.0 \
$test_name.0.log >> $test_name.failed
fi
diff $DIFF_OPTS $EXP1 $OUT1 >> $test_name.failed
if [ "$ONE_PASS_ONLY" != "true" ]; then
diff $DIFF_OPTS $EXP2 $OUT2 >> $test_name.failed
fi
fi
rm -f tmp_expect
fi
if [ "$SKIP_CLEANUP" != "true" ] ; then
unset IMAGE FSCK_OPT SECOND_FSCK_OPT OUT1 OUT2 EXP1 EXP2
unset SKIP_VERIFY SKIP_CLEANUP SKIP_GUNZIP ONE_PASS_ONLY PREP_CMD
unset DESCRIPTION SKIP_UNLINK AFTER_CMD PASS_ZERO
fi