commit 5cc70f14c1532e84bd763a1011f1e531007e34f9 from: Omar Polo date: Mon Dec 26 11:57:00 2022 UTC s/check/resolve commit - 4f147cdf76dda78f6e60c93ee92d136eca0e4817 commit + 5cc70f14c1532e84bd763a1011f1e531007e34f9 blob - 85308278a62e6b91bb85a43a889150d3034ffc35 blob + 98db940bae04d845894254901297c22ad81658c6 --- test/iritest.c +++ test/iritest.c @@ -22,7 +22,7 @@ #include "iri.h" static int -check(const char *base, const char *ref, const char *expected) +resolve(const char *base, const char *ref, const char *expected) { static struct iri i; char buf[512]; @@ -56,58 +56,58 @@ main(void) const char *base = "http://a/b/c/d;p?q"; int ret = 0; - ret |= check(base, "g:h", "g:h"); - ret |= check(base, "g", "http://a/b/c/g"); - ret |= check(base, "./g", "http://a/b/c/g"); - ret |= check(base, "g/", "http://a/b/c/g/"); - ret |= check(base, "/g", "http://a/g"); + ret |= resolve(base, "g:h", "g:h"); + ret |= resolve(base, "g", "http://a/b/c/g"); + ret |= resolve(base, "./g", "http://a/b/c/g"); + ret |= resolve(base, "g/", "http://a/b/c/g/"); + ret |= resolve(base, "/g", "http://a/g"); /* * the RFC says "http://g" but we always normalize an * empty path to "/" if there is an authority. */ - ret |= check(base, "//g", "http://g/"); + ret |= resolve(base, "//g", "http://g/"); - ret |= check(base, "?y", "http://a/b/c/d;p?y"); - ret |= check(base, "g?y", "http://a/b/c/g?y"); - ret |= check(base, "#s", "http://a/b/c/d;p?q#s"); - ret |= check(base, "g#s", "http://a/b/c/g#s"); - ret |= check(base, "g?y#s", "http://a/b/c/g?y#s"); - ret |= check(base, ";x", "http://a/b/c/;x"); - ret |= check(base, "g;x", "http://a/b/c/g;x"); - ret |= check(base, "g;x?y#s", "http://a/b/c/g;x?y#s"); - ret |= check(base, "", "http://a/b/c/d;p?q"); - ret |= check(base, ".", "http://a/b/c/"); - ret |= check(base, "./", "http://a/b/c/"); - ret |= check(base, "..", "http://a/b/"); - ret |= check(base, "../", "http://a/b/"); - ret |= check(base, "../g", "http://a/b/g"); - ret |= check(base, "../..", "http://a/"); - ret |= check(base, "../../", "http://a/"); - ret |= check(base, "../../g", "http://a/g"); + ret |= resolve(base, "?y", "http://a/b/c/d;p?y"); + ret |= resolve(base, "g?y", "http://a/b/c/g?y"); + ret |= resolve(base, "#s", "http://a/b/c/d;p?q#s"); + ret |= resolve(base, "g#s", "http://a/b/c/g#s"); + ret |= resolve(base, "g?y#s", "http://a/b/c/g?y#s"); + ret |= resolve(base, ";x", "http://a/b/c/;x"); + ret |= resolve(base, "g;x", "http://a/b/c/g;x"); + ret |= resolve(base, "g;x?y#s", "http://a/b/c/g;x?y#s"); + ret |= resolve(base, "", "http://a/b/c/d;p?q"); + ret |= resolve(base, ".", "http://a/b/c/"); + ret |= resolve(base, "./", "http://a/b/c/"); + ret |= resolve(base, "..", "http://a/b/"); + ret |= resolve(base, "../", "http://a/b/"); + ret |= resolve(base, "../g", "http://a/b/g"); + ret |= resolve(base, "../..", "http://a/"); + ret |= resolve(base, "../../", "http://a/"); + ret |= resolve(base, "../../g", "http://a/g"); - ret |= check(base, "../../../g", "http://a/g"); - ret |= check(base, "../../../../g", "http://a/g"); - ret |= check(base, "/./g", "http://a/g"); - ret |= check(base, "/../g", "http://a/g"); - ret |= check(base, "g.", "http://a/b/c/g."); - ret |= check(base, ".g", "http://a/b/c/.g"); - ret |= check(base, "g..", "http://a/b/c/g.."); - ret |= check(base, "..g", "http://a/b/c/..g"); + ret |= resolve(base, "../../../g", "http://a/g"); + ret |= resolve(base, "../../../../g", "http://a/g"); + ret |= resolve(base, "/./g", "http://a/g"); + ret |= resolve(base, "/../g", "http://a/g"); + ret |= resolve(base, "g.", "http://a/b/c/g."); + ret |= resolve(base, ".g", "http://a/b/c/.g"); + ret |= resolve(base, "g..", "http://a/b/c/g.."); + ret |= resolve(base, "..g", "http://a/b/c/..g"); - ret |= check(base, "./../g", "http://a/b/g"); - ret |= check(base, "./g/.", "http://a/b/c/g/"); - ret |= check(base, "g/./h", "http://a/b/c/g/h"); - ret |= check(base, "g/../h", "http://a/b/c/h"); - ret |= check(base, "g;x=1/./y", "http://a/b/c/g;x=1/y"); - ret |= check(base, "g;x=1/../y", "http://a/b/c/y"); + ret |= resolve(base, "./../g", "http://a/b/g"); + ret |= resolve(base, "./g/.", "http://a/b/c/g/"); + ret |= resolve(base, "g/./h", "http://a/b/c/g/h"); + ret |= resolve(base, "g/../h", "http://a/b/c/h"); + ret |= resolve(base, "g;x=1/./y", "http://a/b/c/g;x=1/y"); + ret |= resolve(base, "g;x=1/../y", "http://a/b/c/y"); - ret |= check(base, "g?y/./x", "http://a/b/c/g?y/./x"); - ret |= check(base, "g?y/../x", "http://a/b/c/g?y/../x"); - ret |= check(base, "g#s/./x", "http://a/b/c/g#s/./x"); - ret |= check(base, "g#s/../x", "http://a/b/c/g#s/../x"); + ret |= resolve(base, "g?y/./x", "http://a/b/c/g?y/./x"); + ret |= resolve(base, "g?y/../x", "http://a/b/c/g?y/../x"); + ret |= resolve(base, "g#s/./x", "http://a/b/c/g#s/./x"); + ret |= resolve(base, "g#s/../x", "http://a/b/c/g#s/../x"); - ret |= check(base, "http:g", "http:g"); + ret |= resolve(base, "http:g", "http:g"); return (ret); }