1 #include <ccan/tal/path/path.h>
2 #include <ccan/tal/path/path.c>
3 #include <ccan/tap/tap.h>
4 
main(void)5 int main(void)
6 {
7 	char *path, *ctx = tal_strdup(NULL, "ctx");
8 
9 	plan_tests(26);
10 
11 	path = path_dirname(ctx, "/usr/lib");
12 	ok1(streq(path, "/usr"));
13 	ok1(tal_parent(path) == ctx);
14 	path = path_dirname(ctx, "/usr/");
15 	ok1(streq(path, "/"));
16 	ok1(tal_parent(path) == ctx);
17 	path = path_dirname(ctx, "/usr//");
18 	ok1(streq(path, "/"));
19 	ok1(tal_parent(path) == ctx);
20 	path = path_dirname(ctx, "usr");
21 	ok1(streq(path, "."));
22 	ok1(tal_parent(path) == ctx);
23 	path = path_dirname(ctx, "/");
24 	ok1(streq(path, "/"));
25 	ok1(tal_parent(path) == ctx);
26 	path = path_dirname(ctx, "//");
27 	ok1(streq(path, "/"));
28 	ok1(tal_parent(path) == ctx);
29 	path = path_dirname(ctx, ".");
30 	ok1(streq(path, "."));
31 	ok1(tal_parent(path) == ctx);
32 	path = path_dirname(ctx, "./");
33 	ok1(streq(path, "."));
34 	ok1(tal_parent(path) == ctx);
35 	path = path_dirname(ctx, "..");
36 	ok1(streq(path, "."));
37 	ok1(tal_parent(path) == ctx);
38 	path = path_dirname(ctx, "../");
39 	ok1(streq(path, "."));
40 	ok1(tal_parent(path) == ctx);
41 	tal_free(ctx);
42 
43 	ctx = tal_strdup(NULL, "ctx");
44 	ok1(!tal_first(ctx));
45 
46 	/* Test take */
47 	path = path_dirname(ctx, take(tal_strdup(ctx, "..")));
48 	ok1(streq(path, "."));
49 	ok1(tal_parent(path) == ctx);
50 	ok1(tal_first(ctx) == path && !tal_next(path));
51 	tal_free(path);
52 	ok1(path_dirname(ctx, take(NULL)) == NULL);
53 	ok1(!tal_first(ctx));
54 
55 	tal_free(ctx);
56 
57 	return exit_status();
58 }
59