diff --git a/docs/usage/general/environment.rst.inc b/docs/usage/general/environment.rst.inc index ab45ca1af..b4a0a8280 100644 --- a/docs/usage/general/environment.rst.inc +++ b/docs/usage/general/environment.rst.inc @@ -78,6 +78,14 @@ General: - ``pyfuse3``: only try to load pyfuse3 - ``llfuse``: only try to load llfuse - ``none``: do not try to load an implementation + BORG_SELFTEST + This can be used to influence borg's builtin self-tests. The default is to execute the tests + at the beginning of each borg command invocation. + + BORG_SELFTEST=disabled can be used to switch off the tests and rather save some time. + Disabling is not recommended for normal borg users, but large scale borg storage providers can + use this to optimize production servers after at least doing a one-time test borg (with + selftests not disabled) when installing or upgrading machines / OS / borg. BORG_WORKAROUNDS A list of comma separated strings that trigger workarounds in borg, e.g. to work around bugs in other software. diff --git a/src/borg/selftest.py b/src/borg/selftest.py index 49ad0fbf1..1f374679e 100644 --- a/src/borg/selftest.py +++ b/src/borg/selftest.py @@ -12,8 +12,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 from unittest import TestResult, TestSuite, defaultTestLoader @@ -56,6 +55,9 @@ class SelfTestResult(TestResult): def selftest(logger): + if os.environ.get('BORG_SELFTEST') == 'disabled': + logger.debug("borg selftest disabled via BORG_SELFTEST env variable") + return selftest_started = time.perf_counter() result = SelfTestResult() test_suite = TestSuite() diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py index 1cdda9d30..d76527869 100644 --- a/src/borg/testsuite/archiver.py +++ b/src/borg/testsuite/archiver.py @@ -249,6 +249,7 @@ class ArchiverTestCaseBase(BaseTestCase): os.environ['BORG_CHECK_I_KNOW_WHAT_I_AM_DOING'] = 'YES' os.environ['BORG_DELETE_I_KNOW_WHAT_I_AM_DOING'] = 'YES' os.environ['BORG_PASSPHRASE'] = 'waytooeasyonlyfortests' + os.environ['BORG_SELFTEST'] = 'disabled' self.archiver = not self.FORK_DEFAULT and Archiver() or None self.tmpdir = tempfile.mkdtemp() self.repository_path = os.path.join(self.tmpdir, 'repository')