summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbst-marge-bot <marge-bot@buildstream.build>2020-10-29 13:48:55 +0000
committerbst-marge-bot <marge-bot@buildstream.build>2020-10-29 13:48:55 +0000
commit7fee0e64ffd2b5dcfd1766df8ed3a692e86a640d (patch)
treed9bd6bb896b4e337396bfcdea1004320880c99bc
parent8616fc5b453003e1a56bb423706549dd3a80ad4b (diff)
parent8fdab36c83aaf1872a39cc9f31db25a95b1240c1 (diff)
downloadbuildstream-7fee0e64ffd2b5dcfd1766df8ed3a692e86a640d.tar.gz
Merge branch 'chandan/py39-platform' into 'master'
testutils/platform: Refactor to be compatible with Python 3.9 See merge request BuildStream/buildstream!2092
-rw-r--r--tests/testutils/platform.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/tests/testutils/platform.py b/tests/testutils/platform.py
index f8faf286e..d8078062a 100644
--- a/tests/testutils/platform.py
+++ b/tests/testutils/platform.py
@@ -17,6 +17,7 @@
# Authors:
# Angelos Evripiotis <jevripiotis@bloomberg.net>
+import collections
from contextlib import contextmanager
import platform
@@ -32,15 +33,20 @@ import platform
@contextmanager
def override_platform_uname(*, system=None, machine=None):
orig_func = platform.uname
- result = platform.uname()
+ orig_system, node, release, version, orig_machine, processor = platform.uname()
- if system is not None:
- result = result._replace(system=system)
- if machine is not None:
- result = result._replace(machine=machine)
+ system = system or orig_system
+ machine = machine or orig_machine
def override_func():
- return result
+ # NOTE:
+ # 1. We can't use `_replace` here because of this bug in
+ # Python 3.9.0 - https://bugs.python.org/issue42163.
+ # 2. We need to create a new subclass because the constructor of
+ # `platform.uname_result` doesn't share the same interface between
+ # Python 3.8 and 3.9.
+ uname_result = collections.namedtuple("uname_result", "system node release version machine processor")
+ return uname_result(system, node, release, version, machine, processor)
platform.uname = override_func
try: