mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 08:42:40 +01:00 
			
		
		
		
	Refactored a handful of things in tests
- Now test errors have correct line reporting! #line directives
  are passed to the compiler that reference the relevant line in
  the test case shell script.
  --- Multi-block directory ---
  ./tests/test_dirs.sh:109: assert failed with 0, expected 1
      lfs_unmount(&lfs) => 1
- Cleaned up the number of implicit global variables provided to
  tests. A lot of these were infrequently used and made it difficult
  to remember what was provided. This isn't an MCU, so there's very
  little cost to stack allocations when needed.
- Minimized the results.py script (previously stats.py) output to
  match minimization of test output.
			
			
This commit is contained in:
		| @@ -1,28 +1,31 @@ | ||||
| #!/bin/bash | ||||
| set -eu | ||||
| export TEST_FILE=$0 | ||||
| trap 'export TEST_LINE=$LINENO' DEBUG | ||||
|  | ||||
| echo "=== Seek tests ===" | ||||
|  | ||||
| SMALLSIZE=4 | ||||
| MEDIUMSIZE=128 | ||||
| LARGESIZE=132 | ||||
|  | ||||
| echo "=== Seek tests ===" | ||||
| rm -rf blocks | ||||
| scripts/test.py << TEST | ||||
|     lfs_format(&lfs, &cfg) => 0; | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_mkdir(&lfs, "hello") => 0; | ||||
|     for (int i = 0; i < $LARGESIZE; i++) { | ||||
|         sprintf((char*)buffer, "hello/kitty%03d", i); | ||||
|         lfs_file_open(&lfs, &file[0], (char*)buffer, | ||||
|         sprintf(path, "hello/kitty%03d", i); | ||||
|         lfs_file_open(&lfs, &file, path, | ||||
|                 LFS_O_WRONLY | LFS_O_CREAT | LFS_O_APPEND) => 0; | ||||
|  | ||||
|         size = strlen("kittycatcat"); | ||||
|         lfs_size_t size = strlen("kittycatcat"); | ||||
|         memcpy(buffer, "kittycatcat", size); | ||||
|         for (int j = 0; j < $LARGESIZE; j++) { | ||||
|             lfs_file_write(&lfs, &file[0], buffer, size); | ||||
|             lfs_file_write(&lfs, &file, buffer, size); | ||||
|         } | ||||
|  | ||||
|         lfs_file_close(&lfs, &file[0]) => 0; | ||||
|         lfs_file_close(&lfs, &file) => 0; | ||||
|     } | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
| @@ -30,330 +33,330 @@ TEST | ||||
| echo "--- Simple dir seek ---" | ||||
| scripts/test.py << TEST | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_dir_open(&lfs, &dir[0], "hello") => 0; | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     lfs_dir_open(&lfs, &dir, "hello") => 0; | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, ".") => 0; | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, "..") => 0; | ||||
|  | ||||
|     lfs_soff_t pos; | ||||
|     int i; | ||||
|     for (i = 0; i < $SMALLSIZE; i++) { | ||||
|         sprintf((char*)buffer, "kitty%03d", i); | ||||
|         lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|         strcmp(info.name, (char*)buffer) => 0; | ||||
|         pos = lfs_dir_tell(&lfs, &dir[0]); | ||||
|         sprintf(path, "kitty%03d", i); | ||||
|         lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|         strcmp(info.name, path) => 0; | ||||
|         pos = lfs_dir_tell(&lfs, &dir); | ||||
|     } | ||||
|     pos >= 0 => 1; | ||||
|  | ||||
|     lfs_dir_seek(&lfs, &dir[0], pos) => 0; | ||||
|     sprintf((char*)buffer, "kitty%03d", i); | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     strcmp(info.name, (char*)buffer) => 0; | ||||
|     lfs_dir_seek(&lfs, &dir, pos) => 0; | ||||
|     sprintf(path, "kitty%03d", i); | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, path) => 0; | ||||
|  | ||||
|     lfs_dir_rewind(&lfs, &dir[0]) => 0; | ||||
|     sprintf((char*)buffer, "kitty%03d", 0); | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     lfs_dir_rewind(&lfs, &dir) => 0; | ||||
|     sprintf(path, "kitty%03d", 0); | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, ".") => 0; | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, "..") => 0; | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     strcmp(info.name, (char*)buffer) => 0; | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, path) => 0; | ||||
|  | ||||
|     lfs_dir_seek(&lfs, &dir[0], pos) => 0; | ||||
|     sprintf((char*)buffer, "kitty%03d", i); | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     strcmp(info.name, (char*)buffer) => 0; | ||||
|     lfs_dir_seek(&lfs, &dir, pos) => 0; | ||||
|     sprintf(path, "kitty%03d", i); | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, path) => 0; | ||||
|  | ||||
|     lfs_dir_close(&lfs, &dir[0]) => 0; | ||||
|     lfs_dir_close(&lfs, &dir) => 0; | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
|  | ||||
| echo "--- Large dir seek ---" | ||||
| scripts/test.py << TEST | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_dir_open(&lfs, &dir[0], "hello") => 0; | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     lfs_dir_open(&lfs, &dir, "hello") => 0; | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, ".") => 0; | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, "..") => 0; | ||||
|  | ||||
|     lfs_soff_t pos; | ||||
|     int i; | ||||
|     for (i = 0; i < $MEDIUMSIZE; i++) { | ||||
|         sprintf((char*)buffer, "kitty%03d", i); | ||||
|         lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|         strcmp(info.name, (char*)buffer) => 0; | ||||
|         pos = lfs_dir_tell(&lfs, &dir[0]); | ||||
|         sprintf(path, "kitty%03d", i); | ||||
|         lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|         strcmp(info.name, path) => 0; | ||||
|         pos = lfs_dir_tell(&lfs, &dir); | ||||
|     } | ||||
|     pos >= 0 => 1; | ||||
|  | ||||
|     lfs_dir_seek(&lfs, &dir[0], pos) => 0; | ||||
|     sprintf((char*)buffer, "kitty%03d", i); | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     strcmp(info.name, (char*)buffer) => 0; | ||||
|     lfs_dir_seek(&lfs, &dir, pos) => 0; | ||||
|     sprintf(path, "kitty%03d", i); | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, path) => 0; | ||||
|  | ||||
|     lfs_dir_rewind(&lfs, &dir[0]) => 0; | ||||
|     sprintf((char*)buffer, "kitty%03d", 0); | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     lfs_dir_rewind(&lfs, &dir) => 0; | ||||
|     sprintf(path, "kitty%03d", 0); | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, ".") => 0; | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, "..") => 0; | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     strcmp(info.name, (char*)buffer) => 0; | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, path) => 0; | ||||
|  | ||||
|     lfs_dir_seek(&lfs, &dir[0], pos) => 0; | ||||
|     sprintf((char*)buffer, "kitty%03d", i); | ||||
|     lfs_dir_read(&lfs, &dir[0], &info) => 1; | ||||
|     strcmp(info.name, (char*)buffer) => 0; | ||||
|     lfs_dir_seek(&lfs, &dir, pos) => 0; | ||||
|     sprintf(path, "kitty%03d", i); | ||||
|     lfs_dir_read(&lfs, &dir, &info) => 1; | ||||
|     strcmp(info.name, path) => 0; | ||||
|  | ||||
|     lfs_dir_close(&lfs, &dir[0]) => 0; | ||||
|     lfs_dir_close(&lfs, &dir) => 0; | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
|  | ||||
| echo "--- Simple file seek ---" | ||||
| scripts/test.py << TEST | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_file_open(&lfs, &file[0], "hello/kitty042", LFS_O_RDONLY) => 0; | ||||
|     lfs_file_open(&lfs, &file, "hello/kitty042", LFS_O_RDONLY) => 0; | ||||
|  | ||||
|     lfs_soff_t pos; | ||||
|     size = strlen("kittycatcat"); | ||||
|     lfs_size_t size = strlen("kittycatcat"); | ||||
|     for (int i = 0; i < $SMALLSIZE; i++) { | ||||
|         lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|         lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|         memcmp(buffer, "kittycatcat", size) => 0; | ||||
|         pos = lfs_file_tell(&lfs, &file[0]); | ||||
|         pos = lfs_file_tell(&lfs, &file); | ||||
|     } | ||||
|     pos >= 0 => 1; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_rewind(&lfs, &file[0]) => 0; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_rewind(&lfs, &file) => 0; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_CUR) => size; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, 0, LFS_SEEK_CUR) => size; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], size, LFS_SEEK_CUR) => 3*size; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, size, LFS_SEEK_CUR) => 3*size; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, -size, LFS_SEEK_CUR) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, -size, LFS_SEEK_END) >= 0 => 1; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     size = lfs_file_size(&lfs, &file[0]); | ||||
|     lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_CUR) => size; | ||||
|     size = lfs_file_size(&lfs, &file); | ||||
|     lfs_file_seek(&lfs, &file, 0, LFS_SEEK_CUR) => size; | ||||
|  | ||||
|     lfs_file_close(&lfs, &file[0]) => 0; | ||||
|     lfs_file_close(&lfs, &file) => 0; | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
|  | ||||
| echo "--- Large file seek ---" | ||||
| scripts/test.py << TEST | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_file_open(&lfs, &file[0], "hello/kitty042", LFS_O_RDONLY) => 0; | ||||
|     lfs_file_open(&lfs, &file, "hello/kitty042", LFS_O_RDONLY) => 0; | ||||
|  | ||||
|     lfs_soff_t pos; | ||||
|     size = strlen("kittycatcat"); | ||||
|     lfs_size_t size = strlen("kittycatcat"); | ||||
|     for (int i = 0; i < $MEDIUMSIZE; i++) { | ||||
|         lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|         lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|         memcmp(buffer, "kittycatcat", size) => 0; | ||||
|         pos = lfs_file_tell(&lfs, &file[0]); | ||||
|         pos = lfs_file_tell(&lfs, &file); | ||||
|     } | ||||
|     pos >= 0 => 1; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_rewind(&lfs, &file[0]) => 0; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_rewind(&lfs, &file) => 0; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_CUR) => size; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, 0, LFS_SEEK_CUR) => size; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], size, LFS_SEEK_CUR) => 3*size; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, size, LFS_SEEK_CUR) => 3*size; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, -size, LFS_SEEK_CUR) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, -size, LFS_SEEK_END) >= 0 => 1; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     size = lfs_file_size(&lfs, &file[0]); | ||||
|     lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_CUR) => size; | ||||
|     size = lfs_file_size(&lfs, &file); | ||||
|     lfs_file_seek(&lfs, &file, 0, LFS_SEEK_CUR) => size; | ||||
|  | ||||
|     lfs_file_close(&lfs, &file[0]) => 0; | ||||
|     lfs_file_close(&lfs, &file) => 0; | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
|  | ||||
| echo "--- Simple file seek and write ---" | ||||
| scripts/test.py << TEST | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_file_open(&lfs, &file[0], "hello/kitty042", LFS_O_RDWR) => 0; | ||||
|     lfs_file_open(&lfs, &file, "hello/kitty042", LFS_O_RDWR) => 0; | ||||
|  | ||||
|     lfs_soff_t pos; | ||||
|     size = strlen("kittycatcat"); | ||||
|     lfs_size_t size = strlen("kittycatcat"); | ||||
|     for (int i = 0; i < $SMALLSIZE; i++) { | ||||
|         lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|         lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|         memcmp(buffer, "kittycatcat", size) => 0; | ||||
|         pos = lfs_file_tell(&lfs, &file[0]); | ||||
|         pos = lfs_file_tell(&lfs, &file); | ||||
|     } | ||||
|     pos >= 0 => 1; | ||||
|  | ||||
|     memcpy(buffer, "doggodogdog", size); | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_write(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_write(&lfs, &file, buffer, size) => size; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "doggodogdog", size) => 0; | ||||
|  | ||||
|     lfs_file_rewind(&lfs, &file[0]) => 0; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_rewind(&lfs, &file) => 0; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "doggodogdog", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, -size, LFS_SEEK_END) >= 0 => 1; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     size = lfs_file_size(&lfs, &file[0]); | ||||
|     lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_CUR) => size; | ||||
|     size = lfs_file_size(&lfs, &file); | ||||
|     lfs_file_seek(&lfs, &file, 0, LFS_SEEK_CUR) => size; | ||||
|  | ||||
|     lfs_file_close(&lfs, &file[0]) => 0; | ||||
|     lfs_file_close(&lfs, &file) => 0; | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
|  | ||||
| echo "--- Large file seek and write ---" | ||||
| scripts/test.py << TEST | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_file_open(&lfs, &file[0], "hello/kitty042", LFS_O_RDWR) => 0; | ||||
|     lfs_file_open(&lfs, &file, "hello/kitty042", LFS_O_RDWR) => 0; | ||||
|  | ||||
|     lfs_soff_t pos; | ||||
|     size = strlen("kittycatcat"); | ||||
|     lfs_size_t size = strlen("kittycatcat"); | ||||
|     for (int i = 0; i < $MEDIUMSIZE; i++) { | ||||
|         lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|         lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|         if (i != $SMALLSIZE) { | ||||
|             memcmp(buffer, "kittycatcat", size) => 0; | ||||
|         } | ||||
|         pos = lfs_file_tell(&lfs, &file[0]); | ||||
|         pos = lfs_file_tell(&lfs, &file); | ||||
|     } | ||||
|     pos >= 0 => 1; | ||||
|  | ||||
|     memcpy(buffer, "doggodogdog", size); | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_write(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_write(&lfs, &file, buffer, size) => size; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "doggodogdog", size) => 0; | ||||
|  | ||||
|     lfs_file_rewind(&lfs, &file[0]) => 0; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_rewind(&lfs, &file) => 0; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, pos, LFS_SEEK_SET) => pos; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "doggodogdog", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_seek(&lfs, &file, -size, LFS_SEEK_END) >= 0 => 1; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|     size = lfs_file_size(&lfs, &file[0]); | ||||
|     lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_CUR) => size; | ||||
|     size = lfs_file_size(&lfs, &file); | ||||
|     lfs_file_seek(&lfs, &file, 0, LFS_SEEK_CUR) => size; | ||||
|  | ||||
|     lfs_file_close(&lfs, &file[0]) => 0; | ||||
|     lfs_file_close(&lfs, &file) => 0; | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
|  | ||||
| echo "--- Boundary seek and write ---" | ||||
| scripts/test.py << TEST | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_file_open(&lfs, &file[0], "hello/kitty042", LFS_O_RDWR) => 0; | ||||
|     lfs_file_open(&lfs, &file, "hello/kitty042", LFS_O_RDWR) => 0; | ||||
|  | ||||
|     size = strlen("hedgehoghog"); | ||||
|     lfs_size_t size = strlen("hedgehoghog"); | ||||
|     const lfs_soff_t offsets[] = {512, 1020, 513, 1021, 511, 1019}; | ||||
|  | ||||
|     for (unsigned i = 0; i < sizeof(offsets) / sizeof(offsets[0]); i++) { | ||||
|         lfs_soff_t off = offsets[i]; | ||||
|         memcpy(buffer, "hedgehoghog", size); | ||||
|         lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) => off; | ||||
|         lfs_file_write(&lfs, &file[0], buffer, size) => size; | ||||
|         lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) => off; | ||||
|         lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|         lfs_file_seek(&lfs, &file, off, LFS_SEEK_SET) => off; | ||||
|         lfs_file_write(&lfs, &file, buffer, size) => size; | ||||
|         lfs_file_seek(&lfs, &file, off, LFS_SEEK_SET) => off; | ||||
|         lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|         memcmp(buffer, "hedgehoghog", size) => 0; | ||||
|  | ||||
|         lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_SET) => 0; | ||||
|         lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|         lfs_file_seek(&lfs, &file, 0, LFS_SEEK_SET) => 0; | ||||
|         lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|         memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
|         lfs_file_sync(&lfs, &file[0]) => 0; | ||||
|         lfs_file_sync(&lfs, &file) => 0; | ||||
|     } | ||||
|  | ||||
|     lfs_file_close(&lfs, &file[0]) => 0; | ||||
|     lfs_file_close(&lfs, &file) => 0; | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
|  | ||||
| echo "--- Out-of-bounds seek ---" | ||||
| scripts/test.py << TEST | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_file_open(&lfs, &file[0], "hello/kitty042", LFS_O_RDWR) => 0; | ||||
|     lfs_file_open(&lfs, &file, "hello/kitty042", LFS_O_RDWR) => 0; | ||||
|  | ||||
|     size = strlen("kittycatcat"); | ||||
|     lfs_file_size(&lfs, &file[0]) => $LARGESIZE*size; | ||||
|     lfs_file_seek(&lfs, &file[0], ($LARGESIZE+$SMALLSIZE)*size, | ||||
|     lfs_size_t size = strlen("kittycatcat"); | ||||
|     lfs_file_size(&lfs, &file) => $LARGESIZE*size; | ||||
|     lfs_file_seek(&lfs, &file, ($LARGESIZE+$SMALLSIZE)*size, | ||||
|             LFS_SEEK_SET) => ($LARGESIZE+$SMALLSIZE)*size; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => 0; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => 0; | ||||
|  | ||||
|     memcpy(buffer, "porcupineee", size); | ||||
|     lfs_file_write(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_write(&lfs, &file, buffer, size) => size; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], ($LARGESIZE+$SMALLSIZE)*size, | ||||
|     lfs_file_seek(&lfs, &file, ($LARGESIZE+$SMALLSIZE)*size, | ||||
|             LFS_SEEK_SET) => ($LARGESIZE+$SMALLSIZE)*size; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "porcupineee", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], $LARGESIZE*size, | ||||
|     lfs_file_seek(&lfs, &file, $LARGESIZE*size, | ||||
|             LFS_SEEK_SET) => $LARGESIZE*size; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     lfs_file_read(&lfs, &file, buffer, size) => size; | ||||
|     memcmp(buffer, "\0\0\0\0\0\0\0\0\0\0\0", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], -(($LARGESIZE+$SMALLSIZE)*size), | ||||
|     lfs_file_seek(&lfs, &file, -(($LARGESIZE+$SMALLSIZE)*size), | ||||
|             LFS_SEEK_CUR) => LFS_ERR_INVAL; | ||||
|     lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size; | ||||
|     lfs_file_tell(&lfs, &file) => ($LARGESIZE+1)*size; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], -(($LARGESIZE+2*$SMALLSIZE)*size), | ||||
|     lfs_file_seek(&lfs, &file, -(($LARGESIZE+2*$SMALLSIZE)*size), | ||||
|             LFS_SEEK_END) => LFS_ERR_INVAL; | ||||
|     lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size; | ||||
|     lfs_file_tell(&lfs, &file) => ($LARGESIZE+1)*size; | ||||
|  | ||||
|     lfs_file_close(&lfs, &file[0]) => 0; | ||||
|     lfs_file_close(&lfs, &file) => 0; | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
|  | ||||
| @@ -362,68 +365,67 @@ for SIZE in $SMALLSIZE $MEDIUMSIZE $LARGESIZE | ||||
| do | ||||
| scripts/test.py << TEST | ||||
|     lfs_mount(&lfs, &cfg) => 0; | ||||
|     lfs_file_open(&lfs, &file[0], "hello/tinykitty$SIZE", | ||||
|     lfs_file_open(&lfs, &file, "hello/tinykitty$SIZE", | ||||
|             LFS_O_RDWR | LFS_O_CREAT) => 0; | ||||
|     int j = 0; | ||||
|     int k = 0; | ||||
|  | ||||
|     memcpy(buffer, "abcdefghijklmnopqrstuvwxyz", 26); | ||||
|     for (unsigned i = 0; i < $SIZE; i++) { | ||||
|         lfs_file_write(&lfs, &file[0], &buffer[j++ % 26], 1) => 1; | ||||
|         lfs_file_tell(&lfs, &file[0]) => i+1; | ||||
|         lfs_file_size(&lfs, &file[0]) => i+1; | ||||
|         lfs_file_write(&lfs, &file, &buffer[j++ % 26], 1) => 1; | ||||
|         lfs_file_tell(&lfs, &file) => i+1; | ||||
|         lfs_file_size(&lfs, &file) => i+1; | ||||
|     } | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_SET) => 0; | ||||
|     lfs_file_tell(&lfs, &file[0]) => 0; | ||||
|     lfs_file_size(&lfs, &file[0]) => $SIZE; | ||||
|     lfs_file_seek(&lfs, &file, 0, LFS_SEEK_SET) => 0; | ||||
|     lfs_file_tell(&lfs, &file) => 0; | ||||
|     lfs_file_size(&lfs, &file) => $SIZE; | ||||
|     for (unsigned i = 0; i < $SIZE; i++) { | ||||
|         uint8_t c; | ||||
|         lfs_file_read(&lfs, &file[0], &c, 1) => 1; | ||||
|         lfs_file_read(&lfs, &file, &c, 1) => 1; | ||||
|         c => buffer[k++ % 26]; | ||||
|     } | ||||
|  | ||||
|     lfs_file_sync(&lfs, &file[0]) => 0; | ||||
|     lfs_file_tell(&lfs, &file[0]) => $SIZE; | ||||
|     lfs_file_size(&lfs, &file[0]) => $SIZE; | ||||
|     lfs_file_sync(&lfs, &file) => 0; | ||||
|     lfs_file_tell(&lfs, &file) => $SIZE; | ||||
|     lfs_file_size(&lfs, &file) => $SIZE; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_SET) => 0; | ||||
|     lfs_file_seek(&lfs, &file, 0, LFS_SEEK_SET) => 0; | ||||
|     for (unsigned i = 0; i < $SIZE; i++) { | ||||
|         lfs_file_write(&lfs, &file[0], &buffer[j++ % 26], 1) => 1; | ||||
|         lfs_file_tell(&lfs, &file[0]) => i+1; | ||||
|         lfs_file_size(&lfs, &file[0]) => $SIZE; | ||||
|         lfs_file_sync(&lfs, &file[0]) => 0; | ||||
|         lfs_file_tell(&lfs, &file[0]) => i+1; | ||||
|         lfs_file_size(&lfs, &file[0]) => $SIZE; | ||||
|         lfs_file_write(&lfs, &file, &buffer[j++ % 26], 1) => 1; | ||||
|         lfs_file_tell(&lfs, &file) => i+1; | ||||
|         lfs_file_size(&lfs, &file) => $SIZE; | ||||
|         lfs_file_sync(&lfs, &file) => 0; | ||||
|         lfs_file_tell(&lfs, &file) => i+1; | ||||
|         lfs_file_size(&lfs, &file) => $SIZE; | ||||
|         if (i < $SIZE-2) { | ||||
|             uint8_t c[3]; | ||||
|             lfs_file_seek(&lfs, &file[0], -1, LFS_SEEK_CUR) => i; | ||||
|             lfs_file_read(&lfs, &file[0], &c, 3) => 3; | ||||
|             lfs_file_tell(&lfs, &file[0]) => i+3; | ||||
|             lfs_file_size(&lfs, &file[0]) => $SIZE; | ||||
|             lfs_file_seek(&lfs, &file[0], i+1, LFS_SEEK_SET) => i+1; | ||||
|             lfs_file_tell(&lfs, &file[0]) => i+1; | ||||
|             lfs_file_size(&lfs, &file[0]) => $SIZE; | ||||
|             lfs_file_seek(&lfs, &file, -1, LFS_SEEK_CUR) => i; | ||||
|             lfs_file_read(&lfs, &file, &c, 3) => 3; | ||||
|             lfs_file_tell(&lfs, &file) => i+3; | ||||
|             lfs_file_size(&lfs, &file) => $SIZE; | ||||
|             lfs_file_seek(&lfs, &file, i+1, LFS_SEEK_SET) => i+1; | ||||
|             lfs_file_tell(&lfs, &file) => i+1; | ||||
|             lfs_file_size(&lfs, &file) => $SIZE; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_SET) => 0; | ||||
|     lfs_file_tell(&lfs, &file[0]) => 0; | ||||
|     lfs_file_size(&lfs, &file[0]) => $SIZE; | ||||
|     lfs_file_seek(&lfs, &file, 0, LFS_SEEK_SET) => 0; | ||||
|     lfs_file_tell(&lfs, &file) => 0; | ||||
|     lfs_file_size(&lfs, &file) => $SIZE; | ||||
|     for (unsigned i = 0; i < $SIZE; i++) { | ||||
|         uint8_t c; | ||||
|         lfs_file_read(&lfs, &file[0], &c, 1) => 1; | ||||
|         lfs_file_read(&lfs, &file, &c, 1) => 1; | ||||
|         c => buffer[k++ % 26]; | ||||
|     } | ||||
|  | ||||
|     lfs_file_sync(&lfs, &file[0]) => 0; | ||||
|     lfs_file_tell(&lfs, &file[0]) => $SIZE; | ||||
|     lfs_file_size(&lfs, &file[0]) => $SIZE; | ||||
|     lfs_file_sync(&lfs, &file) => 0; | ||||
|     lfs_file_tell(&lfs, &file) => $SIZE; | ||||
|     lfs_file_size(&lfs, &file) => $SIZE; | ||||
|  | ||||
|     lfs_file_close(&lfs, &file[0]) => 0; | ||||
|     lfs_file_close(&lfs, &file) => 0; | ||||
|     lfs_unmount(&lfs) => 0; | ||||
| TEST | ||||
| done | ||||
|  | ||||
| echo "--- Results ---" | ||||
| scripts/stats.py | ||||
| scripts/results.py | ||||
|   | ||||
		Reference in New Issue
	
	Block a user