mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-28 01:28:05 -04:00
Most Python-based system tests need to know which ports were assigned to a given test by bin/tests/system/get_ports.sh. This is currently handled by inspecting the values of various environment variables (set by bin/tests/system/run.sh) and passing the port numbers to Python scripts via pytest fixtures. However, this glue code has so far been copy-pasted into each system test using it, rather than reused. Since pytest also looks for conftest.py files in parent directories, move commonly used fixtures to bin/tests/system/conftest.py. Set the scope of all the moved fixtures to "session" as their return values are only based on environment variables, so there is no point in recreating them for every test requesting them. Adjust test code accordingly.
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
#!/usr/bin/python3
|
|
|
|
# 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 shutil
|
|
import subprocess
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture
|
|
def gnutls_cli_executable():
|
|
# Ensure gnutls-cli is available.
|
|
executable = shutil.which('gnutls-cli')
|
|
if not executable:
|
|
pytest.skip('gnutls-cli not found in PATH')
|
|
|
|
# Ensure gnutls-cli supports the --logfile command-line option.
|
|
args = [executable, '--logfile=/dev/null']
|
|
try:
|
|
with subprocess.check_output(args, stderr=subprocess.STDOUT) as _:
|
|
pass
|
|
except subprocess.CalledProcessError as exc:
|
|
stderr = exc.output
|
|
if b'illegal option' in stderr:
|
|
pytest.skip('gnutls-cli does not support the --logfile option')
|
|
|
|
return executable
|