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.
This commit is contained in:
Petr Špaček 2025-07-01 11:12:15 +02:00 committed by Ondřej Surý
parent 5cfdbeba72
commit e415c5c996
No known key found for this signature in database
GPG key ID: 2820F37E873DEA41
2 changed files with 42 additions and 0 deletions

View file

@ -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>&-

View file

@ -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()