From: Jonathan Rajotte Date: Tue, 12 Mar 2019 18:30:31 +0000 (-0400) Subject: Fix tests: the tree origin can be a symlink itself X-Git-Tag: v2.9.12~13 X-Git-Url: http://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=690eb9a92ad23b8578c51a7e3b6c1782321bc9b7 Fix tests: the tree origin can be a symlink itself Problem: The base tree is defined as "/tmp/.....XXXXXX". On systems where "/tmp/" is itself a symlink utils_expand_path will expand the tree origin itself. For example on a base core-image-minimal Yocto build /tmp is a symlink to "/var/tmp", which is a symlink to "/var/volatile". utils_expand_path will return something like this for the symlink test: "/var/volative/.....XXXXXX/...." which is the valid result. Solution: Simply use realpath on the tree_origin and use this path to perform the test validation. This work was performed in the effort to support yocto fully and be able to run the test suite to detect problem as early as possible. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau --- diff --git a/tests/unit/test_utils_expand_path.c b/tests/unit/test_utils_expand_path.c index 9bf81b924..973d7a98b 100644 --- a/tests/unit/test_utils_expand_path.c +++ b/tests/unit/test_utils_expand_path.c @@ -281,8 +281,8 @@ error: static void test_utils_expand_path(void) { char *result; - char name[100], tmppath[PATH_MAX]; - int i; + char name[100], tmppath[PATH_MAX], real_tree_origin[PATH_MAX]; + int i, treelen; /* Test valid cases */ for (i = 0; i < num_valid_tests; i++) { @@ -295,14 +295,24 @@ static void test_utils_expand_path(void) free(result); } + /* + * Get the realpath for the tree_origin since it can itself be a + * symlink. + */ + result = realpath(tree_origin, real_tree_origin); + if (!result) { + fail("realpath failed."); + return; + } + /* Test symlink tree cases */ - int treelen = strlen(tree_origin) + 1; + treelen = strlen(real_tree_origin) + 1; for (i = 0; i < num_symlink_tests; i++) { sprintf(name, "symlink tree test case: [tmppath/]%s", symlink_tests_inputs[i].input); snprintf(tmppath, PATH_MAX, "%s/%s", - tree_origin, symlink_tests_inputs[i].input); + real_tree_origin, symlink_tests_inputs[i].input); result = utils_expand_path(tmppath); ok(result != NULL && strcmp(result + treelen, symlink_tests_inputs[i].expected_result) == 0, name);