From b99551d1be74dea9be131c1b8a0fcf7ac01b0c05 Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Mon, 18 Apr 2005 14:16:35 +0000 Subject: FAT test case builds again git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6309 a1c6a512-1295-4272-9138-f99709370657 --- firmware/test/fat/Makefile | 3 +- firmware/test/fat/ata-sim.c | 8 +-- firmware/test/fat/main.c | 27 +++++++-- firmware/test/fat/test.sh | 2 + firmware/test/fat/test16.sh | 135 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 166 insertions(+), 9 deletions(-) create mode 100755 firmware/test/fat/test16.sh (limited to 'firmware') diff --git a/firmware/test/fat/Makefile b/firmware/test/fat/Makefile index 781f8afcdb..2bb5babe64 100644 --- a/firmware/test/fat/Makefile +++ b/firmware/test/fat/Makefile @@ -3,8 +3,9 @@ DRIVERS = ../../drivers EXPORT = ../../export INCLUDE = -I$(EXPORT) + RINCLUDE = -I$(FIRMWARE)/include -DEFINES = -DTEST_FAT -DDEBUG -DCRT_DISPLAY -DDISK_WRITE +DEFINES = -DTEST_FAT -DDEBUG -DCRT_DISPLAY -DDISK_WRITE -DHAVE_FAT16SUPPORT CFLAGS = -g -Wall $(DEFINES) -I. $(INCLUDE) $(RINCLUDE) -DLITTLE_ENDIAN SIMFLAGS = -g -Wall $(DEFINES) -I. $(INCLUDE) diff --git a/firmware/test/fat/ata-sim.c b/firmware/test/fat/ata-sim.c index cc3eb15209..d8ed079759 100644 --- a/firmware/test/fat/ata-sim.c +++ b/firmware/test/fat/ata-sim.c @@ -2,12 +2,13 @@ #include #include #include "debug.h" -#include "panic.h" #define BLOCK_SIZE 512 static FILE* file; +void panicf( const char *fmt, ... ); + int ata_read_sectors(unsigned long start, int count, void* buf) { if ( count > 1 ) @@ -51,10 +52,9 @@ int ata_write_sectors(unsigned long start, int count, void* buf) return 0; } -int ata_init(char* filename) +int ata_init(void) { - if (!filename) - filename = "disk.img"; + char* filename = "disk.img"; /* check disk size */ file=fopen(filename,"rb+"); if(!file) { diff --git a/firmware/test/fat/main.c b/firmware/test/fat/main.c index 5420199f92..200ea18706 100644 --- a/firmware/test/fat/main.c +++ b/firmware/test/fat/main.c @@ -9,13 +9,14 @@ #include "dir.h" #include "file.h" -extern int ata_init(char*); -extern void ata_read_sectors(int, int, char*); - void dbg_dump_sector(int sec); void dbg_dump_buffer(unsigned char *buf, int len, int offset); void dbg_console(void); +void mutex_init(void* l) {} +void mutex_lock(void* l) {} +void mutex_unlock(void* l) {} + void panicf( char *fmt, ...) { va_list ap; @@ -26,6 +27,24 @@ void panicf( char *fmt, ...) exit(1); } +void debugf(const char *fmt, ...) +{ + va_list ap; + va_start( ap, fmt ); + fprintf(stderr,"DEBUGF: "); + vfprintf( stderr, fmt, ap ); + va_end( ap ); +} + +void ldebugf(const char* file, int line, const char *fmt, ...) +{ + va_list ap; + va_start( ap, fmt ); + fprintf( stderr, "%s:%d ", file, line ); + vfprintf( stderr, fmt, ap ); + va_end( ap ); +} + void dbg_dump_sector(int sec) { unsigned char buf[512]; @@ -660,7 +679,7 @@ int main(int argc, char *argv[]) srand(clock()); - if(ata_init("disk.img")) { + if(ata_init()) { DEBUGF("*** Warning! The disk is uninitialized\n"); return -1; } diff --git a/firmware/test/fat/test.sh b/firmware/test/fat/test.sh index 9b1036b69c..5056fb8c67 100644 --- a/firmware/test/fat/test.sh +++ b/firmware/test/fat/test.sh @@ -6,6 +6,7 @@ RESULT=result.txt fail() { echo "!! Test failed. Look in $RESULT for test logs." + chmod a+rw $RESULT exit } @@ -142,3 +143,4 @@ buildimage 128 runtests echo "== Test completed successfully ==" +chmod a+rw $RESULT diff --git a/firmware/test/fat/test16.sh b/firmware/test/fat/test16.sh new file mode 100755 index 0000000000..bc12fd837c --- /dev/null +++ b/firmware/test/fat/test16.sh @@ -0,0 +1,135 @@ +#!/bin/sh + +IMAGE=disk.img +MOUNT=/mnt/dummy +DIR=$MOUNT/q +RESULT=result.txt + +fail() { + echo "!! Test failed $RETVAL. Look in $RESULT for test logs." + chmod a+rw $RESULT + exit +} + +check() { + /sbin/dosfsck -r $IMAGE | tee -a $RESULT + [ $RETVAL -ne 0 ] && fail +} + +try() { + echo COMMAND: fat $1 "$2" "$3" + echo COMMAND: fat $1 "$2" "$3" >> $RESULT + ./fat $1 "$2" "$3" 2>> $RESULT + RETVAL=$? + [ $RETVAL -ne 0 ] && fail +} + +buildimage() { + /sbin/mkdosfs -F 16 -s $1 $IMAGE > /dev/null; + mount -o loop,fat=16 $IMAGE $MOUNT; + echo "Filling it with /etc files"; + mkdir $DIR; + find /etc -type f -maxdepth 1 -exec cp {} $DIR \; + for i in `seq 1 120`; + do + echo apa > "$DIR/very $i long test filename so we can make sure they.work"; + done; + umount $MOUNT; +} + +runtests() { + rm $RESULT + + echo ---Test: create a long name directory in the root + try mkdir "/very long subdir name" + check + try mkdir "/very long subdir name/apa.monkey.me.now" + check + + echo ---Test: create a directory called "dir" + try mkdir "/dir" + check + + echo ---Test: create a 10K file + try mkfile "/really long filenames rock" 10 + check + + try mkfile /dir/apa.monkey.me.now 10 + check + try chkfile "/really long filenames rock" 10 + try chkfile /dir/apa.monkey.me.now 8 + + echo ---Test: create a 1K file + try mkfile /bpa.rock 1 + check + try chkfile /bpa.rock 1 + + echo ---Test: create a 40K file + try mkfile /cpa.rock 40 + check + try chkfile /cpa.rock 40 + + echo ---Test: create a 400K file + try mkfile /dpa.rock 400 + check + try chkfile /dpa.rock 400 + + echo ---Test: create a 1200K file + try mkfile /epa.rock 1200 + check + try chkfile /epa.rock 1200 + + echo ---Test: rewrite first 20K of a 40K file + try mkfile /cpa.rock 20 + check + try chkfile /cpa.rock 20 + + echo ---Test: rewrite first sector of 40K file + try mkfile /cpa.rock 0 + check + try chkfile /cpa.rock + try chkfile /bpa.rock + + LOOP=25 + SIZE=700 + + try del "/really long filenames rock" + + echo ---Test: create $LOOP $SIZE k files + for i in `seq 1 $LOOP`; + do + echo ---Test: $i/$LOOP --- + try mkfile "/q/rockbox rocks.$i" $SIZE + check + try chkfile "/q/rockbox rocks.$i" $SIZE + check + try del "/q/rockbox rocks.$i" + check + try mkfile "/q/rockbox rocks.$i" $SIZE + check + try ren "/q/rockbox rocks.$i" "/q/$i is a new long filename!" + check + done + +} + +echo "--------------------------------------" +echo "Building test image (4 sector/cluster)" +echo "--------------------------------------" +buildimage 4 +runtests + +echo "--------------------------------------" +echo "Building test image (8 sectors/cluster)" +echo "--------------------------------------" +buildimage 8 +runtests + +echo "----------------------------------------" +echo "Building test image (64 sectors/cluster)" +echo "----------------------------------------" +buildimage 16 +runtests + +echo "== Test completed successfully ==" +chmod a+rw $RESULT -- cgit v1.2.3