From 4b4e90a51848578dc06341777a929a0be4f4757f Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Wed, 15 Apr 2020 14:32:01 -0400 Subject: [PATCH] bpo-35967: Baseline values for uname -p (GH-12824) * Add a test intended to capture the expected values from 'uname -p' * Instead of trying to keep track of all of the possible outputs on different systems (probably a fool's errand), simply assert that except for the known platform variance, uname().processor matches the output of 'uname -p' * Use a skipIf directive * Use contextlib.suppress to suppress the error. Inline strip call. --- Lib/test/test_platform.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index f167fb1e7b9..0e6cb6db1ee 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -3,6 +3,8 @@ import subprocess import sys import unittest +import collections +import contextlib from unittest import mock from test import support @@ -160,6 +162,18 @@ def test_uname(self): self.assertEqual(res[4], res.machine) self.assertEqual(res[5], res.processor) + @unittest.skipIf(sys.platform in ['win32', 'OpenVMS'], "uname -p not used") + def test_uname_processor(self): + """ + On some systems, the processor must match the output + of 'uname -p'. See Issue 35967 for rationale. + """ + with contextlib.suppress(subprocess.CalledProcessError): + self.assertEqual( + platform.uname().processor, + subprocess.check_output(['uname', '-p'], text=True).strip(), + ) + @unittest.skipUnless(sys.platform.startswith('win'), "windows only test") def test_uname_win32_ARCHITEW6432(self): # Issue 7860: make sure we get architecture from the correct variable