From: Petr Špaček Date: Tue, 1 Jul 2025 09:12:15 +0000 (+0200) Subject: Test command line tools without stdio fds X-Git-Tag: v9.21.12~17^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e415c5c996a3b408eb1064bd86048522897fc811;p=thirdparty%2Fbind9.git Test command line tools without stdio fds 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. --- diff --git a/bin/tests/system/tools/tests.sh b/bin/tests/system/tools/tests.sh new file mode 100644 index 00000000000..4132d99985e --- /dev/null +++ b/bin/tests/system/tools/tests.sh @@ -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 index 00000000000..b031a8ac700 --- /dev/null +++ b/bin/tests/system/tools/tests_sh_tools.py @@ -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()