tests: clarify test_path_startswith return value (#4508)

A pendant for #4481.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2016-10-30 10:21:29 -04:00 committed by GitHub
parent 87b6ba21b5
commit 0470289b6e
2 changed files with 41 additions and 10 deletions

View file

@ -354,6 +354,16 @@ char* path_startswith(const char *path, const char *prefix) {
assert(path);
assert(prefix);
/* Returns a pointer to the start of the first component after the parts matched by
* the prefix, iff
* - both paths are absolute or both paths are relative,
* and
* - each component in prefix in turn matches a component in path at the same position.
* An empty string will be returned when the prefix and path are equivalent.
*
* Returns NULL otherwise.
*/
if ((path[0] == '/') != (prefix[0] == '/'))
return NULL;

View file

@ -263,16 +263,37 @@ static void test_strv_resolve(void) {
}
static void test_path_startswith(void) {
assert_se(path_startswith("/foo/bar/barfoo/", "/foo"));
assert_se(path_startswith("/foo/bar/barfoo/", "/foo/"));
assert_se(path_startswith("/foo/bar/barfoo/", "/"));
assert_se(path_startswith("/foo/bar/barfoo/", "////"));
assert_se(path_startswith("/foo/bar/barfoo/", "/foo//bar/////barfoo///"));
assert_se(path_startswith("/foo/bar/barfoo/", "/foo/bar/barfoo////"));
assert_se(path_startswith("/foo/bar/barfoo/", "/foo/bar///barfoo/"));
assert_se(path_startswith("/foo/bar/barfoo/", "/foo////bar/barfoo/"));
assert_se(path_startswith("/foo/bar/barfoo/", "////foo/bar/barfoo/"));
assert_se(path_startswith("/foo/bar/barfoo/", "/foo/bar/barfoo"));
const char *p;
p = path_startswith("/foo/bar/barfoo/", "/foo");
assert_se(streq_ptr(p, "bar/barfoo/"));
p = path_startswith("/foo/bar/barfoo/", "/foo/");
assert_se(streq_ptr(p, "bar/barfoo/"));
p = path_startswith("/foo/bar/barfoo/", "/");
assert_se(streq_ptr(p, "foo/bar/barfoo/"));
p = path_startswith("/foo/bar/barfoo/", "////");
assert_se(streq_ptr(p, "foo/bar/barfoo/"));
p = path_startswith("/foo/bar/barfoo/", "/foo//bar/////barfoo///");
assert_se(streq_ptr(p, ""));
p = path_startswith("/foo/bar/barfoo/", "/foo/bar/barfoo////");
assert_se(streq_ptr(p, ""));
p = path_startswith("/foo/bar/barfoo/", "/foo/bar///barfoo/");
assert_se(streq_ptr(p, ""));
p = path_startswith("/foo/bar/barfoo/", "/foo////bar/barfoo/");
assert_se(streq_ptr(p, ""));
p = path_startswith("/foo/bar/barfoo/", "////foo/bar/barfoo/");
assert_se(streq_ptr(p, ""));
p = path_startswith("/foo/bar/barfoo/", "/foo/bar/barfoo");
assert_se(streq_ptr(p, ""));
assert_se(!path_startswith("/foo/bar/barfoo/", "/foo/bar/barfooa/"));
assert_se(!path_startswith("/foo/bar/barfoo/", "/foo/bar/barfooa"));