PROGS+= t10a t11a t11b t40a t40b t40c t40d t40e t40f t60a t60b \
t67a t67b t68a t68b
-SCRIPTS+= run testinterp.sh testsh1.sh testsh2.sh
+SCRIPTS+= run testinterp.sh testsh1.sh testsh2.sh testmfs.sh testisofs.sh
.if ${MKPIC} == "yes"
# Build them as dynamic executables by default if shared libraries
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \
61 62 63 64 65 66 67 68 69 70 71 72 75 \
- sh1.sh sh2.sh interp.sh"
+ sh1 sh2 interp mfs isofs"
tests_no=`expr 0`
# test mmap only if enabled in sysenv
rm -f $out
fi
else
+ echo "${diagprefix}warning: skipping test$i"
skipped=`expr $skipped + 1`
fi
done
--- /dev/null
+# Create and verify a simple ISO filesystem
+#
+#!/bin/sh
+
+set -e
+
+echo -n "isofs test "
+
+ramdev=/dev/ram
+mp=/mnt
+testdir=isofstest
+fsimage=isofsimage
+contents=CONTENTS
+out1=v1
+out2=v2
+rm -rf $testdir $fsimage $out1 $out2
+
+if [ -d $testdir ]
+then
+ echo "dir?"
+ exit 1
+fi
+
+mkdir -p $testdir $testdir/$contents
+
+if [ ! -d $testdir ]
+then
+ echo "no dir?"
+ exit 1
+fi
+
+# Make some small & big & bigger files
+
+prevf=$testdir/$contents/FILE
+echo "Test contents 123" >$prevf
+for double in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+do fn=$testdir/$contents/FN.$double
+ cat $prevf $prevf >$fn
+ prevf=$fn
+done
+
+# Make an ISO filesystem image out of it
+writeisofs -s0x0 -l MINIX $testdir $fsimage >/dev/null 2>&1
+
+# umount previous things
+su root -c "umount $ramdev >/dev/null 2>&1 || true"
+su root -c "umount $mp >/dev/null 2>&1 || true"
+
+# Mount it on a RAM disk
+su root -c "ramdisk 50000 $ramdev >/dev/null 2>&1"
+su root -c "cp $fsimage $ramdev"
+su root -c "mount -t isofs $ramdev $mp >/dev/null 2>&1"
+
+# compare contents
+(cd $testdir/$contents && sha1 * | sort) >$out1
+(cd $mp/$contents && sha1 * | sort) >$out2
+
+diff -u $out1 $out2
+
+su root -c "umount $ramdev >/dev/null 2>&1"
+
+# cleanup
+rm -rf $testdir $fsimage $out1 $out2
+
+echo ok
+
+exit 0
--- /dev/null
+#!/bin/sh
+
+# expected sha1sum of the FS image
+expect=55d61f457204c206628c848771a1f9d75cfa3afa
+
+set -e
+
+# ownership matters for the proto file.
+# the run script runs us with uid 2, gid 0.
+if [ "`id -u`" != 2 -o "`id -g`" != 0 ]
+then
+ echo "test script should be run with uid 2, gid 0."
+ exit 1
+fi
+
+echo -n "mfs test "
+
+testdir=fstest
+protofile=proto
+fsimage=fsimage
+rm -rf $testdir $protofile $fsimage
+
+if [ -d $testdir ]
+then
+ echo "dir?"
+ exit 1
+fi
+
+mkdir -p $testdir $testdir/contents $testdir/modes
+
+if [ ! -d $testdir ]
+then
+ echo "no dir?"
+ exit 1
+fi
+
+# Make some small & big & bigger files
+
+prevf=$testdir/contents/file
+echo "Test contents 123" >$prevf
+for double in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+do fn=$testdir/contents/fn.$double
+ cat $prevf $prevf >$fn
+ prevf=$fn
+done
+
+# Make some files with various modes & mtimes
+
+for many in 0 1 2 3 4 5 6 7 8 9
+do for m1 in 0 1 2 3 4 5 6 7
+ do for m2 in 0 1 2 3 4 5 6 7
+ do for m3 in 0 1 2 3 4 5 6 7
+ do
+ mode=${m1}${m2}${m3}
+ fn=$testdir/modes/m${mode}${many}
+ echo "$many $m1 $m2 $m3 $mode" > $fn
+ chmod $mode $fn
+ done
+ done
+ done
+done
+
+# Make an MFS filesystem image out of it
+
+BS=4096
+BLOCKS=15000
+INODES=6000
+dd if=/dev/zero seek=$BLOCKS of=$fsimage count=1 bs=$BS >/dev/null 2>&1
+
+# -s keeps modes
+mkproto -s -b $BLOCKS -i $INODES $testdir >$protofile
+
+mkfs.mfs -T 1 -b $BLOCKS -i $INODES $fsimage $protofile >/dev/null 2>&1
+sum="`sha1 $fsimage | awk '{ print $4 }'`"
+
+if [ $sum != $expect ]
+then
+ echo sum $sum is not expected $expect
+ exit 1
+fi
+
+echo ok
+
+exit 0
+