annotate test/test_anypy.py @ 8446:14c7c07b32d8

feature: add thread local trace_id and trace_reason to logging. Added trace_id to default logging so that all logs for a given request share the same trace_id. This allows correlation of logs across a request. admin_guide.txt, upgrading.txt: add docs update sample configs to include trace_id. rewrite logging docs in admin_guide. Hopefully they are clearer now. clean up some stuff in the logging config file docs. admin.py: add decorators to run_command to enable trace_id. change calls to db.commit() to use run_command to get trace_id. configuration.py: clean up imports. update docstrings, comments and inline docs. add trace_id to default log format. add function for testing decorated with trace_id. add support for dumping stack trace in logging. add check for pytest in sys.modules to enable log propagation when pytest is running. Otherwise tests fail as the caplog logger doesn't see the roundup logs. logcontext.py: new file to handle thread local contextvar mangement. mailgw.py: add decorators for trace_id etc. scripts/roundup_xlmrpc_server.py: add decorators for trace_id etc. fix encoding bug turning bytes into a string. fix command line issue where we can't set encoding. (not sure if changing encoding via command line even works) cgi/client.py decorate two entry points for trace_id etc. cgi/wsgi_handler.py: decorate entry point for trace_id etc. test/test_config.py: add test for trace_id in new log format. test various cases for sinfo and errors in formating msg.
author John Rouillard <rouilj@ieee.org>
date Tue, 16 Sep 2025 22:53:00 -0400
parents ebb03b8cee4d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6532
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
1 """Random tests for anypy modules"""
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
2
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
3
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
4 import unittest
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
5 from roundup.anypy.strings import repr_export, eval_import
7824
ebb03b8cee4d test: invoke test function in cmp_.py.
John Rouillard <rouilj@ieee.org>
parents: 7766
diff changeset
6 from roundup.anypy.cmp_ import _test
6532
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
7
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
8 import sys
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
9 _py3 = sys.version_info[0] > 2
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
10
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
11 class StringsTest(unittest.TestCase):
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
12
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
13 def test_import_params(self):
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
14 """ issue2551170 - handle long int in history/journal
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
15 params tuple
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
16 """
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
17 # python2 export with id as number
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
18 val = eval_import("('issue', 2345L, 'status')")
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
19 self.assertSequenceEqual(val, ('issue', 2345, 'status'))
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
20
7766
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
21 # eval a tuple e.g. date representation
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
22 val = eval_import("(2022, 9, 6, 3, 58, 4.776, 0, 0, 0)")
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
23 self.assertSequenceEqual(val, (2022, 9, 6, 3, 58, 4.776, 0, 0, 0))
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
24
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
25 # eval a boolean
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
26 val = eval_import("False")
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
27 self.assertEqual(val, False)
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
28 val = eval_import("True")
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
29 self.assertEqual(val, True)
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
30
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
31 # check syntax error
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
32 for testcase in ['true', '(2004, 10, 20', "2000, 10, 22)",
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
33 "test'", '"test']:
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
34 with self.assertRaises(ValueError) as m:
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
35 val = eval_import(testcase)
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
36 print(m.exception)
c65e0a725c88 fix: replace eval with ast.literal_eval; ruff linting
John Rouillard <rouilj@ieee.org>
parents: 6532
diff changeset
37
6532
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
38 # python3 export with id as number
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
39 val = eval_import("('issue', 2345, 'status')")
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
40 self.assertSequenceEqual(val, ('issue', 2345, 'status'))
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
41
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
42 # python2 or python3 export with id as string
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
43 val = eval_import("('issue', '2345', 'status')")
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
44 self.assertSequenceEqual(val, ('issue', '2345', 'status'))
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
45
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
46 def test_export_params(self):
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
47 """ issue2551170 - handle long int in history/journal
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
48 params tuple
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
49 """
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
50 # python2 export with id as number
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
51 if _py3:
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
52 val = repr_export(('issue', 2345, 'status'))
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
53 self.assertEqual(val, "('issue', 2345, 'status')")
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
54 else:
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
55 val = repr_export(('issue', long(2345), 'status'))
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
56 self.assertEqual(val, "('issue', 2345L, 'status')")
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
57
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
58 # python2 or python3 export with id as string
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
59 val = repr_export(('issue', '2345', 'status'))
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
60 self.assertEqual(val, "('issue', '2345', 'status')")
e4db9d0b85c7 test for issue2551170 process python 2 long under python3
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
61
7824
ebb03b8cee4d test: invoke test function in cmp_.py.
John Rouillard <rouilj@ieee.org>
parents: 7766
diff changeset
62 class MiscTest(unittest.TestCase):
ebb03b8cee4d test: invoke test function in cmp_.py.
John Rouillard <rouilj@ieee.org>
parents: 7766
diff changeset
63
ebb03b8cee4d test: invoke test function in cmp_.py.
John Rouillard <rouilj@ieee.org>
parents: 7766
diff changeset
64 def test_cmp_(self):
ebb03b8cee4d test: invoke test function in cmp_.py.
John Rouillard <rouilj@ieee.org>
parents: 7766
diff changeset
65 _test()

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