2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-22 10:10:06 +00:00

Add system test utility package isctest

Create a utility package for code shared by the python tests. The
utility functions should use reasonable defaults and be split up into
modules according to their functionality.

Ensure assert rewriting is enabled for the modules to get the most
useful output from pytest.
This commit is contained in:
Tom Krizek 2023-12-04 18:05:50 +01:00
parent f0481c8600
commit cba5a1d62c
No known key found for this signature in database
GPG Key ID: 01623B9B652A20A7
5 changed files with 86 additions and 0 deletions

View File

@ -23,6 +23,9 @@ from typing import Any, Dict, List, Optional
import pytest import pytest
pytest.register_assert_rewrite("isctest")
# Silence warnings caused by passing a pytest fixture to another fixture. # Silence warnings caused by passing a pytest fixture to another fixture.
# pylint: disable=redefined-outer-name # pylint: disable=redefined-outer-name

View File

@ -0,0 +1,13 @@
# 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.
from . import check
from . import query

View File

@ -0,0 +1,34 @@
# 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.
from typing import Any
import dns.rcode
import dns.message
# compatiblity with dnspython<2.0.0
try:
# In dnspython>=2.0.0, dns.rcode.Rcode class is available
# pylint: disable=invalid-name
dns_rcode = dns.rcode.Rcode # type: Any
except AttributeError:
# In dnspython<2.0.0, selected rcodes are available as integers directly
# from dns.rcode
dns_rcode = dns.rcode
def rcode(message: dns.message.Message, expected_rcode) -> None:
assert message.rcode() == expected_rcode, str(message)
def noerror(message: dns.message.Message) -> None:
rcode(message, dns_rcode.NOERROR)

View File

@ -0,0 +1,35 @@
# 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 os
from typing import Optional
import dns.query
import dns.message
QUERY_TIMEOUT = 10
def udp(
message: dns.message.Message, ip: str, port: Optional[int] = None
) -> dns.message.Message:
if port is None:
port = int(os.environ["PORT"])
return dns.query.udp(message, ip, QUERY_TIMEOUT, port=port)
def tcp(
message: dns.message.Message, ip: str, port: Optional[int] = None
) -> dns.message.Message:
if port is None:
port = int(os.environ["PORT"])
return dns.query.tcp(message, ip, QUERY_TIMEOUT, port=port)

View File

@ -462,6 +462,7 @@ for testname in testnames:
not os.path.isdir(dirpath) not os.path.isdir(dirpath)
or testname.startswith(".") or testname.startswith(".")
or testname.startswith("_") or testname.startswith("_")
or testname == "isctest"
): ):
continue continue
if "_" in testname: if "_" in testname: