sysmon: handle unittests under Python 3.8+
We patched the runtime code to handle platform.dist not existing,
but didn't update the unittests.
BUG=chromium:997354
TEST=`./run_tests` passes
Change-Id: I034c3adda79172fd8cb81cde881e6c40cb74e5ad
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2847686
Tested-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Chris McDonald <cjmcdonald@chromium.org>
diff --git a/scripts/sysmon/osinfo_metrics_unittest.py b/scripts/sysmon/osinfo_metrics_unittest.py
index bdd5e5d..efcfff3 100644
--- a/scripts/sysmon/osinfo_metrics_unittest.py
+++ b/scripts/sysmon/osinfo_metrics_unittest.py
@@ -31,17 +31,31 @@
self.addCleanup(patcher.stop)
def test_collect(self):
+ distro = ('Ubuntu', '14.04', 'trusty')
+ # This is removed in Python 3.8+.
+ try:
+ dist = mock.patch('platform.dist', autospec=True, return_value=distro)
+ dist.start()
+ except AttributeError:
+ distro = ('', '', '')
+ dist = None
+
with mock.patch('platform.system', autospec=True) as system, \
- mock.patch('platform.dist', autospec=True) as dist, \
mock.patch('sys.maxsize', 2**64):
system.return_value = 'Linux'
- dist.return_value = ('Ubuntu', '14.04', 'trusty')
+ if dist is not None:
+ dist.return_value = distro
osinfo_metrics.collect_os_info()
+ if dist is not None:
+ dist.stop()
+
setter = self.store.set
+ print(setter.mock_calls)
calls = [
- mock.call('proc/os/name', (), None, 'ubuntu', enforce_ge=mock.ANY),
- mock.call('proc/os/version', (), None, '14.04', enforce_ge=mock.ANY),
+ mock.call('proc/os/name', (), None, distro[0].lower(),
+ enforce_ge=mock.ANY),
+ mock.call('proc/os/version', (), None, distro[1], enforce_ge=mock.ANY),
mock.call('proc/os/arch', (), None, 'x86_64', enforce_ge=mock.ANY),
mock.call('proc/python/arch', (), None, '64', enforce_ge=mock.ANY),
]