mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
parent
6a7551e1f0
commit
1692798860
@ -75,14 +75,14 @@ gcov: test
|
|||||||
find $(CORE_PATH) -name "*.gcno" -exec $(GCOV) -r -pb {} +
|
find $(CORE_PATH) -name "*.gcno" -exec $(GCOV) -r -pb {} +
|
||||||
|
|
||||||
build-info:
|
build-info:
|
||||||
echo "-------- build tools info --------"
|
@echo "-------- build tools info --------"
|
||||||
echo "CC: " $(CC)
|
@echo "CC: " $(CC)
|
||||||
$(CC) -v
|
$(CC) -v
|
||||||
echo "CXX: " $(CXX)
|
@echo "CXX: " $(CXX)
|
||||||
$(CXX) -v
|
$(CXX) -v
|
||||||
echo "GCOV: " $(GCOV)
|
@echo "GCOV: " $(GCOV)
|
||||||
$(GCOV) -v
|
$(GCOV) -v
|
||||||
echo "----------------------------------"
|
@echo "----------------------------------"
|
||||||
|
|
||||||
$(BINARY_DIRECTORY):
|
$(BINARY_DIRECTORY):
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
@ -14,30 +14,69 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <catch.hpp>
|
#include <catch.hpp>
|
||||||
|
#include <map>
|
||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
#include "../common/spiffs_mock.h"
|
#include "../common/spiffs_mock.h"
|
||||||
|
#include <spiffs/spiffs.h>
|
||||||
|
|
||||||
|
static void createFile (const char* name, const char* content)
|
||||||
|
{
|
||||||
|
auto f = SPIFFS.open(name, "w");
|
||||||
|
REQUIRE(f);
|
||||||
|
if (content) {
|
||||||
|
f.print(content);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static String readFile (const char* name)
|
||||||
|
{
|
||||||
|
auto f = SPIFFS.open(name, "r");
|
||||||
|
if (f) {
|
||||||
|
return f.readString();
|
||||||
|
}
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::set<String> listDir (const char* path)
|
||||||
|
{
|
||||||
|
std::set<String> result;
|
||||||
|
Dir dir = SPIFFS.openDir(path);
|
||||||
|
while (dir.next()) {
|
||||||
|
REQUIRE(result.find(dir.fileName()) == std::end(result));
|
||||||
|
result.insert(dir.fileName());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("FS can begin","[fs]")
|
TEST_CASE("FS can begin","[fs]")
|
||||||
{
|
{
|
||||||
SPIFFS_MOCK_DECLARE(1024, 8, 512);
|
SPIFFS_MOCK_DECLARE(64, 8, 512);
|
||||||
REQUIRE(SPIFFS.begin());
|
REQUIRE(SPIFFS.begin());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("FS can't begin with zero size","[fs]")
|
||||||
|
{
|
||||||
|
SPIFFS_MOCK_DECLARE(0, 8, 512);
|
||||||
|
REQUIRE_FALSE(SPIFFS.begin());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Before begin is called, open will fail","[fs]")
|
||||||
|
{
|
||||||
|
SPIFFS_MOCK_DECLARE(64, 8, 512);
|
||||||
|
REQUIRE_FALSE(SPIFFS.open("/foo", "w"));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("FS can create file","[fs]")
|
TEST_CASE("FS can create file","[fs]")
|
||||||
{
|
{
|
||||||
SPIFFS_MOCK_DECLARE(1024, 8, 512);
|
SPIFFS_MOCK_DECLARE(64, 8, 512);
|
||||||
REQUIRE(SPIFFS.begin());
|
REQUIRE(SPIFFS.begin());
|
||||||
{
|
createFile("/test", "");
|
||||||
File f = SPIFFS.open("config.txt", "w");
|
REQUIRE(SPIFFS.exists("/test"));
|
||||||
REQUIRE(f);
|
|
||||||
}
|
|
||||||
REQUIRE(SPIFFS.exists("config.txt"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Files can be written and appended to","[fs]")
|
TEST_CASE("Files can be written and appended to","[fs]")
|
||||||
{
|
{
|
||||||
SPIFFS_MOCK_DECLARE(1024, 8, 512);
|
SPIFFS_MOCK_DECLARE(64, 8, 512);
|
||||||
REQUIRE(SPIFFS.begin());
|
REQUIRE(SPIFFS.begin());
|
||||||
{
|
{
|
||||||
File f = SPIFFS.open("config1.txt", "w");
|
File f = SPIFFS.open("config1.txt", "w");
|
||||||
@ -61,20 +100,76 @@ TEST_CASE("Files can be written and appended to","[fs]")
|
|||||||
|
|
||||||
TEST_CASE("Files persist after reset", "[fs]")
|
TEST_CASE("Files persist after reset", "[fs]")
|
||||||
{
|
{
|
||||||
SPIFFS_MOCK_DECLARE(1024, 8, 512);
|
SPIFFS_MOCK_DECLARE(64, 8, 512);
|
||||||
REQUIRE(SPIFFS.begin());
|
REQUIRE(SPIFFS.begin());
|
||||||
{
|
createFile("config1.txt", "file 1");
|
||||||
File f = SPIFFS.open("config1.txt", "w");
|
|
||||||
REQUIRE(f);
|
|
||||||
f.println("file 1");
|
|
||||||
}
|
|
||||||
SPIFFS_MOCK_RESET();
|
SPIFFS_MOCK_RESET();
|
||||||
REQUIRE(SPIFFS.begin());
|
REQUIRE(SPIFFS.begin());
|
||||||
|
REQUIRE(readFile("config1.txt") == "file 1");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("Filesystem is empty after format", "[fs]")
|
||||||
{
|
{
|
||||||
File f = SPIFFS.open("config1.txt", "r");
|
SPIFFS_MOCK_DECLARE(64, 8, 512);
|
||||||
REQUIRE(f);
|
REQUIRE(SPIFFS.format());
|
||||||
REQUIRE(f.readString() == "file 1\r\n");
|
REQUIRE(SPIFFS.begin());
|
||||||
|
createFile("/1", "first");
|
||||||
|
createFile("/2", "second");
|
||||||
|
REQUIRE(SPIFFS.format());
|
||||||
|
Dir root = SPIFFS.openDir("/");
|
||||||
|
size_t count = 0;
|
||||||
|
while (root.next()) {
|
||||||
|
++count;
|
||||||
}
|
}
|
||||||
|
REQUIRE(count == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Dir lists all files", "[fs]")
|
||||||
|
{
|
||||||
|
SPIFFS_MOCK_DECLARE(64, 8, 512);
|
||||||
|
REQUIRE(SPIFFS.begin());
|
||||||
|
createFile("/empty", "");
|
||||||
|
createFile("/not_empty", "some text");
|
||||||
|
createFile("/another", "more text");
|
||||||
|
createFile("/subdir/empty", "");
|
||||||
|
createFile("/subdir/not_empty", "text again");
|
||||||
|
auto files = listDir("/");
|
||||||
|
REQUIRE(files.size() == 5);
|
||||||
|
REQUIRE(files.find("/empty") != std::end(files));
|
||||||
|
REQUIRE(files.find("/not_empty") != std::end(files));
|
||||||
|
REQUIRE(files.find("/another") != std::end(files));
|
||||||
|
REQUIRE(files.find("/subdir/empty") != std::end(files));
|
||||||
|
REQUIRE(files.find("/subdir/not_empty") != std::end(files));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("File names which are too long are rejected", "[fs]")
|
||||||
|
{
|
||||||
|
SPIFFS_MOCK_DECLARE(64, 8, 512);
|
||||||
|
REQUIRE(SPIFFS.begin());
|
||||||
|
const char* emptyName = "";
|
||||||
|
const char* longName_31 = "/234567890123456789012345678901";
|
||||||
|
const char* longName_32 = "/2345678901234567890123456789012";
|
||||||
|
REQUIRE_FALSE(SPIFFS.open(emptyName, "w"));
|
||||||
|
REQUIRE_FALSE(SPIFFS.open(emptyName, "r"));
|
||||||
|
REQUIRE_FALSE(SPIFFS.exists(emptyName));
|
||||||
|
REQUIRE_FALSE(SPIFFS.open(longName_32, "w"));
|
||||||
|
REQUIRE_FALSE(SPIFFS.open(longName_32, "r"));
|
||||||
|
REQUIRE_FALSE(SPIFFS.exists(longName_32));
|
||||||
|
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]") {
|
||||||
|
SPIFFS_MOCK_DECLARE(64, 8, 512);
|
||||||
|
REQUIRE(SPIFFS.begin());
|
||||||
|
createFile("/config", "some text");
|
||||||
|
createFile("/data", "");
|
||||||
|
readFile("/config");
|
||||||
|
createFile("/data", "more text");
|
||||||
|
listDir("/");
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user