aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-03-22 05:12:42 -0300
committerEuAndreh <eu@euandre.org>2021-03-22 05:12:42 -0300
commit0b6145a386282cf3f40233a9ad4fb1d5893d931e (patch)
tree1c55c0a99d623cc8426dfc0cd67a8bd2e9f5bbb6 /src
parentaux/guix/with-container.sh: Add --fallback to Guix commands (diff)
downloadremembering-0b6145a386282cf3f40233a9ad4fb1d5893d931e.tar.gz
remembering-0b6145a386282cf3f40233a9ad4fb1d5893d931e.tar.xz
src/remembering.c: WIP more tests for mkdir_p
Diffstat (limited to 'src')
-rw-r--r--src/remembering.c86
1 files changed, 81 insertions, 5 deletions
diff --git a/src/remembering.c b/src/remembering.c
index 706b522..a229788 100644
--- a/src/remembering.c
+++ b/src/remembering.c
@@ -23,9 +23,9 @@ static void testing(const char *message) {
fprintf(stderr, "testing: %s...", message);
}
-void test_ok() { fprintf(stderr, " OK.\n"); }
+static void test_ok() { fprintf(stderr, " OK.\n"); }
-FILE *tmpfile() {
+/* static */ FILE *tmpfile() {
char filename[] = "remembering-test.XXXXXX";
errno = 0;
@@ -45,6 +45,30 @@ FILE *tmpfile() {
return f;
}
+
+// static
+char *tmpdir() {
+ char dirname[] = "remembering-test.XXXXXX";
+
+ errno = 0;
+ char *dircpy = malloc(strlen(dirname) + 1);
+ if (!dircpy) {
+ perror("malloc");
+ return NULL;
+ }
+
+ errno = 0;
+ char *dir = mkdtemp(dirname);
+ if (!dir) {
+ perror("mkdtemp");
+ free(dircpy);
+ return NULL;
+ }
+
+ strcpy(dircpy, dir);
+
+ return dircpy;
+}
#endif
static void print_usage(FILE *stream, char *name) {
@@ -239,10 +263,56 @@ static int fallible_mkdir_p(char *path, mode_t mode, const char *const filename,
#ifdef TEST
static void mkdir_p_test() {
+ /*
{
- testing("mkdir_p");
+ testing("mkdir_p a single directory");
+
+ char *dir = tmpdir();
+ if (!dir) {
+ exit(EXIT_FAILURE);
+ }
+
+ int ret = mkdir_p(dir, 0755);
+ if (ret) {
+ free(dir);
+ exit(EXIT_FAILURE);
+ }
+
+ free(dir);
test_ok();
}
+ */
+ /*
+ {
+ testing("mkdir_p nested directories");
+
+ const char *const dir_suffix = "/a/b/c/d/e";
+ char *dir_prefix = tmpdir();
+ if (!dir_prefix) {
+ exit(EXIT_FAILURE);
+ }
+
+ char *dir = malloc(strlen(dir_prefix) + strlen(dir_suffix) + 1);
+ if (!dir) {
+ free(dir_prefix);
+ exit(EXIT_FAILURE);
+ }
+
+ strcpy(dir, dir_prefix);
+ strcat(dir, dir_suffix);
+
+ int ret = mkdir_p(dir, 0755);
+ if (ret) {
+ free(dir);
+ free(dir_prefix);
+ exit(EXIT_FAILURE);
+ }
+
+ free(dir);
+ free(dir_prefix);
+ test_ok();
+ }
+ */
}
#endif
@@ -509,9 +579,14 @@ static void parse_ranked_line_test() {
}
char *value;
- int rank;
- int ret = parse_ranked_line(f, "0 command", &value, &rank);
+ int rank, ret;
+
+ ret = parse_ranked_line(f, "0 command", &value, &rank);
assert(ret == -1);
+
+ ret = parse_ranked_line(f, "1", &value, &rank);
+ assert(ret == -1);
+
fclose(f);
test_ok();
}
@@ -601,6 +676,7 @@ static void parse_ranked_line_test() {
assert(strcmp(value, "") == 0);
assert(rank == 0);
free(value);
+
test_ok();
}
{