From: Zbigniew Jędrzejewski-Szmek Date: Sat, 16 Sep 2023 15:33:31 +0000 (+0200) Subject: test-path-util: add simple test for is_path() and is_device_path() X-Git-Tag: v255-rc1~386^2~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bf9a49a5534316353b9fdda1c40026781bc6bda8;p=thirdparty%2Fsystemd.git test-path-util: add simple test for is_path() and is_device_path() I think that those functions should be adjusted, but let's first add a test to establish current behaviour. --- diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c index 8c3a27f2280..c6a746b441d 100644 --- a/src/test/test-path-util.c +++ b/src/test/test-path-util.c @@ -26,10 +26,6 @@ TEST(path) { assert_se(path_is_absolute("/")); assert_se(!path_is_absolute("./")); - assert_se(is_path("/dir")); - assert_se(is_path("a/b")); - assert_se(!is_path(".")); - assert_se(streq(basename("./aa/bb/../file.da."), "file.da.")); assert_se(streq(basename("/aa///.file"), ".file")); assert_se(streq(basename("/aa///file..."), "file...")); @@ -48,6 +44,100 @@ TEST(path) { assert_se(!path_equal_ptr(NULL, "/a")); } +TEST(is_path) { + assert_se(!is_path("foo")); + assert_se(!is_path("dos.ext")); + assert_se( is_path("/dir")); + assert_se( is_path("a/b")); + assert_se( is_path("a/b.ext")); + + assert_se(!is_path(".")); + assert_se(!is_path("")); + assert_se(!is_path("..")); + + assert_se( is_path("/dev")); + assert_se( is_path("/./dev")); + assert_se( is_path("/./dev/.")); + assert_se( is_path("/./dev.")); + assert_se( is_path("//dev")); + assert_se( is_path("///dev")); + assert_se( is_path("/dev/")); + assert_se( is_path("///dev/")); + assert_se( is_path("/./dev/")); + assert_se( is_path("/../dev/")); + assert_se( is_path("/dev/sda")); + assert_se( is_path("/dev/sda5")); + assert_se( is_path("/dev/sda5b3")); + assert_se( is_path("/dev/sda5b3/idontexit")); + assert_se( is_path("/../dev/sda")); + assert_se( is_path("/../../dev/sda5")); + assert_se( is_path("/../../../dev/sda5b3")); + assert_se( is_path("/.././.././dev/sda5b3/idontexit")); + assert_se( is_path("/sys")); + assert_se( is_path("/sys/")); + assert_se( is_path("/./sys")); + assert_se( is_path("/./sys/.")); + assert_se( is_path("/./sys.")); + assert_se( is_path("/sys/what")); + assert_se( is_path("/sys/something/..")); + assert_se( is_path("/sys/something/../")); + assert_se( is_path("/sys////")); + assert_se( is_path("/sys////.")); + assert_se( is_path("/sys/..")); + assert_se( is_path("/sys/../")); + assert_se( is_path("/usr/../dev/sda")); +} + +TEST(is_device_path) { + assert_se(!is_device_path("foo")); + assert_se(!is_device_path("dos.ext")); + assert_se(!is_device_path("/dir")); + assert_se(!is_device_path("a/b")); + assert_se(!is_device_path("a/b.ext")); + + assert_se(!is_device_path(".")); + assert_se(!is_device_path("")); + assert_se(!is_device_path("..")); + + assert_se( is_device_path("/dev")); + assert_se( is_device_path("/./dev")); + assert_se( is_device_path("/./dev/.")); + assert_se(!is_device_path("/./dev.")); + assert_se( is_device_path("/./dev/foo")); + assert_se( is_device_path("/./dev/./foo")); + assert_se(!is_device_path("/./dev./foo")); + assert_se( is_device_path("//dev")); + assert_se( is_device_path("///dev")); + assert_se( is_device_path("/dev/")); + assert_se( is_device_path("///dev/")); + assert_se( is_device_path("/./dev/")); + assert_se(!is_device_path("/../dev/")); + assert_se( is_device_path("/dev/sda")); + assert_se( is_device_path("/dev/sda5")); + assert_se( is_device_path("/dev/sda5b3")); + assert_se( is_device_path("/dev/sda5b3/idontexit")); + assert_se(!is_device_path("/../dev/sda")); + assert_se(!is_device_path("/../../dev/sda5")); + assert_se(!is_device_path("/../../../dev/sda5b3")); + assert_se(!is_device_path("/.././.././dev/sda5b3/idontexit")); + assert_se( is_device_path("/sys")); + assert_se( is_device_path("/sys/")); + assert_se( is_device_path("/./sys")); + assert_se( is_device_path("/./sys/.")); + assert_se(!is_device_path("/./sys.")); + assert_se( is_device_path("/./sys/foo")); + assert_se( is_device_path("/./sys/./foo")); + assert_se(!is_device_path("/./sys./foo")); + assert_se( is_device_path("/sys/what")); + assert_se( is_device_path("/sys/something/..")); + assert_se( is_device_path("/sys/something/../")); + assert_se( is_device_path("/sys////")); + assert_se( is_device_path("/sys////.")); + assert_se( is_device_path("/sys/..")); + assert_se( is_device_path("/sys/../")); + assert_se(!is_device_path("/usr/../dev/sda")); +} + static void test_path_simplify_one(const char *in, const char *out, PathSimplifyFlags flags) { char *p;