gh-71042: Add platform.android_ver (#116674)

This commit is contained in:
Malcolm Smith 2024-03-27 16:53:27 +00:00 committed by GitHub
parent ce00de4c8c
commit 74c8568d07
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 164 additions and 16 deletions

View file

@ -219,6 +219,19 @@ class PlatformTest(unittest.TestCase):
self.assertEqual(res[-1], res.processor)
self.assertEqual(len(res), 6)
if os.name == "posix":
uname = os.uname()
self.assertEqual(res.node, uname.nodename)
self.assertEqual(res.version, uname.version)
self.assertEqual(res.machine, uname.machine)
if sys.platform == "android":
self.assertEqual(res.system, "Android")
self.assertEqual(res.release, platform.android_ver().release)
else:
self.assertEqual(res.system, uname.sysname)
self.assertEqual(res.release, uname.release)
@unittest.skipUnless(sys.platform.startswith('win'), "windows only test")
def test_uname_win32_without_wmi(self):
def raises_oserror(*a):
@ -458,6 +471,43 @@ class PlatformTest(unittest.TestCase):
self.assertEqual(platform.libc_ver(filename, chunksize=chunksize),
('glibc', '1.23.4'))
def test_android_ver(self):
res = platform.android_ver()
self.assertIsInstance(res, tuple)
self.assertEqual(res, (res.release, res.api_level, res.manufacturer,
res.model, res.device, res.is_emulator))
if sys.platform == "android":
for name in ["release", "manufacturer", "model", "device"]:
with self.subTest(name):
value = getattr(res, name)
self.assertIsInstance(value, str)
self.assertNotEqual(value, "")
self.assertIsInstance(res.api_level, int)
self.assertGreaterEqual(res.api_level, sys.getandroidapilevel())
self.assertIsInstance(res.is_emulator, bool)
# When not running on Android, it should return the default values.
else:
self.assertEqual(res.release, "")
self.assertEqual(res.api_level, 0)
self.assertEqual(res.manufacturer, "")
self.assertEqual(res.model, "")
self.assertEqual(res.device, "")
self.assertEqual(res.is_emulator, False)
# Default values may also be overridden using parameters.
res = platform.android_ver(
"alpha", 1, "bravo", "charlie", "delta", True)
self.assertEqual(res.release, "alpha")
self.assertEqual(res.api_level, 1)
self.assertEqual(res.manufacturer, "bravo")
self.assertEqual(res.model, "charlie")
self.assertEqual(res.device, "delta")
self.assertEqual(res.is_emulator, True)
@support.cpython_only
def test__comparable_version(self):
from platform import _comparable_version as V