X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftal%2Fpath%2Ftest%2Frun-join.c;fp=ccan%2Ftal%2Fpath%2Ftest%2Frun-join.c;h=a4f63b317f4a6881885100b433cb5f266a82dade;hp=0000000000000000000000000000000000000000;hb=892f59bdc1830443f87ad3aaeddaab2eeefb5937;hpb=1322fd3377cc817720f7552a80d56dba447bcfea diff --git a/ccan/tal/path/test/run-join.c b/ccan/tal/path/test/run-join.c new file mode 100644 index 00000000..a4f63b31 --- /dev/null +++ b/ccan/tal/path/test/run-join.c @@ -0,0 +1,91 @@ +#include +#include +#include + +int main(void) +{ + char *path, *ctx = tal_strdup(NULL, "ctx"); + + plan_tests(34); + + path = path_join(ctx, "foo", "bar"); + ok1(streq(path, "foo/bar")); + ok1(tal_parent(path) == ctx); + tal_free(path); + + path = path_join(ctx, "foo/", "bar"); + ok1(streq(path, "foo/bar")); + ok1(tal_parent(path) == ctx); + tal_free(path); + + path = path_join(ctx, "foo/", "/bar"); + ok1(streq(path, "/bar")); + ok1(tal_parent(path) == ctx); + tal_free(path); + + path = path_join(ctx, "foo", "/bar"); + ok1(streq(path, "/bar")); + ok1(tal_parent(path) == ctx); + tal_free(path); + + /* Test take */ + path = path_join(ctx, "foo", take(tal_strdup(ctx, "bar"))); + ok1(streq(path, "foo/bar")); + ok1(tal_parent(path) == ctx); + ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL); + tal_free(path); + + path = path_join(ctx, "foo", take(tal_strdup(ctx, "/bar"))); + ok1(streq(path, "/bar")); + ok1(tal_parent(path) == ctx); + ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL); + tal_free(path); + + path = path_join(ctx, take(tal_strdup(ctx, "foo")), "bar"); + ok1(streq(path, "foo/bar")); + ok1(tal_parent(path) == ctx); + ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL); + tal_free(path); + + path = path_join(ctx, take(tal_strdup(ctx, "foo")), "/bar"); + ok1(streq(path, "/bar")); + ok1(tal_parent(path) == ctx); + ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL); + tal_free(path); + + path = path_join(ctx, take(tal_strdup(ctx, "foo")), + take(tal_strdup(ctx, "bar"))); + ok1(streq(path, "foo/bar")); + ok1(tal_parent(path) == ctx); + ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL); + tal_free(path); + + path = path_join(ctx, take(tal_strdup(ctx, "foo")), + take(tal_strdup(ctx, "/bar"))); + ok1(streq(path, "/bar")); + ok1(tal_parent(path) == ctx); + ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL); + tal_free(path); + + path = path_join(ctx, take(NULL), "bar"); + ok1(!path); + ok1(!tal_first(ctx)); + + /* This is allowed to succeed, as first arg unneeded. */ + path = path_join(ctx, take(NULL), "/bar"); + ok1(!path || streq(path, "/bar")); + tal_free(path); + ok1(!tal_first(ctx)); + + path = path_join(ctx, "foo", take(NULL)); + ok1(!path); + ok1(!tal_first(ctx)); + + path = path_join(ctx, take(NULL), take(NULL)); + ok1(!path); + ok1(!tal_first(ctx)); + + tal_free(ctx); + + return exit_status(); +}