]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
testcrypto.sh: run in TMPDIR if possible
authorTom Krizek <tkrizek@isc.org>
Mon, 19 Dec 2022 16:44:35 +0000 (17:44 +0100)
committerTom Krizek <tkrizek@isc.org>
Fri, 13 Jan 2023 16:01:28 +0000 (17:01 +0100)
Avoid creating any temporary files in the current workdir.

Additional/changing files in the bin/tests/system directory are
problematic for pytest/xdist collection phase, which assumes the list of
files doesn't change between the collection phase of the main pytest
thread and the subsequent collection phase of the xdist worker threads.

Since the testcrypto.sh is also called during pytest initialization
through conf.sh.common (to detect feature support), this could
occasionally cause a race condition when the list of files would be
different for the main pytest thread and the xdist worker.

bin/tests/system/get_algorithms.py
bin/tests/system/testcrypto.sh

index 54296497586b547c6fcd7423b50e2b17cb21c4ea..9cd07d48574da091009b08ced3fb79d72f626cbc 100755 (executable)
@@ -111,7 +111,10 @@ def is_supported(alg: Algorithm) -> bool:
             f"{TESTCRYPTO} -q {alg.name}",
             shell=True,
             check=True,
-            env={"KEYGEN": KEYGEN},
+            env={
+                "KEYGEN": KEYGEN,
+                "TMPDIR": os.getenv("TMPDIR", "/tmp"),
+            },
             stdout=subprocess.DEVNULL,
         )
     except subprocess.CalledProcessError as exc:
index 2be22f3652a6901238d383dc9a919ee287f83124..ceaaf3726a8bf27dfaf2775119daa513ed9b7344 100755 (executable)
@@ -14,6 +14,7 @@
 prog=$0
 args=""
 quiet=0
+dir=""
 msg="cryptography"
 
 if test -z "$KEYGEN"; then
@@ -74,9 +75,18 @@ if test -z "$alg"; then
     exit 1
 fi
 
+if test -n "$TMPDIR"; then
+    dir=$(mktemp -d "$TMPDIR/XXXXXX")
+    args="$args -K $dir"
+fi
+
 if $KEYGEN $args $alg foo > /dev/null 2>&1
 then
-    rm -f Kfoo*
+    if test -z "$dir"; then
+        rm -f Kfoo*
+    else
+        rm -rf "$dir"
+    fi
 else
     if test $quiet -eq 0; then
         echo_i "This test requires support for $msg" >&2