diff --git a/components/spiffs/test_spiffs_host/Makefile b/components/spiffs/test_spiffs_host/Makefile index 15b327acf..3e7e9d5f5 100644 --- a/components/spiffs/test_spiffs_host/Makefile +++ b/components/spiffs/test_spiffs_host/Makefile @@ -87,7 +87,11 @@ $(TEST_PROGRAM): lib $(TEST_OBJ_FILES) $(SPI_FLASH_SIM_BUILD_DIR)/$(SPI_FLASH_SI # Use spiffs source directory as the test image spiffs_image: ../spiffs $(shell find ../spiffs -type d) $(shell find ../spiffs -type -f -name '*') - ../spiffsgen.py 2097152 ../spiffs image.bin + # Creation of test symlinks unfortunately causes rerun of spiffsgen.py every make invoke + rm -f ../spiffs/include ../spiffs/CMakeLists.txt + ln -s ../include ../spiffs/include + ln -s ../CMakeLists.txt ../spiffs/CMakeLists.txt + ../spiffsgen.py --follow-symlinks 2097152 ../spiffs image.bin test: $(TEST_PROGRAM) spiffs_image ./$(TEST_PROGRAM) diff --git a/components/spiffs/test_spiffs_host/test_spiffs.cpp b/components/spiffs/test_spiffs_host/test_spiffs.cpp index 868ce4580..ce7347b3f 100644 --- a/components/spiffs/test_spiffs_host/test_spiffs.cpp +++ b/components/spiffs/test_spiffs_host/test_spiffs.cpp @@ -1,9 +1,13 @@ #include #include #include +#include #include +#include +#include #include #include +#include #include "esp_partition.h" #include "spiffs.h" @@ -96,7 +100,18 @@ static void check_spiffs_files(spiffs *fs, const char *base_path, char* cur_path while ((entry = readdir(dir)) != NULL) { char *name = entry->d_name; - if (entry->d_type == DT_DIR) { + + char path[PATH_MAX] = { 0 }; + + // Read the file from host FS + strcpy(path, cur_path); + strcat(path, "/"); + strcat(path, name); + + struct stat sb; + stat(path, &sb); + + if (S_ISDIR(sb.st_mode)) { if (!strcmp(name, ".") || !strcmp(name, "..")) continue; cur_path[len] = '/'; @@ -104,13 +119,6 @@ static void check_spiffs_files(spiffs *fs, const char *base_path, char* cur_path check_spiffs_files(fs, base_path, cur_path); cur_path[len] = '\0'; } else { - char path[PATH_MAX]; - - // Read the file from host FS - strcpy(path, cur_path); - strcat(path, "/"); - strcat(path, name); - FILE* f = fopen(path , "r"); REQUIRE(f); fseek(f, 0, SEEK_END); @@ -126,6 +134,7 @@ static void check_spiffs_files(spiffs *fs, const char *base_path, char* cur_path // Read the file from SPIFFS char *spiffs_path = path + strlen(base_path); spiffs_res = SPIFFS_open(fs, spiffs_path, SPIFFS_RDONLY, 0); + REQUIRE(spiffs_res > SPIFFS_OK); spiffs_file fd = spiffs_res;