forked from Imagelibrary/littlefs
Compare commits
1 Commits
well-done
...
fix-name-o
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52df70c669 |
4
lfs.c
4
lfs.c
@@ -1430,8 +1430,8 @@ static int lfs_dir_find_match(void *data,
|
||||
}
|
||||
|
||||
// only equal if our size is still the same
|
||||
if (name->size != lfs_tag_size(tag)) {
|
||||
return (name->size < lfs_tag_size(tag)) ? LFS_CMP_LT : LFS_CMP_GT;
|
||||
if (lfs_tag_size(tag) != name->size) {
|
||||
return (lfs_tag_size(tag) < name->size) ? LFS_CMP_LT : LFS_CMP_GT;
|
||||
}
|
||||
|
||||
// found a match!
|
||||
|
||||
@@ -717,6 +717,105 @@ code = '''
|
||||
lfs_unmount(&lfs) => 0;
|
||||
'''
|
||||
|
||||
# littlefs should keep directories in lexicographic order
|
||||
[cases.test_dirs_ordering]
|
||||
# ORDER=0 => inorder
|
||||
# ORDER=1 => reversed
|
||||
# ORDER=2 => random
|
||||
defines.ORDER = [0, 1, 2]
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfs_format(&lfs, cfg) => 0;
|
||||
lfs_mount(&lfs, cfg) => 0;
|
||||
if (ORDER == 0) {
|
||||
lfs_mkdir(&lfs, "a") => 0;
|
||||
lfs_mkdir(&lfs, "b") => 0;
|
||||
lfs_mkdir(&lfs, "c") => 0;
|
||||
} else if (ORDER == 1) {
|
||||
lfs_mkdir(&lfs, "c") => 0;
|
||||
lfs_mkdir(&lfs, "b") => 0;
|
||||
lfs_mkdir(&lfs, "a") => 0;
|
||||
} else if (ORDER == 2) {
|
||||
// "random"
|
||||
lfs_mkdir(&lfs, "a") => 0;
|
||||
lfs_mkdir(&lfs, "c") => 0;
|
||||
lfs_mkdir(&lfs, "b") => 0;
|
||||
}
|
||||
|
||||
// check the order
|
||||
lfs_dir_t dir;
|
||||
lfs_dir_open(&lfs, &dir, "/") => 0;
|
||||
struct lfs_info info;
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, ".") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, "..") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, "a") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, "b") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, "c") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 0;
|
||||
lfs_dir_close(&lfs, &dir) => 0;
|
||||
|
||||
lfs_unmount(&lfs) => 0;
|
||||
'''
|
||||
|
||||
[cases.test_dirs_ordering_length]
|
||||
# ORDER=0 => inorder
|
||||
# ORDER=1 => reversed
|
||||
# ORDER=2 => random
|
||||
defines.ORDER = [0, 1, 2]
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
lfs_format(&lfs, cfg) => 0;
|
||||
lfs_mount(&lfs, cfg) => 0;
|
||||
if (ORDER == 0) {
|
||||
lfs_mkdir(&lfs, "a") => 0;
|
||||
lfs_mkdir(&lfs, "aa") => 0;
|
||||
lfs_mkdir(&lfs, "aaa") => 0;
|
||||
} else if (ORDER == 1) {
|
||||
lfs_mkdir(&lfs, "aaa") => 0;
|
||||
lfs_mkdir(&lfs, "aa") => 0;
|
||||
lfs_mkdir(&lfs, "a") => 0;
|
||||
} else if (ORDER == 2) {
|
||||
// "random"
|
||||
lfs_mkdir(&lfs, "a") => 0;
|
||||
lfs_mkdir(&lfs, "aaa") => 0;
|
||||
lfs_mkdir(&lfs, "aa") => 0;
|
||||
}
|
||||
|
||||
// check the order
|
||||
lfs_dir_t dir;
|
||||
lfs_dir_open(&lfs, &dir, "/") => 0;
|
||||
struct lfs_info info;
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, ".") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, "..") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, "a") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, "aa") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 1;
|
||||
assert(info.type == LFS_TYPE_DIR);
|
||||
assert(strcmp(info.name, "aaa") == 0);
|
||||
lfs_dir_read(&lfs, &dir, &info) => 0;
|
||||
lfs_dir_close(&lfs, &dir) => 0;
|
||||
|
||||
lfs_unmount(&lfs) => 0;
|
||||
'''
|
||||
|
||||
[cases.test_dirs_other_errors]
|
||||
code = '''
|
||||
lfs_t lfs;
|
||||
|
||||
Reference in New Issue
Block a user