bpo-45629: Improve test.support.skip_if_buildbot (GH-31094)

It was added as part of #29222 to avoid running freeze tool tests on the
buildbots but the logic was wrong so it did not skip tests on typical posix
setup buildbots where the worker is launched from cron via an @reboot task and
thus have no USER environment variable.  This uses the canonical
`getpass.getuser()` API rather than rolling its own attempt.
This commit is contained in:
Gregory P. Smith 2022-02-02 21:36:16 -08:00 committed by GitHub
parent 51a95be1d0
commit 8726067ace
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 4 deletions

View File

@ -5,6 +5,7 @@ if __name__ != 'test.support':
import contextlib
import functools
import getpass
import os
import re
import stat
@ -378,10 +379,11 @@ def skip_if_buildbot(reason=None):
"""Decorator raising SkipTest if running on a buildbot."""
if not reason:
reason = 'not suitable for buildbots'
if sys.platform == 'win32':
isbuildbot = os.environ.get('USERNAME') == 'Buildbot'
else:
isbuildbot = os.environ.get('USER') == 'buildbot'
try:
isbuildbot = getpass.getuser().lower() == 'buildbot'
except (KeyError, EnvironmentError) as err:
warnings.warn(f'getpass.getuser() failed {err}.', RuntimeWarning)
isbuildbot = False
return unittest.skipIf(isbuildbot, reason)
def check_sanitizer(*, address=False, memory=False, ub=False):