summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_platform.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-12-07 10:10:33 (GMT)
committerGitHub <noreply@github.com>2018-12-07 10:10:33 (GMT)
commit3a521f0b6167628f975c773b56c7daf8d33d6f40 (patch)
tree91f83d86bd25493d1285fbca6fccc2280c5ebfc0 /Lib/test/test_platform.py
parent9ebe8794f003dadfff578a066ea503a3e37ffe1d (diff)
downloadcpython-3a521f0b6167628f975c773b56c7daf8d33d6f40.zip
cpython-3a521f0b6167628f975c773b56c7daf8d33d6f40.tar.gz
cpython-3a521f0b6167628f975c773b56c7daf8d33d6f40.tar.bz2
bpo-35346, platform: replace os.popen() with subprocess (GH-10786)
Replace os.popen() with subprocess.check_output() in the platform module: * platform.uname() (its _syscmd_ver() helper function) now redirects stderr to DEVNULL. * Remove platform.DEV_NULL. * _syscmd_uname() and _syscmd_file() no longer catch AttributeError. The "except AttributeError:" was only needed in Python 2, when os.popen() was not always available. In Python 3, subprocess.check_output() is always available.
Diffstat (limited to 'Lib/test/test_platform.py')
-rw-r--r--Lib/test/test_platform.py18
1 files changed, 9 insertions, 9 deletions
diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py
index c1a7e34..9cf1772 100644
--- a/Lib/test/test_platform.py
+++ b/Lib/test/test_platform.py
@@ -222,16 +222,16 @@ class PlatformTest(unittest.TestCase):
res = platform.mac_ver()
if platform.uname().system == 'Darwin':
- # We're on a MacOSX system, check that
- # the right version information is returned
- fd = os.popen('sw_vers', 'r')
- real_ver = None
- for ln in fd:
- if ln.startswith('ProductVersion:'):
- real_ver = ln.strip().split()[-1]
+ # We are on a macOS system, check that the right version
+ # information is returned
+ output = subprocess.check_output(['sw_vers'], text=True)
+ for line in output.splitlines():
+ if line.startswith('ProductVersion:'):
+ real_ver = line.strip().split()[-1]
break
- fd.close()
- self.assertFalse(real_ver is None)
+ else:
+ self.fail(f"failed to parse sw_vers output: {output!r}")
+
result_list = res[0].split('.')
expect_list = real_ver.split('.')
len_diff = len(result_list) - len(expect_list)