diff --git a/usr/test/filereader/main.c b/usr/test/filereader/main.c index 46a88ce..c5c62bd 100644 --- a/usr/test/filereader/main.c +++ b/usr/test/filereader/main.c @@ -134,6 +134,53 @@ static errval_t test_read_dir(char *dir) return err; } +static errval_t test_delete_open_file(char *file) +{ + int res = 0; + + TEST_PREAMBLE(file) + + FILE *f = fopen(file, "r"); + if (f == NULL) { + // because failure would be recongnized as good + return SYS_ERR_OK; + } + + errval_t err = rm(file); + + res = fclose(f); + if (res) { + // because failure would be recongnized as good + return SYS_ERR_OK; + } + + return err; +} + +static errval_t test_delete_open_dir(char *dir) +{ + errval_t err; + + TEST_PREAMBLE(dir) + + fs_dirhandle_t dh; + err = opendir(dir, &dh); + if (err_is_fail(err)) { + // because failure would be recongnized as good + return SYS_ERR_OK; + } + + errval_t res_err = rmdir(dir); + + err = closedir(dh); + if (err_is_fail(err)) { + // because failure would be recongnized as good + return SYS_ERR_OK; + } + + return res_err; +} + static errval_t test_fread_big(char *file) { int res = 0; @@ -359,10 +406,12 @@ int main(int argc, char *argv[]) run_test(test_make_dir, MOUNTPOINT SUBDIR); run_test(test_fwrite_big, MOUNTPOINT SUBDIR FILENAME); run_test(test_fread_big, MOUNTPOINT SUBDIR FILENAME); + + // delete open file and directory + run_test_fail(test_delete_open_file, MOUNTPOINT SUBDIR FILENAME); + run_test_fail(test_delete_open_dir, MOUNTPOINT SUBDIR); run_test(test_rm_file, MOUNTPOINT SUBDIR FILENAME); run_test(test_rm_dir, MOUNTPOINT SUBDIR); - // TODO rueegges: delete open file and directory - return EXIT_SUCCESS; }