diff --git a/components/vfs/test/test_vfs_open.c b/components/vfs/test/test_vfs_open.c new file mode 100644 index 0000000000..4db1a386ba --- /dev/null +++ b/components/vfs/test/test_vfs_open.c @@ -0,0 +1,38 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include +#include "esp_vfs.h" +#include "unity.h" + +static int open_errno_test_open(const char * path, int flags, int mode) +{ + errno = EIO; + return -1; +} + +TEST_CASE("esp_vfs_open sets correct errno", "[vfs]") +{ + esp_vfs_t desc = { + .open = open_errno_test_open + }; + TEST_ESP_OK(esp_vfs_register("/test", &desc, NULL)); + + int fd = open("/test/path", 0, 0); + int e = errno; + TEST_ASSERT_EQUAL(-1, fd); + TEST_ASSERT_EQUAL(EIO, e); + + fd = open("/nonexistent/path", 0, 0); + e = errno; + TEST_ASSERT_EQUAL(-1, fd); + TEST_ASSERT_EQUAL(ENOENT, e); + + TEST_ESP_OK(esp_vfs_unregister("/test")); +}