Some checks failed
Basic Checks / license-check (push) Has been cancelled
Basic Checks / include-check (push) Has been cancelled
Basic Checks / style-check (push) Has been cancelled
Basic Checks / docs-check (push) Has been cancelled
Basic Checks / python-tests (push) Has been cancelled
Basic Checks / pin-validation (push) Has been cancelled
Basic Checks / cmake-checks (push) Has been cancelled
Basic Checks / frozen-tools-check (push) Has been cancelled
Publish or Update docker image for head of branch / prepare-tags (push) Has been cancelled
Release or update docker image for a released mbed-os version / prepare-tags (push) Has been cancelled
Publish or Update docker image for head of branch / build-container (push) Has been cancelled
Publish or Update docker image for head of branch / test-container (linux/amd64) (push) Has been cancelled
Publish or Update docker image for head of branch / test-container (linux/arm64) (push) Has been cancelled
Publish or Update docker image for head of branch / deploy-container (push) Has been cancelled
Release or update docker image for a released mbed-os version / build-container (push) Has been cancelled
Release or update docker image for a released mbed-os version / test-container (linux/amd64) (push) Has been cancelled
Release or update docker image for a released mbed-os version / test-container (linux/arm64) (push) Has been cancelled
Release or update docker image for a released mbed-os version / deploy-container (push) Has been cancelled
Prune temporary docker images / prune-images (push) Has been cancelled
128 lines
3.7 KiB
TOML
128 lines
3.7 KiB
TOML
[[case]] # simple formatting test
|
|
code = '''
|
|
lfs2_format(&lfs2, &cfg) => 0;
|
|
'''
|
|
|
|
[[case]] # mount/unmount
|
|
code = '''
|
|
lfs2_format(&lfs2, &cfg) => 0;
|
|
lfs2_mount(&lfs2, &cfg) => 0;
|
|
lfs2_unmount(&lfs2) => 0;
|
|
'''
|
|
|
|
[[case]] # reentrant format
|
|
reentrant = true
|
|
code = '''
|
|
err = lfs2_mount(&lfs2, &cfg);
|
|
if (err) {
|
|
lfs2_format(&lfs2, &cfg) => 0;
|
|
lfs2_mount(&lfs2, &cfg) => 0;
|
|
}
|
|
lfs2_unmount(&lfs2) => 0;
|
|
'''
|
|
|
|
[[case]] # invalid mount
|
|
code = '''
|
|
lfs2_mount(&lfs2, &cfg) => LFS2_ERR_CORRUPT;
|
|
'''
|
|
|
|
[[case]] # expanding superblock
|
|
define.LFS2_BLOCK_CYCLES = [32, 33, 1]
|
|
define.N = [10, 100, 1000]
|
|
code = '''
|
|
lfs2_format(&lfs2, &cfg) => 0;
|
|
lfs2_mount(&lfs2, &cfg) => 0;
|
|
for (int i = 0; i < N; i++) {
|
|
lfs2_file_open(&lfs2, &file, "dummy",
|
|
LFS2_O_WRONLY | LFS2_O_CREAT | LFS2_O_EXCL) => 0;
|
|
lfs2_file_close(&lfs2, &file) => 0;
|
|
lfs2_stat(&lfs2, "dummy", &info) => 0;
|
|
assert(strcmp(info.name, "dummy") == 0);
|
|
assert(info.type == LFS2_TYPE_REG);
|
|
lfs2_remove(&lfs2, "dummy") => 0;
|
|
}
|
|
lfs2_unmount(&lfs2) => 0;
|
|
|
|
// one last check after power-cycle
|
|
lfs2_mount(&lfs2, &cfg) => 0;
|
|
lfs2_file_open(&lfs2, &file, "dummy",
|
|
LFS2_O_WRONLY | LFS2_O_CREAT | LFS2_O_EXCL) => 0;
|
|
lfs2_file_close(&lfs2, &file) => 0;
|
|
lfs2_stat(&lfs2, "dummy", &info) => 0;
|
|
assert(strcmp(info.name, "dummy") == 0);
|
|
assert(info.type == LFS2_TYPE_REG);
|
|
lfs2_unmount(&lfs2) => 0;
|
|
'''
|
|
|
|
[[case]] # expanding superblock with power cycle
|
|
define.LFS2_BLOCK_CYCLES = [32, 33, 1]
|
|
define.N = [10, 100, 1000]
|
|
code = '''
|
|
lfs2_format(&lfs2, &cfg) => 0;
|
|
for (int i = 0; i < N; i++) {
|
|
lfs2_mount(&lfs2, &cfg) => 0;
|
|
// remove lingering dummy?
|
|
err = lfs2_stat(&lfs2, "dummy", &info);
|
|
assert(err == 0 || (err == LFS2_ERR_NOENT && i == 0));
|
|
if (!err) {
|
|
assert(strcmp(info.name, "dummy") == 0);
|
|
assert(info.type == LFS2_TYPE_REG);
|
|
lfs2_remove(&lfs2, "dummy") => 0;
|
|
}
|
|
|
|
lfs2_file_open(&lfs2, &file, "dummy",
|
|
LFS2_O_WRONLY | LFS2_O_CREAT | LFS2_O_EXCL) => 0;
|
|
lfs2_file_close(&lfs2, &file) => 0;
|
|
lfs2_stat(&lfs2, "dummy", &info) => 0;
|
|
assert(strcmp(info.name, "dummy") == 0);
|
|
assert(info.type == LFS2_TYPE_REG);
|
|
lfs2_unmount(&lfs2) => 0;
|
|
}
|
|
|
|
// one last check after power-cycle
|
|
lfs2_mount(&lfs2, &cfg) => 0;
|
|
lfs2_stat(&lfs2, "dummy", &info) => 0;
|
|
assert(strcmp(info.name, "dummy") == 0);
|
|
assert(info.type == LFS2_TYPE_REG);
|
|
lfs2_unmount(&lfs2) => 0;
|
|
'''
|
|
|
|
[[case]] # reentrant expanding superblock
|
|
define.LFS2_BLOCK_CYCLES = [2, 1]
|
|
define.N = 24
|
|
reentrant = true
|
|
code = '''
|
|
err = lfs2_mount(&lfs2, &cfg);
|
|
if (err) {
|
|
lfs2_format(&lfs2, &cfg) => 0;
|
|
lfs2_mount(&lfs2, &cfg) => 0;
|
|
}
|
|
|
|
for (int i = 0; i < N; i++) {
|
|
// remove lingering dummy?
|
|
err = lfs2_stat(&lfs2, "dummy", &info);
|
|
assert(err == 0 || (err == LFS2_ERR_NOENT && i == 0));
|
|
if (!err) {
|
|
assert(strcmp(info.name, "dummy") == 0);
|
|
assert(info.type == LFS2_TYPE_REG);
|
|
lfs2_remove(&lfs2, "dummy") => 0;
|
|
}
|
|
|
|
lfs2_file_open(&lfs2, &file, "dummy",
|
|
LFS2_O_WRONLY | LFS2_O_CREAT | LFS2_O_EXCL) => 0;
|
|
lfs2_file_close(&lfs2, &file) => 0;
|
|
lfs2_stat(&lfs2, "dummy", &info) => 0;
|
|
assert(strcmp(info.name, "dummy") == 0);
|
|
assert(info.type == LFS2_TYPE_REG);
|
|
}
|
|
|
|
lfs2_unmount(&lfs2) => 0;
|
|
|
|
// one last check after power-cycle
|
|
lfs2_mount(&lfs2, &cfg) => 0;
|
|
lfs2_stat(&lfs2, "dummy", &info) => 0;
|
|
assert(strcmp(info.name, "dummy") == 0);
|
|
assert(info.type == LFS2_TYPE_REG);
|
|
lfs2_unmount(&lfs2) => 0;
|
|
'''
|