[libvirt] [PATCH 2/5] testutils: find perl early

Ján Tomko jtomko at redhat.com
Mon Jul 11 14:40:25 UTC 2016


Commit 843a70a changed test-wrap-argv.pl to use
/usr/bin/env perl
instead of
/usr/bin/perl

However when called from qemuxml2argvtest with
VIR_TEST_REGENERATE_OUTPUT, PATH is set to '/bin'.

Find the path to perl early in virTestMain, in case we
are going to need it later after we've overridden PATH.
---
 tests/testutils.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/tests/testutils.c b/tests/testutils.c
index be61e4d..d699e1f 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -83,6 +83,7 @@ static size_t testCounter;
 static virBitmapPtr testBitmap;
 
 char *progname;
+static char *perl;
 
 bool virTestOOMActive(void)
 {
@@ -441,10 +442,15 @@ virTestRewrapFile(const char *filename)
     char *script = NULL;
     virCommandPtr cmd = NULL;
 
+    if (!perl) {
+        fprintf(stderr, "cannot rewrap %s: unable to find perl in path", filename);
+        return -1;
+    }
+
     if (virAsprintf(&script, "%s/test-wrap-argv.pl", abs_srcdir) < 0)
         goto cleanup;
 
-    cmd = virCommandNewArgList(script, "--in-place", filename, NULL);
+    cmd = virCommandNewArgList(perl, script, "--in-place", filename, NULL);
     if (virCommandRun(cmd, NULL) < 0)
         goto cleanup;
 
@@ -966,6 +972,9 @@ int virTestMain(int argc,
     }
 #endif /* TEST_OOM */
 
+    /* Find perl early because some tests override PATH */
+    perl = virFindFileInPath("perl");
+
     ret = (func)();
 
     virResetLastError();
@@ -974,6 +983,7 @@ int virTestMain(int argc,
             fprintf(stderr, "%*s", 40 - (int)(testCounter % 40), "");
         fprintf(stderr, " %-3zu %s\n", testCounter, ret == 0 ? "OK" : "FAIL");
     }
+    VIR_FREE(perl);
     return ret;
 }
 
-- 
2.7.3




More information about the libvir-list mailing list