diff --git a/cores/esp8266/spiffs_api.cpp b/cores/esp8266/spiffs_api.cpp index 5420174a94..c8a05df060 100644 --- a/cores/esp8266/spiffs_api.cpp +++ b/cores/esp8266/spiffs_api.cpp @@ -63,9 +63,9 @@ bool SPIFFSImpl::exists(const char* path) return rc == SPIFFS_OK; } -DirImplPtr SPIFFSImpl::openDir(const char* path) +DirImplPtr SPIFFSImpl::openDir(const char* path) { - if (!isSpiffsFilenameValid(path)) { + if (strlen(path) > 0 && !isSpiffsFilenameValid(path)) { DEBUGV("SPIFFSImpl::openDir: invalid path=`%s` \r\n", path); return DirImplPtr(); } diff --git a/tests/host/fs/test_fs.cpp b/tests/host/fs/test_fs.cpp index ad5e9fd650..6e14af84f2 100644 --- a/tests/host/fs/test_fs.cpp +++ b/tests/host/fs/test_fs.cpp @@ -160,11 +160,10 @@ TEST_CASE("File names which are too long are rejected", "[fs]") REQUIRE(SPIFFS.open(longName_31, "w")); REQUIRE(SPIFFS.open(longName_31, "r")); REQUIRE(SPIFFS.exists(longName_31)); - auto files = listDir(""); - REQUIRE(files.empty()); } -TEST_CASE("#1685 Duplicate files", "[fs][bugreport]") { +TEST_CASE("#1685 Duplicate files", "[fs][bugreport]") +{ SPIFFS_MOCK_DECLARE(64, 8, 512); REQUIRE(SPIFFS.begin()); createFile("/config", "some text"); @@ -173,3 +172,15 @@ TEST_CASE("#1685 Duplicate files", "[fs][bugreport]") { createFile("/data", "more text"); listDir("/"); } + +TEST_CASE("#1819 Can list all files with openDir(\"\")", "[fs][bugreport]") +{ + SPIFFS_MOCK_DECLARE(64, 8, 512); + REQUIRE(SPIFFS.begin()); + createFile("/file1", "some text"); + createFile("/file2", "other text"); + createFile("file3", "more text"); + createFile("sorta-dir/file4", "\n"); + auto files = listDir(""); + REQUIRE(files.size() == 4); +}