]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-45629: Improve test.support.skip_if_buildbot (GH-31094)
authorGregory P. Smith <greg@krypto.org>
Thu, 3 Feb 2022 05:36:16 +0000 (21:36 -0800)
committerGitHub <noreply@github.com>
Thu, 3 Feb 2022 05:36:16 +0000 (21:36 -0800)
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.

Lib/test/support/__init__.py

index d71cfe5ee44fd070b5b61473bfcad8b92320fb1d..e5eb66e9068e71b861c29aa8e78754b5fa8f14d6 100644 (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):