comparison test/test_anypy.py @ 7766:c65e0a725c88

fix: replace eval with ast.literal_eval; ruff linting strings.py: When reading csv export files, use the safer literal_eval to evaluate the fields. Issue pointed out by ruff linter. Other Cleanup: sort imports replace if, else, if, else with if, elif, else use isinstance with tuples rather than 'isinstance() or isinstance()' test_anypy.py: Added tests for tuples, and booleans. Also added exception handling for malformed strings, booleans, tuples.
author John Rouillard <rouilj@ieee.org>
date Sat, 02 Mar 2024 04:01:22 -0500
parents e4db9d0b85c7
children ebb03b8cee4d
comparison
equal deleted inserted replaced
7765:dec7de56f253 7766:c65e0a725c88
14 params tuple 14 params tuple
15 """ 15 """
16 # python2 export with id as number 16 # python2 export with id as number
17 val = eval_import("('issue', 2345L, 'status')") 17 val = eval_import("('issue', 2345L, 'status')")
18 self.assertSequenceEqual(val, ('issue', 2345, 'status')) 18 self.assertSequenceEqual(val, ('issue', 2345, 'status'))
19
20 # eval a tuple e.g. date representation
21 val = eval_import("(2022, 9, 6, 3, 58, 4.776, 0, 0, 0)")
22 self.assertSequenceEqual(val, (2022, 9, 6, 3, 58, 4.776, 0, 0, 0))
23
24 # eval a boolean
25 val = eval_import("False")
26 self.assertEqual(val, False)
27 val = eval_import("True")
28 self.assertEqual(val, True)
29
30 # check syntax error
31 for testcase in ['true', '(2004, 10, 20', "2000, 10, 22)",
32 "test'", '"test']:
33 with self.assertRaises(ValueError) as m:
34 val = eval_import(testcase)
35 print(m.exception)
19 36
20 # python3 export with id as number 37 # python3 export with id as number
21 val = eval_import("('issue', 2345, 'status')") 38 val = eval_import("('issue', 2345, 'status')")
22 self.assertSequenceEqual(val, ('issue', 2345, 'status')) 39 self.assertSequenceEqual(val, ('issue', 2345, 'status'))
23 40

Roundup Issue Tracker: http://roundup-tracker.org/