summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2005-04-18 14:16:35 +0000
committerBjörn Stenberg <bjorn@haxx.se>2005-04-18 14:16:35 +0000
commitb99551d1be74dea9be131c1b8a0fcf7ac01b0c05 (patch)
treea3f3a03d7d783ae0732bb1fb96e3b5eca71a2231
parent70ad08ccab575813a180d8a66e907c9ea3598d81 (diff)
downloadrockbox-b99551d1be74dea9be131c1b8a0fcf7ac01b0c05.zip
rockbox-b99551d1be74dea9be131c1b8a0fcf7ac01b0c05.tar.gz
rockbox-b99551d1be74dea9be131c1b8a0fcf7ac01b0c05.tar.bz2
rockbox-b99551d1be74dea9be131c1b8a0fcf7ac01b0c05.tar.xz
FAT test case builds again
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6309 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/test/fat/Makefile3
-rw-r--r--firmware/test/fat/ata-sim.c8
-rw-r--r--firmware/test/fat/main.c27
-rw-r--r--firmware/test/fat/test.sh2
-rwxr-xr-xfirmware/test/fat/test16.sh135
5 files changed, 166 insertions, 9 deletions
diff --git a/firmware/test/fat/Makefile b/firmware/test/fat/Makefile
index 781f8af..2bb5bab 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 cc3eb15..d8ed079 100644
--- a/firmware/test/fat/ata-sim.c
+++ b/firmware/test/fat/ata-sim.c
@@ -2,12 +2,13 @@
#include <stdlib.h>
#include <string.h>
#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 5420199..200ea18 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 9b1036b..5056fb8 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 0000000..bc12fd8
--- /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