From 3c3b70934252c10f1a971b72fbaf58da49460b3e Mon Sep 17 00:00:00 2001 From: Christian Herdtweck Date: Thu, 24 Nov 2022 12:31:47 +0100 Subject: [PATCH] tests: Deal with warnings in output --- tests/olevba/test_basic.py | 8 ++++++-- tests/olevba/test_crypto.py | 23 ++++++++++++----------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/tests/olevba/test_basic.py b/tests/olevba/test_basic.py index 5be1269..dd917d3 100644 --- a/tests/olevba/test_basic.py +++ b/tests/olevba/test_basic.py @@ -120,10 +120,14 @@ class TestOlevbaBasic(unittest.TestCase): args=[full_name, ] + ADD_ARGS, accept_nonzero_exit=True) output = json.loads(out_str) - self.assertEqual(len(output), 2) + self.assertGreaterEqual(len(output), 2) self.assertEqual(output[0]['type'], 'MetaInformation') self.assertEqual(output[0]['script_name'], 'olevba') - result = output[1] + for entry in output[1:]: + if entry['type'] in ('msg', 'warning'): + continue # ignore messages + result = entry + break self.assertTrue(result['json_conversion_successful']) if suffix in ('.xlsb', '.xltm', '.xlsm'): # TODO: cannot extract xlm macros for these types yet diff --git a/tests/olevba/test_crypto.py b/tests/olevba/test_crypto.py index 0600061..1c73132 100644 --- a/tests/olevba/test_crypto.py +++ b/tests/olevba/test_crypto.py @@ -40,7 +40,7 @@ class OlevbaCryptoWriteProtectTest(unittest.TestCase): exclude_stderr=True) data = json.loads(output, object_pairs_hook=OrderedDict) # debug: json.dump(data, sys.stdout, indent=4) - self.assertIn(len(data), (3, 4)) + self.assertGreaterEqual(len(data), 3) # first 2 parts: general info about script and file self.assertIn('script_name', data[0]) @@ -53,22 +53,23 @@ class OlevbaCryptoWriteProtectTest(unittest.TestCase): self.assertEqual(data[1]['type'], 'OLE') self.assertTrue(data[1]['json_conversion_successful']) - # possible VBA stomping warning - if len(data) == 4: - self.assertEqual(data[2]['type'], 'msg') - self.assertIn('VBA stomping', data[2]['msg']) + for entry in data[2:]: + if entry['type'] in ('msg', 'warning'): + continue + result = entry + break # last part is the actual result - self.assertEqual(data[-1]['container'], example_file) - self.assertNotEqual(data[-1]['file'], example_file) - self.assertEqual(data[-1]['type'], "OpenXML") - analysis = data[-1]['analysis'] + self.assertEqual(result['container'], example_file) + self.assertNotEqual(result['file'], example_file) + self.assertEqual(result['type'], "OpenXML") + analysis = result['analysis'] self.assertEqual(analysis[0]['type'], 'AutoExec') self.assertEqual(analysis[0]['keyword'], 'Auto_Open') - macros = data[-1]['macros'] + macros = result['macros'] self.assertEqual(macros[0]['vba_filename'], 'Modul1.bas') self.assertIn('Sub Auto_Open()', macros[0]['code']) - self.assertTrue(data[-1]['json_conversion_successful']) + self.assertTrue(result['json_conversion_successful']) if __name__ == '__main__': -- libgit2 0.21.4