]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Test command line tools without stdio fds
authorPetr Špaček <pspacek@isc.org>
Tue, 1 Jul 2025 09:12:15 +0000 (11:12 +0200)
committerOndřej Surý <ondrej@isc.org>
Thu, 28 Aug 2025 06:16:06 +0000 (08:16 +0200)
Testing all combinations seems unnecessary but is cheap.
I was too lazy to run this against all tools we have. nsupdate was
chosen because it is one of few tools which actually use stdin and the
original issue was reproducible even without any network communication,
which was not the case for simple dig invocation.

Sorry for new shell test but doing this in Python seemed very
complicated and fragile.

bin/tests/system/tools/tests.sh [new file with mode: 0644]
bin/tests/system/tools/tests_sh_tools.py [new file with mode: 0644]

diff --git a/bin/tests/system/tools/tests.sh b/bin/tests/system/tools/tests.sh
new file mode 100644 (file)
index 0000000..4132d99
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/sh
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# SPDX-License-Identifier: MPL-2.0
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0.  If a copy of the MPL was not distributed with this
+# file, you can obtain one at https://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+set -e
+
+. ../conf.sh
+
+echo_i "tools must not crash if stdio is closed"
+"$NSUPDATE" 0>&-
+"$NSUPDATE" 0>&- 1>&-
+"$NSUPDATE" 0>&- 1>&- 2>&-
+"$NSUPDATE" 0>&- 2>&-
+"$NSUPDATE" 1>&-
+"$NSUPDATE" 1>&- 2>&-
+"$NSUPDATE" 2>&-
diff --git a/bin/tests/system/tools/tests_sh_tools.py b/bin/tests/system/tools/tests_sh_tools.py
new file mode 100644 (file)
index 0000000..b031a8a
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# SPDX-License-Identifier: MPL-2.0
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0.  If a copy of the MPL was not distributed with this
+# file, you can obtain one at https://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+import pytest
+
+pytestmark = pytest.mark.extra_artifacts([])
+
+
+def test_tools(run_tests_sh):
+    run_tests_sh()