pytorch/c10/test/util/tempfile_test.cpp
cyy 3dc479e70b [1/N] Apply clang-tidy to c10/test/*cpp (#109278)
This series of PR enables clang-tidy checks in c10/test. We aim to finally add the path to lintrunner.toml
Pull Request resolved: https://github.com/pytorch/pytorch/pull/109278
Approved by: https://github.com/kit1980
2023-09-29 02:20:57 +00:00

49 lines
1.4 KiB
C++

#include <c10/util/tempfile.h>
#include <gtest/gtest.h>
#include <sys/stat.h>
#include <optional>
#if !defined(_WIN32)
static bool file_exists(const char* path) {
struct stat st {};
return stat(path, &st) == 0 && S_ISREG(st.st_mode);
}
static bool directory_exists(const char* path) {
struct stat st {};
return stat(path, &st) == 0 && S_ISDIR(st.st_mode);
}
#else
static bool file_exists(const char* path) {
struct _stat st {};
return _stat(path, &st) == 0 && ((st.st_mode & _S_IFMT) == _S_IFREG);
}
static bool directory_exists(const char* path) {
struct _stat st {};
return _stat(path, &st) == 0 && ((st.st_mode & _S_IFMT) == _S_IFDIR);
}
#endif // !defined(_WIN32)
TEST(TempFileTest, MatchesExpectedPattern) {
c10::TempFile file = c10::make_tempfile("test-pattern-");
#if defined(_WIN32)
ASSERT_TRUE(file.open());
#endif
ASSERT_TRUE(file_exists(file.name.c_str()));
#if !defined(_WIN32)
ASSERT_NE(file.name.find("test-pattern-"), std::string::npos);
#endif // !defined(_WIN32)
}
TEST(TempDirTest, tryMakeTempdir) {
std::optional<c10::TempDir> tempdir = c10::make_tempdir("test-dir-");
std::string tempdir_name = tempdir->name;
// directory should exist while tempdir is alive
ASSERT_TRUE(directory_exists(tempdir_name.c_str()));
// directory should not exist after tempdir destroyed
tempdir.reset();
ASSERT_FALSE(directory_exists(tempdir_name.c_str()));
}