From 901bdb4cd3689fb7258359a28f2627fb0ff70ce9 Mon Sep 17 00:00:00 2001 From: Samuel Gomes Date: Wed, 13 Dec 2023 12:26:09 +0530 Subject: [PATCH] Add filesys test --- internal/c/libqb/src/filesystem.cpp | 4 +- .../compile_tests/filesystem/filesys_test.bas | 55 +++++++++++++++++++ .../filesystem/filesys_test.output | 11 ++++ 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 tests/compile_tests/filesystem/filesys_test.bas create mode 100644 tests/compile_tests/filesystem/filesys_test.output diff --git a/internal/c/libqb/src/filesystem.cpp b/internal/c/libqb/src/filesystem.cpp index 38e8b6268..2f0259ab4 100644 --- a/internal/c/libqb/src/filesystem.cpp +++ b/internal/c/libqb/src/filesystem.cpp @@ -769,7 +769,7 @@ void sub_kill(qbs *str) { } // Process all matches - while (!IsStringEmpty(entry)) { + do { // We'll delete only if it is a file if (FileExists(fileName.c_str())) { if (remove(fileName.c_str())) { @@ -791,7 +791,7 @@ void sub_kill(qbs *str) { entry = GetDirectoryEntryName(nullptr); // get the next entry filepath_join(fileName, directory, entry); - } + } while (!IsStringEmpty(entry)); } /// @brief Creates a new directory diff --git a/tests/compile_tests/filesystem/filesys_test.bas b/tests/compile_tests/filesystem/filesys_test.bas new file mode 100644 index 000000000..411317e9f --- /dev/null +++ b/tests/compile_tests/filesystem/filesys_test.bas @@ -0,0 +1,55 @@ +$CONSOLE:ONLY +OPTION _EXPLICIT + +CHDIR _STARTDIR$ + +PRINT "Creating directory temp_dir" +MKDIR "temp_dir" + +PRINT "Changing to directory temp_dir" +CHDIR "temp_dir" + +PRINT "Changing to parent directory" +CHDIR ".." + +PRINT "Renaming temp_dir to dummy_dir" +NAME "temp_dir" AS "dummy_dir" + +PRINT "_DIREXISTS(dummy_dir):"; _DIREXISTS("./dummy_dir") + +PRINT "Creating a temporary file inside dummy_dir" +DIM fileName AS STRING: fileName = CreateDummyFile$("./dummy_dir/") + +PRINT "_FILEEXISTS(fileName):"; _FILEEXISTS(fileName) + +PRINT "Deleting fileName" +KILL fileName + +PRINT "Creating 10 dummy files inside dummy_dir" +DIM i AS LONG: FOR i = 0 TO 9 + fileName = CreateDummyFile$("./dummy_dir/") +NEXT i + +PRINT "Deleting all 10 dummy files" +KILL "./dummy_dir/*.tmp" + +PRINT "Deleting dummy_dir" +RMDIR "dummy_dir" + +SYSTEM + +FUNCTION CreateDummyFile$ (directory AS STRING) + DO + DIM fileName AS STRING: fileName = LTRIM$(STR$(100! * (TIMER + RND))) + ".tmp" + LOOP WHILE _FILEEXISTS(directory + fileName) + + fileName = directory + fileName + + DIM h AS LONG: h = FREEFILE + + OPEN fileName FOR OUTPUT AS h + PRINT #h, "Delete me!" + CLOSE h + + CreateDummyFile = fileName +END FUNCTION diff --git a/tests/compile_tests/filesystem/filesys_test.output b/tests/compile_tests/filesystem/filesys_test.output new file mode 100644 index 000000000..a006be315 --- /dev/null +++ b/tests/compile_tests/filesystem/filesys_test.output @@ -0,0 +1,11 @@ +Creating directory temp_dir +Changing to directory temp_dir +Changing to parent directory +Renaming temp_dir to dummy_dir +_DIREXISTS(dummy_dir):-1 +Creating a temporary file inside dummy_dir +_FILEEXISTS(fileName):-1 +Deleting fileName +Creating 10 dummy files inside dummy_dir +Deleting all 10 dummy files +Deleting dummy_dir