From 83d165442d1c3658b6bafa28ddade8ffee7092ad Mon Sep 17 00:00:00 2001
From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Date: Wed, 6 Mar 2019 16:46:49 -0500
Subject: [PATCH lttng-tools 2/2] Fix: test: unit: 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.


Upstream-Status: Accepted [f66e964a2e0c75f5e1a55fbcc963b1c5e2b4519d]
Backported to 2.11 and 2.10

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
---
 tests/unit/test_utils_expand_path.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/tests/unit/test_utils_expand_path.c b/tests/unit/test_utils_expand_path.c
index d5cab002e..d047c207d 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);
-- 
2.17.1

