Skip to content

Commit

Permalink
update(spiffs): add test case for fsync() call
Browse files Browse the repository at this point in the history
  • Loading branch information
RathiSonika committed Jul 26, 2024
1 parent 4fd9aff commit 1007d49
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
2 changes: 1 addition & 1 deletion components/spiffs/esp_spiffs.c
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ static int vfs_spiffs_fsync(void* ctx, int fd)
SPIFFS_clearerr(efs->fs);
return -1;
}
return res;
return ESP_OK;
}

#ifdef CONFIG_VFS_SUPPORT_DIR
Expand Down
38 changes: 38 additions & 0 deletions components/spiffs/test_apps/main/test_spiffs.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,37 @@ static void test_spiffs_ftruncate(const char *filename)
TEST_ASSERT_EQUAL(0, close(fd));
}

static void test_spiffs_fsync(const char *filename)
{
const char input[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
size_t expected_size = strlen(input);

int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC);
TEST_ASSERT_NOT_EQUAL(-1, fd);

ssize_t wr = write(fd, input, expected_size);
TEST_ASSERT_NOT_EQUAL(-1, wr);

TEST_ASSERT_EQUAL(0, fsync(fd));
struct stat st;
TEST_ASSERT_EQUAL(0, stat(filename, &st));
TEST_ASSERT_EQUAL(wr, st.st_size);

ssize_t wr2 = write(fd, input, expected_size);
TEST_ASSERT_NOT_EQUAL(-1, wr2);

TEST_ASSERT_EQUAL(0, fsync(fd));
TEST_ASSERT_EQUAL(0, stat(filename, &st));
TEST_ASSERT_EQUAL(wr + wr2, st.st_size);

TEST_ASSERT_EQUAL(0, ftruncate(fd, wr));
TEST_ASSERT_EQUAL(0, fsync(fd));
TEST_ASSERT_EQUAL(0, stat(filename, &st));
TEST_ASSERT_EQUAL(wr, st.st_size);

TEST_ASSERT_EQUAL(0, close(fd));
}

static void test_spiffs_can_opendir(const char* path)
{
char name_dir_file[64];
Expand Down Expand Up @@ -710,6 +741,13 @@ TEST_CASE("ftruncate a file", "[spiffs]")
test_teardown();
}

TEST_CASE("fsync works correctly", "[spiffs]")
{
test_setup();
test_spiffs_fsync("/spiffs/fsync.txt");
test_teardown();
}

TEST_CASE("can opendir root directory of FS", "[spiffs]")
{
test_setup();
Expand Down

0 comments on commit 1007d49

Please sign in to comment.