tmpdir cleanup
This commit is contained in:
parent
2c820c1dd7
commit
7b3f3a475a
@ -17,19 +17,38 @@
|
|||||||
|
|
||||||
#include <linux/wait.h>
|
#include <linux/wait.h>
|
||||||
|
|
||||||
void setUp(void) {
|
static char *INITIAL_DIR = NULL;
|
||||||
static char *initialDir = NULL;
|
static char *TMP_DIR = NULL;
|
||||||
if (initialDir == NULL) {
|
|
||||||
initialDir = get_current_dir_name();
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, initialDir,
|
void removeDirectory(char *dir) {
|
||||||
"get working directory failed");
|
char cmd[256];
|
||||||
TEST_ASSERT_EQUAL_MESSAGE(0, chdir(initialDir),
|
sprintf(cmd, "rm -r %s", dir);
|
||||||
"returning to working directory failed");
|
TEST_ASSERT_EQUAL(0, system(cmd));
|
||||||
}
|
}
|
||||||
|
|
||||||
void tearDown(void) {}
|
void setUp(void) {
|
||||||
|
INITIAL_DIR = get_current_dir_name();
|
||||||
|
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, INITIAL_DIR,
|
||||||
|
"get working directory failed");
|
||||||
|
|
||||||
|
const char tmp_dir[] = "/tmp/tmpdir-XXXXXX";
|
||||||
|
|
||||||
|
TMP_DIR = malloc(sizeof(tmp_dir));
|
||||||
|
strcpy(TMP_DIR, tmp_dir);
|
||||||
|
|
||||||
|
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, mkdtemp(TMP_DIR), "tmpdir failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
void tearDown(void) {
|
||||||
|
TEST_ASSERT_EQUAL_MESSAGE(0, chdir(INITIAL_DIR),
|
||||||
|
"returning to working directory failed");
|
||||||
|
free(INITIAL_DIR);
|
||||||
|
INITIAL_DIR = NULL;
|
||||||
|
|
||||||
|
removeDirectory(TMP_DIR);
|
||||||
|
free(TMP_DIR);
|
||||||
|
TMP_DIR = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
long clone3(struct clone_args *cl_args) {
|
long clone3(struct clone_args *cl_args) {
|
||||||
return syscall(SYS_clone3, cl_args, sizeof(struct clone_args));
|
return syscall(SYS_clone3, cl_args, sizeof(struct clone_args));
|
||||||
@ -37,8 +56,6 @@ long clone3(struct clone_args *cl_args) {
|
|||||||
|
|
||||||
void test_cloneFs_chdir_doesPropagate(void) {
|
void test_cloneFs_chdir_doesPropagate(void) {
|
||||||
// PREPARE
|
// PREPARE
|
||||||
char tmpDir[] = "/tmp/tmpdir-XXXXXX";
|
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, mkdtemp(tmpDir), "tmpdir failed");
|
|
||||||
|
|
||||||
// ACT
|
// ACT
|
||||||
pid_t forkedChildPid;
|
pid_t forkedChildPid;
|
||||||
@ -64,7 +81,7 @@ void test_cloneFs_chdir_doesPropagate(void) {
|
|||||||
|
|
||||||
long cloneResult = clone3(&cl_args);
|
long cloneResult = clone3(&cl_args);
|
||||||
if (cloneResult == 0) {
|
if (cloneResult == 0) {
|
||||||
if (chdir(tmpDir) != 0) {
|
if (chdir(TMP_DIR) != 0) {
|
||||||
exit(1); // chdir failed
|
exit(1); // chdir failed
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,7 +100,7 @@ void test_cloneFs_chdir_doesPropagate(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *cwd = get_current_dir_name();
|
char *cwd = get_current_dir_name();
|
||||||
int directory_moved = strcmp(cwd, tmpDir);
|
int directory_moved = strcmp(cwd, TMP_DIR);
|
||||||
free(cwd);
|
free(cwd);
|
||||||
|
|
||||||
if (directory_moved != 0) {
|
if (directory_moved != 0) {
|
||||||
@ -104,8 +121,6 @@ void test_cloneFs_chdir_doesPropagate(void) {
|
|||||||
|
|
||||||
void test_cloneNoFs_chdir_doesNotPropagate(void) {
|
void test_cloneNoFs_chdir_doesNotPropagate(void) {
|
||||||
// PREPARE
|
// PREPARE
|
||||||
char tmpDir[] = "/tmp/tmpdir-XXXXXX";
|
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, mkdtemp(tmpDir), "tmpdir failed");
|
|
||||||
|
|
||||||
// ACT
|
// ACT
|
||||||
pid_t forkedChildPid;
|
pid_t forkedChildPid;
|
||||||
@ -131,7 +146,7 @@ void test_cloneNoFs_chdir_doesNotPropagate(void) {
|
|||||||
|
|
||||||
long cloneResult = clone3(&cl_args);
|
long cloneResult = clone3(&cl_args);
|
||||||
if (cloneResult == 0) {
|
if (cloneResult == 0) {
|
||||||
if (chdir(tmpDir) != 0) {
|
if (chdir(TMP_DIR) != 0) {
|
||||||
exit(1); // chdir failed
|
exit(1); // chdir failed
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,7 +165,7 @@ void test_cloneNoFs_chdir_doesNotPropagate(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *cwd = get_current_dir_name();
|
char *cwd = get_current_dir_name();
|
||||||
int directory_moved = strcmp(cwd, tmpDir);
|
int directory_moved = strcmp(cwd, TMP_DIR);
|
||||||
free(cwd);
|
free(cwd);
|
||||||
|
|
||||||
if (directory_moved == 0) {
|
if (directory_moved == 0) {
|
||||||
|
@ -17,19 +17,38 @@
|
|||||||
|
|
||||||
#include <linux/wait.h>
|
#include <linux/wait.h>
|
||||||
|
|
||||||
void setUp(void) {
|
static char *INITIAL_DIR = NULL;
|
||||||
static char *initialDir = NULL;
|
static char *TMP_DIR = NULL;
|
||||||
if (initialDir == NULL) {
|
|
||||||
initialDir = get_current_dir_name();
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, initialDir,
|
void removeDirectory(char *dir) {
|
||||||
"get working directory failed");
|
char cmd[256];
|
||||||
TEST_ASSERT_EQUAL_MESSAGE(0, chdir(initialDir),
|
sprintf(cmd, "rm -r %s", dir);
|
||||||
"returning to working directory failed");
|
TEST_ASSERT_EQUAL(0, system(cmd));
|
||||||
}
|
}
|
||||||
|
|
||||||
void tearDown(void) {}
|
void setUp(void) {
|
||||||
|
INITIAL_DIR = get_current_dir_name();
|
||||||
|
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, INITIAL_DIR,
|
||||||
|
"get working directory failed");
|
||||||
|
|
||||||
|
const char tmp_dir[] = "/tmp/tmpdir-XXXXXX";
|
||||||
|
|
||||||
|
TMP_DIR = malloc(sizeof(tmp_dir));
|
||||||
|
strcpy(TMP_DIR, tmp_dir);
|
||||||
|
|
||||||
|
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, mkdtemp(TMP_DIR), "tmpdir failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
void tearDown(void) {
|
||||||
|
TEST_ASSERT_EQUAL_MESSAGE(0, chdir(INITIAL_DIR),
|
||||||
|
"returning to working directory failed");
|
||||||
|
free(INITIAL_DIR);
|
||||||
|
INITIAL_DIR = NULL;
|
||||||
|
|
||||||
|
removeDirectory(TMP_DIR);
|
||||||
|
free(TMP_DIR);
|
||||||
|
TMP_DIR = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
long clone3(struct clone_args *cl_args) {
|
long clone3(struct clone_args *cl_args) {
|
||||||
return syscall(SYS_clone3, cl_args, sizeof(struct clone_args));
|
return syscall(SYS_clone3, cl_args, sizeof(struct clone_args));
|
||||||
@ -37,8 +56,6 @@ long clone3(struct clone_args *cl_args) {
|
|||||||
|
|
||||||
void test_unshareNoFsFromFork_chdir_doesNotPropagate(void) {
|
void test_unshareNoFsFromFork_chdir_doesNotPropagate(void) {
|
||||||
// PREPARE
|
// PREPARE
|
||||||
char tmpDir[] = "/tmp/tmpdir-XXXXXX";
|
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, mkdtemp(tmpDir), "tmpdir failed");
|
|
||||||
|
|
||||||
// ACT
|
// ACT
|
||||||
pid_t forkedChildPid;
|
pid_t forkedChildPid;
|
||||||
@ -53,7 +70,7 @@ void test_unshareNoFsFromFork_chdir_doesNotPropagate(void) {
|
|||||||
exit(1); // unshare failed
|
exit(1); // unshare failed
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chdir(tmpDir) != 0) {
|
if (chdir(TMP_DIR) != 0) {
|
||||||
exit(2); // chdir failed
|
exit(2); // chdir failed
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +89,7 @@ void test_unshareNoFsFromFork_chdir_doesNotPropagate(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *cwd = get_current_dir_name();
|
char *cwd = get_current_dir_name();
|
||||||
int directory_moved = strcmp(cwd, tmpDir);
|
int directory_moved = strcmp(cwd, TMP_DIR);
|
||||||
free(cwd);
|
free(cwd);
|
||||||
|
|
||||||
if (directory_moved == 0) {
|
if (directory_moved == 0) {
|
||||||
@ -93,8 +110,6 @@ void test_unshareNoFsFromFork_chdir_doesNotPropagate(void) {
|
|||||||
|
|
||||||
void test_unshareFsFromFork_chdir_doesNotPropagate(void) {
|
void test_unshareFsFromFork_chdir_doesNotPropagate(void) {
|
||||||
// PREPARE
|
// PREPARE
|
||||||
char tmpDir[] = "/tmp/tmpdir-XXXXXX";
|
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(NULL, mkdtemp(tmpDir), "tmpdir failed");
|
|
||||||
|
|
||||||
// ACT
|
// ACT
|
||||||
pid_t forkedChildPid;
|
pid_t forkedChildPid;
|
||||||
@ -109,7 +124,7 @@ void test_unshareFsFromFork_chdir_doesNotPropagate(void) {
|
|||||||
exit(1); // unshare failed
|
exit(1); // unshare failed
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chdir(tmpDir) != 0) {
|
if (chdir(TMP_DIR) != 0) {
|
||||||
exit(2); // chdir failed
|
exit(2); // chdir failed
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +143,7 @@ void test_unshareFsFromFork_chdir_doesNotPropagate(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *cwd = get_current_dir_name();
|
char *cwd = get_current_dir_name();
|
||||||
int directory_moved = strcmp(cwd, tmpDir);
|
int directory_moved = strcmp(cwd, TMP_DIR);
|
||||||
free(cwd);
|
free(cwd);
|
||||||
|
|
||||||
if (directory_moved == 0) {
|
if (directory_moved == 0) {
|
||||||
@ -149,15 +164,12 @@ void test_unshareFsFromFork_chdir_doesNotPropagate(void) {
|
|||||||
|
|
||||||
void test_unshareNoFsFromClone_chdir_doesPropagate(void) {
|
void test_unshareNoFsFromClone_chdir_doesPropagate(void) {
|
||||||
// PREPARE
|
// PREPARE
|
||||||
char tmpDir[] = "/tmp/tmpdir-XXXXXX";
|
|
||||||
TEST_ASSERT_NOT_EQUAL(NULL, mkdtemp(tmpDir));
|
|
||||||
|
|
||||||
char subDirA[21];
|
char subDirA[21];
|
||||||
TEST_ASSERT_GREATER_THAN(0, sprintf(subDirA, "%s/a", tmpDir));
|
TEST_ASSERT_GREATER_THAN(0, sprintf(subDirA, "%s/a", TMP_DIR));
|
||||||
TEST_ASSERT_EQUAL(0, mkdir(subDirA, 0700));
|
TEST_ASSERT_EQUAL(0, mkdir(subDirA, 0700));
|
||||||
|
|
||||||
char subDirB[21];
|
char subDirB[21];
|
||||||
TEST_ASSERT_GREATER_THAN(0, sprintf(subDirB, "%s/b", tmpDir));
|
TEST_ASSERT_GREATER_THAN(0, sprintf(subDirB, "%s/b", TMP_DIR));
|
||||||
TEST_ASSERT_EQUAL(0, mkdir(subDirB, 0700));
|
TEST_ASSERT_EQUAL(0, mkdir(subDirB, 0700));
|
||||||
|
|
||||||
// ACT
|
// ACT
|
||||||
@ -232,15 +244,12 @@ void test_unshareNoFsFromClone_chdir_doesPropagate(void) {
|
|||||||
|
|
||||||
void test_unshareFsFromClone_chdir_doesNotPropagate(void) {
|
void test_unshareFsFromClone_chdir_doesNotPropagate(void) {
|
||||||
// PREPARE
|
// PREPARE
|
||||||
char tmpDir[] = "/tmp/tmpdir-XXXXXX";
|
|
||||||
TEST_ASSERT_NOT_EQUAL(NULL, mkdtemp(tmpDir));
|
|
||||||
|
|
||||||
char subDirA[21];
|
char subDirA[21];
|
||||||
TEST_ASSERT_GREATER_THAN(0, sprintf(subDirA, "%s/a", tmpDir));
|
TEST_ASSERT_GREATER_THAN(0, sprintf(subDirA, "%s/a", TMP_DIR));
|
||||||
TEST_ASSERT_EQUAL(0, mkdir(subDirA, 0700));
|
TEST_ASSERT_EQUAL(0, mkdir(subDirA, 0700));
|
||||||
|
|
||||||
char subDirB[21];
|
char subDirB[21];
|
||||||
TEST_ASSERT_GREATER_THAN(0, sprintf(subDirB, "%s/b", tmpDir));
|
TEST_ASSERT_GREATER_THAN(0, sprintf(subDirB, "%s/b", TMP_DIR));
|
||||||
TEST_ASSERT_EQUAL(0, mkdir(subDirB, 0700));
|
TEST_ASSERT_EQUAL(0, mkdir(subDirB, 0700));
|
||||||
|
|
||||||
// ACT
|
// ACT
|
||||||
|
Reference in New Issue
Block a user