run-join.c 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include <ccan/tal/path/path.h>
  2. #include <ccan/tal/path/path.c>
  3. #include <ccan/tap/tap.h>
  4. int main(void)
  5. {
  6. char *path, *ctx = tal_strdup(NULL, "ctx");
  7. plan_tests(34);
  8. path = path_join(ctx, "foo", "bar");
  9. ok1(streq(path, "foo/bar"));
  10. ok1(tal_parent(path) == ctx);
  11. tal_free(path);
  12. path = path_join(ctx, "foo/", "bar");
  13. ok1(streq(path, "foo/bar"));
  14. ok1(tal_parent(path) == ctx);
  15. tal_free(path);
  16. path = path_join(ctx, "foo/", "/bar");
  17. ok1(streq(path, "/bar"));
  18. ok1(tal_parent(path) == ctx);
  19. tal_free(path);
  20. path = path_join(ctx, "foo", "/bar");
  21. ok1(streq(path, "/bar"));
  22. ok1(tal_parent(path) == ctx);
  23. tal_free(path);
  24. /* Test take */
  25. path = path_join(ctx, "foo", take(tal_strdup(ctx, "bar")));
  26. ok1(streq(path, "foo/bar"));
  27. ok1(tal_parent(path) == ctx);
  28. ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL);
  29. tal_free(path);
  30. path = path_join(ctx, "foo", take(tal_strdup(ctx, "/bar")));
  31. ok1(streq(path, "/bar"));
  32. ok1(tal_parent(path) == ctx);
  33. ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL);
  34. tal_free(path);
  35. path = path_join(ctx, take(tal_strdup(ctx, "foo")), "bar");
  36. ok1(streq(path, "foo/bar"));
  37. ok1(tal_parent(path) == ctx);
  38. ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL);
  39. tal_free(path);
  40. path = path_join(ctx, take(tal_strdup(ctx, "foo")), "/bar");
  41. ok1(streq(path, "/bar"));
  42. ok1(tal_parent(path) == ctx);
  43. ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL);
  44. tal_free(path);
  45. path = path_join(ctx, take(tal_strdup(ctx, "foo")),
  46. take(tal_strdup(ctx, "bar")));
  47. ok1(streq(path, "foo/bar"));
  48. ok1(tal_parent(path) == ctx);
  49. ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL);
  50. tal_free(path);
  51. path = path_join(ctx, take(tal_strdup(ctx, "foo")),
  52. take(tal_strdup(ctx, "/bar")));
  53. ok1(streq(path, "/bar"));
  54. ok1(tal_parent(path) == ctx);
  55. ok1(tal_first(ctx) == path && tal_next(ctx, path) == NULL);
  56. tal_free(path);
  57. path = path_join(ctx, take(NULL), "bar");
  58. ok1(!path);
  59. ok1(!tal_first(ctx));
  60. /* This is allowed to succeed, as first arg unneeded. */
  61. path = path_join(ctx, take(NULL), "/bar");
  62. ok1(!path || streq(path, "/bar"));
  63. tal_free(path);
  64. ok1(!tal_first(ctx));
  65. path = path_join(ctx, "foo", take(NULL));
  66. ok1(!path);
  67. ok1(!tal_first(ctx));
  68. path = path_join(ctx, take(NULL), take(NULL));
  69. ok1(!path);
  70. ok1(!tal_first(ctx));
  71. tal_free(ctx);
  72. return exit_status();
  73. }