Skip to content

Commit

Permalink
tests that create temporary filesystem entries should use paths prefi…
Browse files Browse the repository at this point in the history
…xed with TEST_WORKING_DIRECTORY
  • Loading branch information
calccrypto committed Jan 7, 2025
1 parent 677eb56 commit ff86a66
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 71 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ jobs:
run: sudo contrib/CI/ubuntu.sh

- name: Configure CMake
run: cmake -B ${{ github.workspace }}/build ${{ env.COMMON_CONFIG }} -DDEP_USE_JEMALLOC=Off
run: cmake -B ${{ github.workspace }}/build ${{ env.COMMON_CONFIG }} -DDEP_USE_JEMALLOC=Off -DTEST_WORKING_DIRECTORY="$(pwd)"

- name: Build
run: cmake --build ${{ github.workspace }}/build -j
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ jobs:
run: contrib/CI/macos.sh

- name: Configure CMake
run: cmake -B ${{ github.workspace }}/build ${{ env.COMMON_CONFIG }}
run: cmake -B ${{ github.workspace }}/build ${{ env.COMMON_CONFIG }} -DTEST_WORKING_DIRECTORY="$(pwd)"

- name: Build
run: cmake --build ${{ github.workspace }}/build -j
Expand Down
17 changes: 8 additions & 9 deletions test/unit/googletest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,35 +71,34 @@ if (CMAKE_CXX_COMPILER)
include_directories(${DEP_INSTALL_PREFIX}/googletest/include)
set(TEST_SRC
OutputBuffers.cpp
PoolArgs.cpp
QueuePerThreadPool.cpp
SinglyLinkedList.cpp
bf.cpp
compress.cpp
debug.cpp
histogram.cpp
print.cpp
swap.cpp
template_db.cpp
trace.cpp
trie.cpp
utils.cpp
xattrs.cpp
)

# these test files use CMAKE_BINARY_DIR
# these test files use CMake variables
set(NEED_PATH
BottomUp.cpp
PoolArgs.cpp
aggregate.cpp
dbutils.cpp
external.cpp
swap.cpp
template_db.cpp
trace.cpp
utils.cpp
)
xattrs.cpp
)
foreach(SRC ${NEED_PATH})
configure_file("${SRC}.in" "${SRC}" @ONLY)
list(APPEND TEST_SRC
"${CMAKE_CURRENT_BINARY_DIR}/${SRC}"
)
)
endforeach()

add_executable(unit_tests ${TEST_SRC} $<TARGET_OBJECTS:gufi_query_lib>)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ TEST(PoolArgs, OUTFILE) {

char outname[MAXPATH];
in.outname.data = outname;
in.outname.len = snprintf(outname, sizeof(outname), "XXXXXX");
in.outname.len = snprintf(outname, sizeof(outname), "@TEST_WORKING_DIRECTORY@/XXXXXX");
const int fd = mkstemp(outname);
EXPECT_NE(fd, -1);
EXPECT_EQ(close(fd), 0);
Expand Down Expand Up @@ -219,7 +219,7 @@ TEST(PoolArgs, OUTFILE_aggregate) {

char outname[MAXPATH];
in.outname.data = outname;
in.outname.len = snprintf(outname, sizeof(outname), "XXXXXX");
in.outname.len = snprintf(outname, sizeof(outname), "@TEST_WORKING_DIRECTORY@/XXXXXX");
const int fd = mkstemp(outname);
EXPECT_NE(fd, -1);
EXPECT_EQ(close(fd), 0);
Expand Down Expand Up @@ -262,7 +262,7 @@ TEST(PoolArgs, OUTDB) {

char outname[MAXPATH];
in.outname.data = outname;
in.outname.len = snprintf(outname, sizeof(outname), "XXXXXX");
in.outname.len = snprintf(outname, sizeof(outname), "@TEST_WORKING_DIRECTORY@/XXXXXX");
const int fd = mkstemp(outname);
EXPECT_NE(fd, -1);
EXPECT_EQ(close(fd), 0);
Expand Down Expand Up @@ -299,7 +299,7 @@ TEST(PoolArgs, OUTDB_aggregate) {

char outname[MAXPATH];
in.outname.data = outname;
in.outname.len = snprintf(outname, sizeof(outname), "XXXXXX");
in.outname.len = snprintf(outname, sizeof(outname), "@TEST_WORKING_DIRECTORY@/XXXXXX");
const int fd = mkstemp(outname);
EXPECT_NE(fd, -1);
EXPECT_EQ(close(fd), 0);
Expand Down Expand Up @@ -341,11 +341,11 @@ TEST(PoolArgs, bad_outdb) {
struct input in;
setup_input(&in, OUTDB, false);

char parent[7];
snprintf(parent, sizeof(parent), "XXXXXX");
char parent[sizeof("@TEST_WORKING_DIRECTORY@/") + 7];
snprintf(parent, sizeof(parent), "@TEST_WORKING_DIRECTORY@/XXXXXX");
ASSERT_EQ(mkdtemp(parent), parent);

char prefix[13];
char prefix[sizeof(parent) + 6];
snprintf(prefix, sizeof(prefix), "%s/outdb", parent);

in.outname.data = prefix;
Expand All @@ -365,11 +365,11 @@ TEST(PoolArgs, bad_outfile) {
struct input in;
setup_input(&in, OUTFILE, false);

char parent[7];
snprintf(parent, sizeof(parent), "XXXXXX");
char parent[sizeof("@TEST_WORKING_DIRECTORY@/") + 7];
snprintf(parent, sizeof(parent), "@TEST_WORKING_DIRECTORY@/XXXXXX");
ASSERT_EQ(mkdtemp(parent), parent);

char prefix[15];
char prefix[sizeof(parent) + 8];
snprintf(prefix, sizeof(prefix), "%s/outfile", parent);

in.outname.data = prefix;
Expand Down
2 changes: 1 addition & 1 deletion test/unit/googletest/dbutils.cpp.in
Original file line number Diff line number Diff line change
Expand Up @@ -803,7 +803,7 @@ TEST(get_rollupscore, nullptr) {
TEST(bottomup_collect_treesummary, nullptr) {
EXPECT_EQ(bottomup_collect_treesummary(nullptr, "", nullptr, ROLLUPSCORE_KNOWN_YES), 1);

char dirname[] = "XXXXXX";
char dirname[] = "@TEST_WORKING_DIRECTORY@/XXXXXX";
ASSERT_EQ(mkdtemp(dirname), dirname);

sll_t sll;
Expand Down
29 changes: 8 additions & 21 deletions test/unit/googletest/external.cpp.in
Original file line number Diff line number Diff line change
Expand Up @@ -78,26 +78,13 @@ static size_t bad_filename(char **dst, const size_t dst_size,

TEST(external, read_file) {
// user external db list
char filename[] = "XXXXXX";
char filename[] = "@TEST_WORKING_DIRECTORY@/XXXXXX";
const int fd = mkstemp(filename);
ASSERT_GE(fd, 0);

// create bad relative path (bad path)
{
char bad_rel_path[] = "XXXXXX"; // full path fails to resolve in external_read_file
const int bad_rel_path_fd = mkstemp(bad_rel_path);
ASSERT_GE(bad_rel_path_fd, 0);
EXPECT_EQ(close(bad_rel_path_fd), 0);
EXPECT_EQ(remove(bad_rel_path), 0);

// add to list
EXPECT_EQ(write(fd, bad_rel_path, (std::size_t) 6), (ssize_t) 6);
EXPECT_EQ(write(fd, "\n", (std::size_t) 1), (ssize_t) 1);
}

// create bad absolute path (bad path)
{
char bad_rel_path[] = "XXXXXX";
char bad_rel_path[] = "@TEST_WORKING_DIRECTORY@/XXXXXX";
const int bad_rel_path_fd = mkstemp(bad_rel_path);
ASSERT_GE(bad_rel_path_fd, 0);
EXPECT_EQ(close(bad_rel_path_fd), 0);
Expand Down Expand Up @@ -125,20 +112,20 @@ TEST(external, read_file) {
}

// create file with contents (good path, not a db)
char not_db_filename[] = "XXXXXX";
char not_db_filename[] = "@TEST_WORKING_DIRECTORY@/XXXXXX";
{
const int not_db_fd = mkstemp(not_db_filename);
ASSERT_GE(not_db_fd, 0);
EXPECT_EQ(write(not_db_fd, not_db_filename, (std::size_t) 6), (ssize_t) 6);
EXPECT_EQ(write(not_db_fd, not_db_filename, sizeof(not_db_filename) - 1), (ssize_t) sizeof(not_db_filename) - 1);
EXPECT_EQ(close(not_db_fd), 0);

// add to list
EXPECT_EQ(write(fd, not_db_filename, (std::size_t) 6), (ssize_t) 6);
EXPECT_EQ(write(fd, not_db_filename, sizeof(not_db_filename) - 1), (ssize_t) sizeof(not_db_filename) - 1);
EXPECT_EQ(write(fd, "\n", (std::size_t) 1), (ssize_t) 1);
}

// create db file (good path, is a db)
char dbname[] = "XXXXXX";
char dbname[] = "@TEST_WORKING_DIRECTORY@/XXXXXX";
{
const int db_fd = mkstemp(dbname);
ASSERT_GE(db_fd, 0);
Expand All @@ -150,7 +137,7 @@ TEST(external, read_file) {
closedb(db);

// add to list
EXPECT_EQ(write(fd, dbname, (std::size_t) 6), (ssize_t) 6);
EXPECT_EQ(write(fd, dbname, sizeof(dbname) - 1), (ssize_t) sizeof(dbname) - 1);
EXPECT_EQ(write(fd, "\n", (std::size_t) 1), (ssize_t) 1);
}

Expand All @@ -168,7 +155,7 @@ TEST(external, read_file) {
const long long int,
const char *) -> int { return 0; },
nullptr),
(std::size_t) 4); // bad relative path does not pass
(std::size_t) 4);

// check that path is valid db
in.check_extdb_valid = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ TEST(swap, stop_twice) {
}

TEST(swap, nonexistant_prefix) {
char parent[] = "XXXXXX";
char parent[] = "@TEST_WORKING_DIRECTORY@/XXXXXX";
ASSERT_NE(mkdtemp(parent), nullptr);

char prefix[1024];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ TEST(template_db, create_copy) {
struct stat st;
EXPECT_EQ(lstat(template_name, &st), -1);

char dst_name[7];
snprintf(dst_name, sizeof(dst_name), "XXXXXX");
char dst_name[sizeof("@TEST_WORKING_DIRECTORY@/") + 7];
snprintf(dst_name, sizeof(dst_name), "@TEST_WORKING_DIRECTORY@/XXXXXX");
int dst = mkstemp(dst_name);
ASSERT_NE(dst, -1);
EXPECT_EQ(close(dst), 0);
Expand Down Expand Up @@ -157,7 +157,7 @@ TEST(create_empty_dbdb, good) {
ASSERT_EQ(create_template(&tdb, create_test_tables, template_name), 0);

// create new directory
char dirname[] = "XXXXXX" ;
char dirname[] = "@TEST_WORKING_DIRECTORY@/XXXXXX" ;
ASSERT_NE(mkdtemp(dirname), nullptr);

refstr_t dst;
Expand All @@ -173,10 +173,9 @@ TEST(create_empty_dbdb, good) {

// create file under dirname not called db.db
char filename[MAXPATH];
SNFORMAT_S(filename, sizeof(filename), 3,
SNFORMAT_S(filename, sizeof(filename), 2,
dst.data, dst.len,
"/", (std::size_t) 1,
"XXXXXX", 6);
"/XXXXXX", (std::size_t) 7);
const int fd = mkstemp(filename);
ASSERT_GT(fd, -1);
EXPECT_EQ(close(fd), 0);
Expand All @@ -189,8 +188,8 @@ TEST(create_empty_dbdb, good) {
// symlink to <dirname>
char symlinktarget[MAXPATH];
SNFORMAT_S(symlinktarget, sizeof(symlinktarget), 2,
"../", (std::size_t) 3,
dst.data, dst.len);
dst.data, dst.len,
"/..", (std::size_t) 3);

// symink to directory causes error
ASSERT_EQ(symlink(symlinktarget, dbname), 0);
Expand All @@ -216,7 +215,7 @@ TEST(create_empty_dbdb, good) {
}

TEST(create_empty_dbdb, path_is_file) {
char filename[] = "XXXXXX" ;
char filename[] = "@TEST_WORKING_DIRECTORY@/XXXXXX" ;
const int fd = mkstemp(filename);
ASSERT_GT(fd, -1);
EXPECT_EQ(close(fd), 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ TEST(scout_trace, no_cleanup) {
ASSERT_EQ(rc, (int) len);

// write trace to file
char tracename[] = "XXXXXX";
char tracename[] = "@TEST_WORKING_DIRECTORY@/XXXXXX";
const int fd = mkstemp(tracename);
ASSERT_GT(fd, -1);
ASSERT_EQ(write(fd, line, len), (ssize_t) len);
Expand Down
Loading

0 comments on commit ff86a66

Please sign in to comment.