Skip to content
Snippets Groups Projects

Create missing directories when creating a file

1 file
+ 14
0
Compare changes
  • Side-by-side
  • Inline
+ 14
0
@@ -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__
}
Loading