From 8dd6cae6b5a195449f391b5c05a224def59629ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Thu, 27 Jul 2023 17:52:36 +0200 Subject: [PATCH] Fix invalid path write attempt test Actually since Gitlab CI is running as root, one must use ioctl to make directory immutable. Otherwise, root can create the file which invalidates the test. --- tests/test_OFStream.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/test_OFStream.cpp b/tests/test_OFStream.cpp index e9aa25778..1671a9cbe 100644 --- a/tests/test_OFStream.cpp +++ b/tests/test_OFStream.cpp @@ -7,6 +7,12 @@ #include <filesystem> +#ifdef __linux__ +#include <fcntl.h> +#include <linux/fs.h> +#include <sys/ioctl.h> +#endif // __linux__ + // clazy:excludeall=non-pod-global-static TEST_CASE("OFStream", "[language]") @@ -49,6 +55,7 @@ TEST_CASE("OFStream", "[language]") REQUIRE(not std::filesystem::exists(filename)); } +#ifdef __linux__ SECTION("invalid filename") { if (parallel::rank() == 0) { @@ -60,8 +67,14 @@ TEST_CASE("OFStream", "[language]") std::filesystem::perms::others_all, std::filesystem::perm_options::remove); + int fd = open("tests/badpath/invalidpath", O_DIRECTORY); + int flags = FS_IMMUTABLE_FL; + ioctl(fd, FS_IOC_SETFLAGS, &flags); REQUIRE_THROWS_WITH(std::make_shared<OFStream>(filename), "error: cannot create file " + filename); + flags = 0; + ioctl(fd, FS_IOC_SETFLAGS, &flags); + std::filesystem::permissions(directory, std::filesystem::perms::owner_all | std::filesystem::perms::group_all | std::filesystem::perms::others_all, @@ -69,4 +82,5 @@ TEST_CASE("OFStream", "[language]") std::filesystem::remove_all("tests/badpath"); } } +#endif // __linux__ } -- GitLab