diff --git a/src/borg/selftest.py b/src/borg/selftest.py index bacdcea2a..006e85a56 100644 --- a/src/borg/selftest.py +++ b/src/borg/selftest.py @@ -1,3 +1,6 @@ +# Note: these tests are part of the self test, do not use or import pytest functionality here. +# See borg.selftest for details. If you add/remove test methods, update SELFTEST_COUNT + """ Self testing module =================== @@ -12,6 +15,7 @@ To assert that self test discovery works correctly the number of tests is kept i variable. SELFTEST_COUNT must be updated if new tests are added or removed to or from any of the tests used here. """ + import os import sys import time @@ -62,6 +66,10 @@ def selftest(logger): result = SelfTestResult() test_suite = TestSuite() for test_case in SELFTEST_CASES: + module = sys.modules[test_case.__module__] + # a normal borg user does not have pytest installed, we must not require it in the test modules used here. + # note: this only detects the usual toplevel import + assert 'pytest' not in dir(module), "pytest must not be imported in %s" % module.__name__ test_suite.addTest(defaultTestLoader.loadTestsFromTestCase(test_case)) test_suite.run(result) result.log_results(logger) diff --git a/src/borg/testsuite/chunker.py b/src/borg/testsuite/chunker.py index 1b275978c..ce45b7c96 100644 --- a/src/borg/testsuite/chunker.py +++ b/src/borg/testsuite/chunker.py @@ -1,12 +1,12 @@ +# Note: these tests are part of the self test, do not use or import pytest functionality here. +# See borg.selftest for details. If you add/remove test methods, update SELFTEST_COUNT + from io import BytesIO from ..chunker import ChunkerFixed, Chunker, get_chunker, buzhash, buzhash_update from ..constants import * # NOQA from . import BaseTestCase -# Note: these tests are part of the self test, do not use or import py.test functionality here. -# See borg.selftest for details. If you add/remove test methods, update SELFTEST_COUNT - def cf(chunks): """chunk filter""" diff --git a/src/borg/testsuite/crypto.py b/src/borg/testsuite/crypto.py index dac3efeb3..e691c3210 100644 --- a/src/borg/testsuite/crypto.py +++ b/src/borg/testsuite/crypto.py @@ -1,8 +1,10 @@ +# Note: these tests are part of the self test, do not use or import pytest functionality here. +# See borg.selftest for details. If you add/remove test methods, update SELFTEST_COUNT + from binascii import hexlify from unittest.mock import MagicMock import unittest - from ..crypto.low_level import AES256_CTR_HMAC_SHA256, AES256_OCB, CHACHA20_POLY1305, UNENCRYPTED, IntegrityError from ..crypto.low_level import bytes_to_long, bytes_to_int, long_to_bytes from ..crypto.low_level import hkdf_hmac_sha512 @@ -12,9 +14,6 @@ from ..helpers import msgpack from . import BaseTestCase -# Note: these tests are part of the self test, do not use or import py.test functionality here. -# See borg.selftest for details. If you add/remove test methods, update SELFTEST_COUNT - class CryptoTestCase(BaseTestCase): diff --git a/src/borg/testsuite/hashindex.py b/src/borg/testsuite/hashindex.py index 764de1147..89a793a97 100644 --- a/src/borg/testsuite/hashindex.py +++ b/src/borg/testsuite/hashindex.py @@ -1,3 +1,6 @@ +# Note: these tests are part of the self test, do not use or import pytest functionality here. +# See borg.selftest for details. If you add/remove test methods, update SELFTEST_COUNT + import base64 import hashlib import io @@ -10,9 +13,6 @@ from .. import hashindex from ..crypto.file_integrity import IntegrityCheckedFile, FileIntegrityError from . import BaseTestCase, unopened_tempfile -# Note: these tests are part of the self test, do not use or import py.test functionality here. -# See borg.selftest for details. If you add/remove test methods, update SELFTEST_COUNT - def H(x): # make some 32byte long thing that depends on x