diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-04-06 22:39:44 +0200 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-04-07 22:08:51 +0200 |
commit | 6808e00463661322553ae0756ad9e3a486d0cc61 (patch) | |
tree | 2697a0c04b741b95a07bab445d5140b5822a4c93 /src/test/test-path-util.c | |
parent | conf-files: drop redundant call of chase() (diff) | |
download | systemd-6808e00463661322553ae0756ad9e3a486d0cc61.tar.xz systemd-6808e00463661322553ae0756ad9e3a486d0cc61.zip |
path-util: introduce path_compare_filename()
Diffstat (limited to '')
-rw-r--r-- | src/test/test-path-util.c | 54 |
1 files changed, 49 insertions, 5 deletions
diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c index 136005d51f..87e33919e0 100644 --- a/src/test/test-path-util.c +++ b/src/test/test-path-util.c @@ -46,11 +46,6 @@ TEST(path) { assert_se(!path_equal_ptr("/a", "/b")); assert_se(!path_equal_ptr("/a", NULL)); assert_se(!path_equal_ptr(NULL, "/a")); - - assert_se(path_equal_filename("/a/c", "/b/c")); - assert_se(path_equal_filename("/a", "/a")); - assert_se(!path_equal_filename("/a/b", "/a/c")); - assert_se(!path_equal_filename("/b", "/c")); } static void test_path_simplify_one(const char *in, const char *out) { @@ -150,6 +145,55 @@ TEST(path_compare) { test_path_compare_one("/foo/a/b", "/foo/aaa", -1); } +static void test_path_compare_filename_one(const char *a, const char *b, int expected) { + int r; + + assert_se(path_compare_filename(a, a) == 0); + assert_se(path_compare_filename(b, b) == 0); + + r = path_compare_filename(a, b); + assert_se((r > 0) == (expected > 0) && (r < 0) == (expected < 0)); + r = path_compare_filename(b, a); + assert_se((r < 0) == (expected > 0) && (r > 0) == (expected < 0)); + + assert_se(path_equal_filename(a, a) == 1); + assert_se(path_equal_filename(b, b) == 1); + assert_se(path_equal_filename(a, b) == (expected == 0)); + assert_se(path_equal_filename(b, a) == (expected == 0)); +} + +TEST(path_compare_filename) { + test_path_compare_filename_one("/goo", "/goo", 0); + test_path_compare_filename_one("/goo", "/goo", 0); + test_path_compare_filename_one("//goo", "/goo", 0); + test_path_compare_filename_one("//goo/////", "/goo", 0); + test_path_compare_filename_one("goo/////", "goo", 0); + test_path_compare_filename_one("/goo/boo", "/goo//boo", 0); + test_path_compare_filename_one("//goo/boo", "/goo/boo//", 0); + test_path_compare_filename_one("//goo/././//./boo//././//", "/goo/boo//.", 0); + test_path_compare_filename_one("/.", "//.///", -1); + test_path_compare_filename_one("/x", "x/", 0); + test_path_compare_filename_one("x/", "/", 1); + test_path_compare_filename_one("/x/./y", "x/y", 0); + test_path_compare_filename_one("/x/./y", "/x/y", 0); + test_path_compare_filename_one("/x/./././y", "/x/y/././.", 0); + test_path_compare_filename_one("./x/./././y", "./x/y/././.", 0); + test_path_compare_filename_one(".", "./.", -1); + test_path_compare_filename_one(".", "././.", -1); + test_path_compare_filename_one("./..", ".", 1); + test_path_compare_filename_one("x/.y", "x/y", -1); + test_path_compare_filename_one("foo", "/foo", 0); + test_path_compare_filename_one("/foo", "/foo/bar", 1); + test_path_compare_filename_one("/foo/aaa", "/foo/b", -1); + test_path_compare_filename_one("/foo/aaa", "/foo/b/a", 1); + test_path_compare_filename_one("/foo/a", "/foo/aaa", -1); + test_path_compare_filename_one("/foo/a/b", "/foo/aaa", 1); + test_path_compare_filename_one("/a/c", "/b/c", 0); + test_path_compare_filename_one("/a", "/a", 0); + test_path_compare_filename_one("/a/b", "/a/c", -1); + test_path_compare_filename_one("/b", "/c", -1); +} + TEST(path_equal_root) { /* Nail down the details of how path_equal("/", ...) works. */ |