diff --git a/firmware/test/fat/ata-sim.c b/firmware/test/fat/ata-sim.c index 63abc58084..aac7fba0f4 100644 --- a/firmware/test/fat/ata-sim.c +++ b/firmware/test/fat/ata-sim.c @@ -8,7 +8,7 @@ static FILE* file; -int ata_read_sectors(unsigned long start, unsigned char count, void* buf) +int ata_read_sectors(unsigned long start, int count, void* buf) { if ( count > 1 ) DEBUGF("[Reading %d blocks: 0x%lx to 0x%lx]\n", @@ -28,7 +28,7 @@ int ata_read_sectors(unsigned long start, unsigned char count, void* buf) return 0; } -int ata_write_sectors(unsigned long start, unsigned char count, void* buf) +int ata_write_sectors(unsigned long start, int count, void* buf) { if ( count > 1 ) DEBUGF("[Writing %d blocks: 0x%lx to 0x%lx]\n", diff --git a/firmware/test/fat/main.c b/firmware/test/fat/main.c index 520454541f..9c1b983925 100644 --- a/firmware/test/fat/main.c +++ b/firmware/test/fat/main.c @@ -331,40 +331,47 @@ int dbg_append(char* name) int dbg_test(char* name) { int x=0; - int size, fd, rc; - char buf[4096]; + int j; + int fd; + char text[BUFSIZE+1]; - fd = open(name,O_RDWR); - if (fd<0) { - DEBUGF("Failed opening file\n"); - return -1; - } + for (j=0; j<5; j++) { + int num = 40960; - size = lseek(fd, -1024, SEEK_END); - size &= ~7; - DEBUGF("File is %d bytes\n", size); - x = size / CHUNKSIZE; - LDEBUGF("Check base is %x (%d)\n",x,size); + fd = open(name,O_WRONLY|O_CREAT|O_APPEND); + if (fd<0) { + DEBUGF("Failed opening file\n"); + return -1; + } - rc = read(fd, buf, sizeof buf); - if ( rc < 0 ) - panicf("Failed reading data\n"); - if ( rc == 0 ) - DEBUGF("EOF\n"); + while ( num ) { + int rc, i; + int len = num > BUFSIZE ? BUFSIZE : num; - rc = read(fd, buf, sizeof buf); - if ( rc < 0 ) - panicf("Failed reading data\n"); - if ( rc == 0 ) - DEBUGF("EOF\n"); + for (i=0; i\n" " append \n" " test \n" + " ren \n" ); return -1; } @@ -615,6 +623,12 @@ int dbg_cmd(int argc, char *argv[]) return dbg_trunc(arg1, atoi(arg2)); } + if (!strcasecmp(cmd, "ren")) + { + if (arg1 && arg2) + return rename(arg1, arg2); + } + return 0; } diff --git a/firmware/test/fat/test.sh b/firmware/test/fat/test.sh index 7d9435b85d..6a26e7ff59 100644 --- a/firmware/test/fat/test.sh +++ b/firmware/test/fat/test.sh @@ -15,8 +15,9 @@ check() { } try() { - echo COMMAND: fat $1 $2 $3 >> $RESULT - ./fat $1 $2 $3 2>> $RESULT + echo COMMAND: fat $1 "$2" "$3" + echo COMMAND: fat $1 "$2" "$3" >> $RESULT + ./fat $1 "$2" "$3" 2>> $RESULT RETVAL=$? [ $RETVAL -ne 0 ] && fail } @@ -26,6 +27,10 @@ buildimage() { mount -o loop $IMAGE $MOUNT echo "Filling it with /etc files" find /etc -type f -maxdepth 1 -exec cp {} $MOUNT \; + for i in `seq 1 120`; + do + echo apa > "$MOUNT/very $i long test filename so we can make sure they.work" + done mkdir $MOUNT/dir umount $MOUNT } @@ -34,53 +39,63 @@ runtests() { rm $RESULT echo ---Test: create a 10K file - try mkfile /apa.txt 10 - try mkfile /dir/apa.txt 10 + try mkfile "/really long filenames rock" 10 check - try chkfile /apa.txt 10 - try chkfile /dir/apa.txt 8 + 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.txt 1 + try mkfile /bpa.rock 1 check - try chkfile /bpa.txt 1 + try chkfile /bpa.rock 1 echo ---Test: create a 40K file - try mkfile /cpa.txt 40 + try mkfile /cpa.rock 40 check - try chkfile /cpa.txt 40 + try chkfile /cpa.rock 40 echo ---Test: create a 400K file - try mkfile /dpa.txt 400 + try mkfile /dpa.rock 400 check - try chkfile /dpa.txt 400 + try chkfile /dpa.rock 400 - echo ---Test: truncate previous 40K file to 20K - try mkfile /cpa.txt 20 + echo ---Test: create a 1200K file + try mkfile /epa.rock 1200 check - try chkfile /cpa.txt 20 + try chkfile /epa.rock 1200 - echo ---Test: truncate previous 20K file to 0K - try mkfile /cpa.txt 0 + echo ---Test: rewrite first 20K of a 40K file + try mkfile /cpa.rock 20 check - try chkfile /cpa.txt - try chkfile /apa.txt - try chkfile /bpa.txt + 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 /apa.rock + try chkfile /bpa.rock LOOP=50 - SIZE=70 + 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 /rockbox.$i $SIZE + try mkfile "/rockbox rocks.$i" $SIZE check - try chkfile /rockbox.$i $SIZE + try chkfile "/rockbox rocks.$i" $SIZE check - try del /rockbox.$i + try del "/rockbox rocks.$i" check - try mkfile /rockbox.$i $SIZE + try mkfile "/rockbox rocks.$i" $SIZE + check + try ren "/rockbox rocks.$i" "$i is a new long filename!" check done @@ -90,20 +105,20 @@ 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 "Building test image (8 sectors/cluster)" +buildimage 8 +runtests + +echo "Building test image (128 sectors/cluster)" +buildimage 128 +runtests + echo "== Test completed sucessfully =="