|
|
@ -15,7 +15,7 @@ |
|
|
|
std::string random_bytes(int size) { |
|
|
|
std::string random_bytes(int size) { |
|
|
|
std::random_device rd; |
|
|
|
std::random_device rd; |
|
|
|
std::independent_bits_engine<std::default_random_engine, CHAR_BIT, unsigned char> rbe(rd()); |
|
|
|
std::independent_bits_engine<std::default_random_engine, CHAR_BIT, unsigned char> rbe(rd()); |
|
|
|
std::string bytes(size+1, '\0'); |
|
|
|
std::string bytes(size + 1, '\0'); |
|
|
|
std::generate(bytes.begin(), bytes.end(), std::ref(rbe)); |
|
|
|
std::generate(bytes.begin(), bytes.end(), std::ref(rbe)); |
|
|
|
return bytes; |
|
|
|
return bytes; |
|
|
|
} |
|
|
|
} |
|
|
@ -92,3 +92,36 @@ TEST_CASE("util::read_files_in_dir") { |
|
|
|
REQUIRE(k == v); |
|
|
|
REQUIRE(k == v); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEST_CASE("util::create_directories") { |
|
|
|
|
|
|
|
system("rm /tmp/test_create_directories -rf"); |
|
|
|
|
|
|
|
std::string dir = "/tmp/test_create_directories/a/b/c/d/e/f"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
auto check_dir_permissions = [](const std::string &dir, mode_t mode) -> bool { |
|
|
|
|
|
|
|
struct stat st = {}; |
|
|
|
|
|
|
|
return stat(dir.c_str(), &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR && (st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) == mode; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SECTION("create_directories") { |
|
|
|
|
|
|
|
REQUIRE(util::create_directories(dir, 0755)); |
|
|
|
|
|
|
|
REQUIRE(check_dir_permissions(dir, 0755)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
SECTION("dir already exists") { |
|
|
|
|
|
|
|
REQUIRE(util::create_directories(dir, 0755)); |
|
|
|
|
|
|
|
REQUIRE(util::create_directories(dir, 0755)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
SECTION("a file exists with the same name") { |
|
|
|
|
|
|
|
REQUIRE(util::create_directories(dir, 0755)); |
|
|
|
|
|
|
|
int f = open((dir + "/file").c_str(), O_RDWR | O_CREAT); |
|
|
|
|
|
|
|
REQUIRE(f != -1); |
|
|
|
|
|
|
|
close(f); |
|
|
|
|
|
|
|
REQUIRE(util::create_directories(dir + "/file", 0755) == false); |
|
|
|
|
|
|
|
REQUIRE(util::create_directories(dir + "/file/1/2/3", 0755) == false); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
SECTION("end with slashs") { |
|
|
|
|
|
|
|
REQUIRE(util::create_directories(dir + "/", 0755)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
SECTION("empty") { |
|
|
|
|
|
|
|
REQUIRE(util::create_directories("", 0755) == false); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|