#!/bin/sh IMAGE=disk.img MOUNT=/mnt/dummy RESULT=result.txt fail() { echo "!! Test failed. Look in $RESULT for test logs." exit } check() { /sbin/dosfsck -r $IMAGE | tee -a $RESULT [ $RETVAL -ne 0 ] && fail } try() { echo COMMAND: fat $1 $2 $3 >> $RESULT ./fat $1 $2 $3 2>> $RESULT RETVAL=$? [ $RETVAL -ne 0 ] && fail } buildimage() { /sbin/mkdosfs -F 32 -s $1 $IMAGE > /dev/null mount -o loop $IMAGE $MOUNT echo "Filling it with /etc files" find /etc -type f -maxdepth 1 -exec cp {} $MOUNT \; mkdir $MOUNT/dir umount $MOUNT } runtests() { rm $RESULT echo ---Test: create a 10K file try mkfile /apa.txt 10 try mkfile /dir/apa.txt 10 check try chkfile /apa.txt 10 try chkfile /dir/apa.txt 8 echo ---Test: create a 1K file try mkfile /bpa.txt 1 check try chkfile /bpa.txt 1 echo ---Test: create a 40K file try mkfile /cpa.txt 40 check try chkfile /cpa.txt 40 echo ---Test: create a 400K file try mkfile /dpa.txt 400 check try chkfile /dpa.txt 400 echo ---Test: truncate previous 40K file to 20K try mkfile /cpa.txt 20 check try chkfile /cpa.txt 20 echo ---Test: truncate previous 20K file to 0K try mkfile /cpa.txt 0 check try chkfile /cpa.txt try chkfile /apa.txt try chkfile /bpa.txt LOOP=50 SIZE=70 echo ---Test: create $LOOP $SIZE k files for i in `seq 1 $LOOP`; do echo ---Test: $i/$LOOP --- try mkfile /rockbox.$i $SIZE check try chkfile /rockbox.$i $SIZE check try del /rockbox.$i check try mkfile /rockbox.$i $SIZE check done } echo "Building test image (4 sector/cluster)" buildimage 4 runtests echo "Building test image (128 sectors/cluster)" buildimage 128 runtests echo "Building test image (32 sectors/cluster)" buildimage 32 runtests echo "Building test image (8 sectors/cluster)" buildimage 8 runtests echo "Building test image (1 sector/cluster)" buildimage 1 runtests echo "== Test completed sucessfully =="