annotate test/test_config.py @ 8566:e4191aa7b402 default tip

doc: issue2551415 correct doc for change input->input_payload in 2.5 the rest interface changed a variable name from input to input_payload. An earlier commit changed the rest docs. This commit adds an item for it to the upgrading 2.4.0->2.5.0 section. Also cross reference added to the rest docs with the updated examples.
author John Rouillard <rouilj@ieee.org>
date Thu, 09 Apr 2026 00:19:06 -0400
parents f7fadbac5856
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5126
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
1 #
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
3 # This module is free software, and you may redistribute it and/or modify
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
4 # under the same terms as Python, so long as this copyright message and
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
5 # disclaimer are retained in their original form.
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
6 #
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
10 # POSSIBILITY OF SUCH DAMAGE.
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
11 #
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
17
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
18 import configparser
7900
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
19 import errno
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
20 import fileinput
5126
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
21 import logging
7900
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
22 import os
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
23 import pytest
8424
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
24 import re
7900
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
25 import shutil
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
26 import sys
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
27 import unittest
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
28
7913
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
29 from os.path import normpath
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
30 from textwrap import dedent
7913
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
31
7900
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
32 from roundup import configuration
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
33 from roundup.backends import get_backend, have_backend
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
34 from roundup.hyperdb import DatabaseError
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
35
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
36 from .db_test_base import config
5126
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
37
7900
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
38 if not have_backend('postgresql'):
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
39 # FIX: workaround for a bug in pytest.mark.skip():
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
40 # https://github.com/pytest-dev/pytest/issues/568
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
41 from .pytest_patcher import mark_class
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
42 skip_postgresql = mark_class(pytest.mark.skip(
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
43 reason='Skipping PostgreSQL tests: backend not available'))
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
44 else:
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
45 try:
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
46 from roundup.backends.back_postgresql import psycopg2, db_command,\
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
47 get_database_schema_names
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
48 db_command(config, 'select 1')
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
49 skip_postgresql = lambda func, *args, **kwargs: func
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
50 except( DatabaseError ) as msg:
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
51 from .pytest_patcher import mark_class
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
52 skip_postgresql = mark_class(pytest.mark.skip(
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
53 reason='Skipping PostgreSQL tests: database not available'))
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
54
5126
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
55
6367
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
56 try:
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
57 import xapian
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
58 skip_xapian = lambda func, *args, **kwargs: func
6368
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
59 from .pytest_patcher import mark_class
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
60 include_no_xapian = mark_class(pytest.mark.skip(
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
61 "Skipping missing Xapian indexer tests: 'xapian' is installed"))
6367
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
62 except ImportError:
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
63 # FIX: workaround for a bug in pytest.mark.skip():
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
64 # https://github.com/pytest-dev/pytest/issues/568
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
65 from .pytest_patcher import mark_class
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
66 skip_xapian = mark_class(pytest.mark.skip(
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
67 "Skipping Xapian indexer tests: 'xapian' not installed"))
6368
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
68 include_no_xapian = lambda func, *args, **kwargs: func
6557
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
69
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
70
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
71 try:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
72 import redis
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
73 skip_redis = lambda func, *args, **kwargs: func
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
74 except ImportError:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
75 # FIX: workaround for a bug in pytest.mark.skip():
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
76 # https://github.com/pytest-dev/pytest/issues/568
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
77 from .pytest_patcher import mark_class
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
78 skip_redis = mark_class(pytest.mark.skip(
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
79 "Skipping redis tests: 'redis' not installed"))
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
80
6557
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
81 _py3 = sys.version_info[0] > 2
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
82 if _py3:
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
83 skip_py2 = lambda func, *args, **kwargs: func
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
84 else:
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
85 # FIX: workaround for a bug in pytest.mark.skip():
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
86 # https://github.com/pytest-dev/pytest/issues/568
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
87 from .pytest_patcher import mark_class
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
88 skip_py2 = mark_class(pytest.mark.skip(
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
89 reason='Skipping test under python2.'))
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
90
6367
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
91
5126
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
92 config = configuration.CoreConfig()
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
93 config.DATABASE = "db"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
94 config.RDBMS_NAME = "rounduptest"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
95 config.RDBMS_HOST = "localhost"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
96 config.RDBMS_USER = "rounduptest"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
97 config.RDBMS_PASSWORD = "rounduptest"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
98 config.RDBMS_TEMPLATE = "template0"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
99 # these TRACKER_WEB and MAIL_DOMAIN values are used in mailgw tests
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
100 config.MAIL_DOMAIN = "your.tracker.email.domain.example"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
101 config.TRACKER_WEB = "http://tracker.example/cgi-bin/roundup.cgi/bugs/"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
102 # uncomment the following to have excessive debug output from test cases
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
103 # FIXME: tracker logging level should be increased by -v arguments
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
104 # to 'run_tests.py' script
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
105 #config.LOGGING_FILENAME = "/tmp/logfile"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
106 #config.LOGGING_LEVEL = "DEBUG"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
107 config.init_logging()
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
108 config.options['FOO'] = "value"
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
109
6331
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
110 # for TrackerConfig test class
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
111 from roundup import instance
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
112 from . import db_test_base
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
113
5126
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
114 class ConfigTest(unittest.TestCase):
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
115
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
116 def test_badConfigKeyword(self):
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
117 """Run configure tests looking for invalid option name
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
118 """
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
119 self.assertRaises(configuration.InvalidOptionError, config._get_option, "BadOptionName")
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
120
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
121 def test_validConfigKeyword(self):
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
122 """Run configure tests looking for invalid option name
dd642afb4440 starter tests for roundup/configuration.py
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
123 """
5794
95a366d46065 Replace deprecated assertEquals with assertEqual and failUnlessRaises
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
124 self.assertEqual(config._get_option("FOO"), "value")
5770
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
125
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
126 def testTrackerWeb(self):
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
127 config = configuration.CoreConfig()
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
128
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
129 self.assertEqual(None,
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
130 config._get_option('TRACKER_WEB').set("http://foo.example/bar/"))
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
131 self.assertEqual(None,
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
132 config._get_option('TRACKER_WEB').set("https://foo.example/bar/"))
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
133
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
134 self.assertRaises(configuration.OptionValueError,
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
135 config._get_option('TRACKER_WEB').set, "https://foo.example/bar")
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
136
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
137 self.assertRaises(configuration.OptionValueError,
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
138 config._get_option('TRACKER_WEB').set, "htt://foo.example/bar/")
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
139
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
140 self.assertRaises(configuration.OptionValueError,
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
141 config._get_option('TRACKER_WEB').set, "htt://foo.example/bar")
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5126
diff changeset
142
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
143 self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
144 config._get_option('TRACKER_WEB').set, "")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
145
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
146 def testRedis_Url(self):
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
147 config = configuration.CoreConfig()
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
148
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
149 with self.assertRaises(configuration.OptionValueError) as cm:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
150 config._get_option('SESSIONDB_REDIS_URL').set(
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
151 "redis://foo.example/bar?decode_responses=False")
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
152 self.assertIn('decode_responses', cm.exception.__str__())
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
153
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
154 config._get_option('SESSIONDB_REDIS_URL').set(
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
155 "redis://localhost:6379/0?health_check_interval=2")
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
156
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
157 def testLoginAttemptsMin(self):
5772
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
158 config = configuration.CoreConfig()
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
159
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
160 self.assertEqual(None,
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
161 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set("0"))
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
162 self.assertEqual(None,
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
163 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set("200"))
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
164
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
165 self.assertRaises(configuration.OptionValueError,
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
166 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set, "fred")
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
167
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
168 self.assertRaises(configuration.OptionValueError,
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
169 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set, "-1")
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
170
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
171 self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
172 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set, "")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
173
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
174 def testTimeZone(self):
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
175 config = configuration.CoreConfig()
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
176
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
177 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
178 config._get_option('TIMEZONE').set("0"))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
179
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
180 # not a valid timezone
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
181 self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
182 config._get_option('TIMEZONE').set, "Zot")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
183
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
184 # 25 is not a valid UTC offset: -12 - +14 is range
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
185 # possibly +/- 1 for DST. But roundup.date doesn't
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
186 # constrain to this range.
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
187 #self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
188 # config._get_option('TIMEZONE').set, "25")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
189
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
190 try:
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
191 import pytz
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
192 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
193 config._get_option('TIMEZONE').set("UTC"))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
194 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
195 config._get_option('TIMEZONE').set("America/New_York"))
6296
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
196 self.assertEqual(None,
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
197 config._get_option('TIMEZONE').set("EST"))
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
198 self.assertRaises(configuration.OptionValueError,
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
199 config._get_option('TIMEZONE').set, "Zool/Zot")
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
200
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
201 except ImportError:
6296
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
202 # UTC is a known offset of 0 coded into roundup.date
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
203 # so it works even without pytz.
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
204 self.assertEqual(None,
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
205 config._get_option('TIMEZONE').set("UTC"))
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
206 # same with EST known timeone offset of 5
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
207 self.assertEqual(None,
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
208 config._get_option('TIMEZONE').set("EST"))
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
209 self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
210 config._get_option('TIMEZONE').set, "America/New_York")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
211
6296
6cf9f2f49b89 Fix UTC timezone test case if pytz not available; add tests
John Rouillard <rouilj@ieee.org>
parents: 5794
diff changeset
212
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
213 def testWebSecretKey(self):
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
214 config = configuration.CoreConfig()
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
215
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
216 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
217 config._get_option('WEB_SECRET_KEY').set("skskskd"))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
218
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
219 self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
220 config._get_option('WEB_SECRET_KEY').set, "")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
221
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
222
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
223 def testStaticFiles(self):
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
224 config = configuration.CoreConfig()
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
225
7913
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
226
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
227 if ("/tmp/bar" == normpath("/tmp/bar/")):
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
228 result_list = ["./foo", "/tmp/bar"]
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
229 else:
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
230 result_list = [".\\foo", "\\tmp\\bar"]
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
231 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
232 config._get_option('STATIC_FILES').set("foo /tmp/bar"))
7913
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
233 print(config.STATIC_FILES)
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
234 self.assertEqual(config.STATIC_FILES, result_list)
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
235
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
236 def testIsolationLevel(self):
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
237 config = configuration.CoreConfig()
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
238
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
239 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
240 config._get_option('RDBMS_ISOLATION_LEVEL').set("read uncommitted"))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
241 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
242 config._get_option('RDBMS_ISOLATION_LEVEL').set("read committed"))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
243 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
244 config._get_option('RDBMS_ISOLATION_LEVEL').set("repeatable read"))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
245
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
246
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
247 self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
248 config._get_option('RDBMS_ISOLATION_LEVEL').set, "not a level")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
249
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
250 def testConfigSave(self):
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
251
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
252 config = configuration.CoreConfig()
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
253 # make scratch directory to create files in
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
254
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
255 self.startdir = os.getcwd()
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
256
7584
a5629f6e7ec2 test: fix mising / in directory spec.
John Rouillard <rouilj@ieee.org>
parents: 7556
diff changeset
257 self.dirname = os.getcwd() + '/_test_config'
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
258 os.mkdir(self.dirname)
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
259
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
260 try:
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
261 os.chdir(self.dirname)
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
262 self.assertFalse(os.access("config.ini", os.F_OK))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
263 self.assertFalse(os.access("config.bak", os.F_OK))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
264 config.save()
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
265 config.save() # creates .bak file
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
266 self.assertTrue(os.access("config.ini", os.F_OK))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
267 self.assertTrue(os.access("config.bak", os.F_OK))
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
268 config.save() # trigger delete of old .bak file
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
269 # FIXME: this should test to see if a new .bak
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
270 # was created. For now verify .bak still exists
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
271 self.assertTrue(os.access("config.bak", os.F_OK))
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
272
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
273 self.assertFalse(os.access("foo.bar", os.F_OK))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
274 self.assertFalse(os.access("foo.bak", os.F_OK))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
275 config.save("foo.bar")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
276 config.save("foo.bar") # creates .bak file
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
277 self.assertTrue(os.access("foo.bar", os.F_OK))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
278 self.assertTrue(os.access("foo.bak", os.F_OK))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
279
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
280 finally:
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
281 # cleanup scratch directory and files
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
282 try:
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
283 os.chdir(self.startdir)
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
284 shutil.rmtree(self.dirname)
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
285 except OSError as error:
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
286 if error.errno not in (errno.ENOENT, errno.ESRCH): raise
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
287
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
288 def testFloatAndInt_with_update_option(self):
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
289
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
290 config = configuration.CoreConfig()
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
291
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
292 # Update existing IntegerNumberGeqZeroOption to IntegerNumberOption
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
293 config.update_option('WEB_LOGIN_ATTEMPTS_MIN',
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
294 configuration.IntegerNumberOption,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
295 "0", description="new desc")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
296
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
297 # -1 is allowed now that it is an int.
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
298 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
299 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set("-1"))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
300
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
301 # but can't float this
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
302 self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
303 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set, "2.4")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
304
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
305 # but fred is still an issue
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
306 self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
307 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set, "fred")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
308
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
309 # Update existing IntegerNumberOption to FloatNumberOption
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
310 config.update_option('WEB_LOGIN_ATTEMPTS_MIN',
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
311 configuration.FloatNumberOption,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
312 "0.0")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
313
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
314 self.assertEqual(config['WEB_LOGIN_ATTEMPTS_MIN'], -1)
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
315
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
316 # can float this
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
317 self.assertEqual(None,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
318 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set("3.1415926"))
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
319
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
320 # but fred is still an issue
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
321 self.assertRaises(configuration.OptionValueError,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
322 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set, "fred")
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
323
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
324 self.assertAlmostEqual(config['WEB_LOGIN_ATTEMPTS_MIN'], 3.1415926,
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
325 places=6)
6331
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
326
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
327 # test removal of .0 on floats that are integers
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
328 self.assertEqual(None,
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
329 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set("3.0"))
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
330
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
331 self.assertEqual("3",
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
332 config._get_option('WEB_LOGIN_ATTEMPTS_MIN')._value2str(3.00))
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
333
7556
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
334 def testIntegerNumberGtZeroOption(self):
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
335
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
336 config = configuration.CoreConfig()
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
337
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
338 # Update existing IntegerNumberGeqZeroOption to IntegerNumberOption
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
339 config.update_option('WEB_LOGIN_ATTEMPTS_MIN',
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
340 configuration.IntegerNumberGtZeroOption,
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
341 "1", description="new desc")
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
342
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
343 self.assertEqual(None,
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
344 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set("1"))
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
345
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
346 # -1 is not allowed
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
347 self.assertRaises(configuration.OptionValueError,
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
348 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set, "-1")
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
349
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
350 # but can't float this
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
351 self.assertRaises(configuration.OptionValueError,
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
352 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set, "2.4")
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
353
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
354 # but can't float this
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
355 self.assertRaises(configuration.OptionValueError,
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
356 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set, "0.5")
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
357
273c8c2b5042 fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents: 7155
diff changeset
358
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6604
diff changeset
359 def testOriginHeader(self):
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6604
diff changeset
360 config = configuration.CoreConfig()
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6604
diff changeset
361
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6604
diff changeset
362 with self.assertRaises(configuration.OptionValueError) as cm:
7155
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 6821
diff changeset
363 config._get_option('WEB_ALLOWED_API_ORIGINS').set("https://foo.edu *")
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 6821
diff changeset
364
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 6821
diff changeset
365 config._get_option('WEB_ALLOWED_API_ORIGINS').set("* https://foo.edu HTTP://baR.edu")
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6604
diff changeset
366
7155
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 6821
diff changeset
367 self.assertEqual(config['WEB_ALLOWED_API_ORIGINS'][0], '*')
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 6821
diff changeset
368 self.assertEqual(config['WEB_ALLOWED_API_ORIGINS'][1], 'https://foo.edu')
89a59e46b3af improve REST interface security
John Rouillard <rouilj@ieee.org>
parents: 6821
diff changeset
369 self.assertEqual(config['WEB_ALLOWED_API_ORIGINS'][2], 'HTTP://baR.edu')
6681
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6604
diff changeset
370
ab2ed11c021e issue2551205: Add support for specifying valid origins for api: xmlrpc/rest
John Rouillard <rouilj@ieee.org>
parents: 6604
diff changeset
371
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
372
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
373 def testOptionAsString(self):
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
374
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
375 config = configuration.CoreConfig()
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
376
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
377 config._get_option('WEB_LOGIN_ATTEMPTS_MIN').set("2552")
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
378
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
379 v = config._get_option('WEB_LOGIN_ATTEMPTS_MIN').__str__()
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
380 print(v)
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
381 self.assertIn("55", v)
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
382
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
383 v = config._get_option('WEB_LOGIN_ATTEMPTS_MIN').__repr__()
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
384 print(v)
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
385 self.assertIn("55", v)
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
386
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
387 def testBooleanOption(self):
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
388
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
389 config = configuration.CoreConfig()
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
390
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
391 with self.assertRaises(configuration.OptionValueError) as cm:
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
392 config._get_option('INSTANT_REGISTRATION').set("3")
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
393
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
394 # test multiple boolean representations
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
395 for b in [ "yes", "1", "true", "TRUE", "tRue", "on",
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
396 "oN", 1, True ]:
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
397 self.assertEqual(None,
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
398 config._get_option('INSTANT_REGISTRATION').set(b))
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
399 self.assertEqual(1,
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
400 config._get_option('INSTANT_REGISTRATION').get())
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
401
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
402 for b in ["no", "0", "false", "FALSE", "fAlse", "off",
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
403 "oFf", 0, False]:
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
404 self.assertEqual(None,
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
405 config._get_option('INSTANT_REGISTRATION').set(b))
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
406 self.assertEqual(0,
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
407 config._get_option('INSTANT_REGISTRATION').get())
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
408
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
409 def testOctalNumberOption(self):
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
410
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
411 config = configuration.CoreConfig()
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
412
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
413 with self.assertRaises(configuration.OptionValueError) as cm:
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
414 config._get_option('UMASK').set("xyzzy")
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
415
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
416 print(type(config._get_option('UMASK')))
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
417
6331
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
418
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
419 @pytest.mark.usefixtures("save_restore_logging")
6331
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
420 class TrackerConfig(unittest.TestCase):
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
421
8446
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
422 @pytest.fixture(autouse=True)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
423 def inject_fixtures(self, caplog):
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
424 self._caplog = caplog
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
425
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
426 @pytest.fixture(autouse=True)
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
427 def save_restore_logging(self):
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
428 """Save logger state and try to restore it after each test
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
429 has finished.
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
430
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
431 The primary test is testDictLoggerConfigViaJson which
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
432 can change the loggers and break tests that depend on caplog
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
433 """
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
434 # Save logger state for root and roundup top level logger
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
435 loggernames = ("", "roundup")
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
436
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
437 # The state attributes to save. Lists are shallow copied
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
438 state_to_save = ("filters", "handlers", "level", "propagate")
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
439
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
440 logger_state = {}
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
441 for name in loggernames:
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
442 logger_state[name] = {}
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
443 roundup_logger = logging.getLogger(name)
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
444
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
445 for i in state_to_save:
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
446 attr = getattr(roundup_logger, i)
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
447 if isinstance(attr, list):
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
448 logger_state[name][i] = attr.copy()
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
449 else:
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
450 logger_state[name][i] = getattr(roundup_logger, i)
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
451
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
452 # run all class tests here
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
453 yield
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
454
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
455 # rip down all the loggers leaving the root logger reporting
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
456 # to stdout.
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
457 # otherwise logger config is leaking to other tests
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
458 roundup_loggers = [logging.getLogger(name) for name in
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
459 logging.root.manager.loggerDict
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
460 if name.startswith("roundup")]
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
461
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
462 # cribbed from configuration.py:init_loggers
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
463 hdlr = logging.StreamHandler(sys.stdout)
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
464 formatter = logging.Formatter(
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
465 '%(asctime)s %(trace_id)s %(levelname)s %(message)s')
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
466 hdlr.setFormatter(formatter)
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
467
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
468 for logger in roundup_loggers:
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
469 # no logging API to remove all existing handlers!?!
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
470 for h in logger.handlers:
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
471 h.close()
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
472 logger.removeHandler(h)
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
473 logger.handlers = [hdlr]
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
474 logger.setLevel("WARNING")
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
475 logger.propagate = True # important as caplog requires this
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
476
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
477 # Restore the info we stored before running tests
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
478 for name in loggernames:
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
479 local_logger = logging.getLogger(name)
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
480 for attr in logger_state[name]:
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
481 setattr(local_logger, attr, logger_state[name][attr])
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
482
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
483 # reset logging as well
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
484 from importlib import reload
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
485 logging.shutdown()
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
486 reload(logging)
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
487
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
488 def reset_logging(self):
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
489 """https://til.tafkas.net/posts/-resetting-python-logging-before-running-tests/"""
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
490 loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
491 loggers.append(logging.getLogger())
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
492 for logger in loggers:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
493 handlers = logger.handlers[:]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
494 for handler in handlers:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
495 logger.removeHandler(handler)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
496 handler.close()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
497 logger.setLevel(logging.NOTSET)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
498 logger.propagate = True
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
499
6331
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
500 backend = 'anydbm'
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
501
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
502 def setUp(self):
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
503 self.dirname = '_test_instance'
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
504 # set up and open a tracker
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
505 self.instance = db_test_base.setupTracker(self.dirname, self.backend)
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
506
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
507 # open the database
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
508 self.db = self.instance.open('admin')
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
509
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
510 self.db.commit()
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
511 self.db.close()
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
512
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
513 def tearDown(self):
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
514 if self.db:
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
515 self.db.close()
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
516 try:
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
517 shutil.rmtree(self.dirname)
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
518 except OSError as error:
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
519 if error.errno not in (errno.ENOENT, errno.ESRCH): raise
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
520
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
521 def munge_configini(self, mods = None, section=None):
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
522 """ modify config.ini to meet testing requirements
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
523
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
524 mods is a list of tuples:
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
525 [ ( "a = ", "b" ), ("c = ", None), ("d = ", "b", "z = ") ]
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
526 Match line with first tuple element e.g. "a = ". Note specify
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
527 trailing "=" and space to delimit keyword and properly format
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
528 replacement line. If there are two elements in the tuple,
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
529 and the first element matches, the line is
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
530 replaced with the concatenation of the first and second elements.
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
531 If second element is None ("" doesn't work), the line will be
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
532 deleted. If there are three elements in the tuple, the line
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
533 is replaced with the contcatentation of the third and second
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
534 elements (used to replace commented out parameters).
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
535
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
536 Note if the key/first element of tuple is not unique in
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
537 config.ini, you must set the section to match the bracketed
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
538 section name.
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
539 """
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
540
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
541 if mods is None:
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
542 return
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
543
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
544 # if section is defined, the tests in the loop will turn
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
545 # it off on [main] if section != '[main]'.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
546 in_section = True
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
547
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
548 for line in fileinput.input(os.path.join(self.dirname, "config.ini"),
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
549 inplace=True):
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
550 if section:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
551 if line.startswith('['):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
552 in_section = False
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
553
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
554 if line.startswith(section):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
555 in_section = True
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
556
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
557 if in_section:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
558 for rule in mods:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
559 if len(rule) == 3:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
560 match, value, repl = rule
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
561 else:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
562 match, value = rule
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
563 repl = None
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
564
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
565 if line.startswith(match):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
566 if value is not None:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
567 if repl:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
568 print(repl + value)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
569 else:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
570 print(match + value)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
571 break
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
572 else:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
573 print(line[:-1]) # remove trailing \n
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
574 else:
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
575 print(line[:-1]) # remove trailing \n
6331
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
576
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
577 def testNoDBInConfig(self):
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
578 """Arguably this should be tested in test_instance since it is
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
579 triggered by instance.open. But it raises an error in the
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
580 configuration module with a missing required param in
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
581 config.ini.
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
582 """
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
583
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
584 # remove the backend key in config.ini
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
585 self.munge_configini(mods=[ ("backend = ", None) ])
6331
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
586
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
587 # this should fail as backend isn't defined.
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
588 with self.assertRaises(configuration.OptionUnsetError) as cm:
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
589 instance.open(self.dirname)
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
590
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
591 self.assertEqual("RDBMS_BACKEND is not set"
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
592 " and has no default", cm.exception.__str__())
6331
c547e05d7a54 Test case where backend is missing from config.ini.
John Rouillard <rouilj@ieee.org>
parents: 6296
diff changeset
593
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
594 def testUnsetMailPassword_with_set_username(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
595 """ Set [mail] username but don't set the
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
596 [mail] password. Should get an OptionValueError.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
597 """
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
598 # SETUP: set mail username
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
599 self.munge_configini(mods=[ ("username = ", "foo"), ],
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
600 section="[mail]")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
601
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
602 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
603
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
604 with self.assertRaises(configuration.OptionValueError) as cm:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
605 config.load(self.dirname)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
606
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
607 print(cm.exception)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
608 # test repr. The type is right since it passed assertRaises.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
609 self.assertIn("OptionValueError", repr(cm.exception))
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
610 # look for 'not defined'
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
611 self.assertEqual("not defined", cm.exception.args[1])
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
612
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
613
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
614 def testUnsetMailPassword_with_unset_username(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
615 """ Set [mail] username but don't set the
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
616 [mail] password. Should get an OptionValueError.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
617 """
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
618 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
619
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
620 config.load(self.dirname)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
621
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
622 self.assertEqual(config['MAIL_USERNAME'], '')
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
623
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
624 with self.assertRaises(configuration.OptionUnsetError) as cm:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
625 self.assertEqual(config['MAIL_PASSWORD'], 'NO DEFAULT')
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
626
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
627 def testSecretMandatory_missing_file(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
628
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
629 # SETUP:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
630 self.munge_configini(mods=[ ("secret_key = ", "file://secret_key"), ])
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
631
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
632 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
633
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
634 with self.assertRaises(configuration.OptionValueError) as cm:
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
635 config.load(self.dirname)
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
636
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
637 print(cm.exception)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
638 self.assertEqual(cm.exception.args[0].setting, "secret_key")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
639
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
640 def testSecretMandatory_load_from_file(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
641
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
642 # SETUP:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
643 self.munge_configini(mods=[ ("secret_key = ", "file://secret_key"), ])
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
644
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
645 secret = "ASDQWEZXCRFVBGTYHNMJU"
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
646 with open(self.dirname + "/secret_key", "w") as f:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
647 f.write(secret + "\n")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
648
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
649 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
650
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
651 config.load(self.dirname)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
652
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
653 self.assertEqual(config['WEB_SECRET_KEY'], secret)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
654
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
655
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
656 def testSecretMandatory_load_from_abs_file(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
657
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
658 abs_file = "/tmp/secret_key.%s"%os.getpid()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
659
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
660 # SETUP:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
661 self.munge_configini(mods=[ ("secret_key = ", "file://%s"%abs_file), ])
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
662
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
663 secret = "ASDQWEZXCRFVBGTYHNMJU"
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
664 with open(abs_file, "w") as f:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
665 f.write(secret + "\n")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
666
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
667 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
668
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
669 config.load(self.dirname)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
670
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
671 self.assertEqual(config['WEB_SECRET_KEY'], secret)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
672
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
673 os.remove(abs_file)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
674
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
675 def testSecretMandatory_empty_file(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
676
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
677 self.munge_configini(mods=[ ("secret_key = ", "file:// secret_key"), ])
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
678
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
679 # file with no value just newline.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
680 with open(self.dirname + "/secret_key", "w") as f:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
681 f.write("\n")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
682
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
683 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
684
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
685 with self.assertRaises(configuration.OptionValueError) as cm:
6584
770503bd211e Validate SecretOption and support validate method
John Rouillard <rouilj@ieee.org>
parents: 6578
diff changeset
686 config.load(self.dirname)
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
687
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
688 print(cm.exception.args)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
689 self.assertEqual(cm.exception.args[2],"Value must not be empty.")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
690
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
691 def testNullableSecret_empty_file(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
692
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
693 self.munge_configini(mods=[ ("password = ", "file://db_password"), ])
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
694
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
695 # file with no value just newline.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
696 with open(self.dirname + "/db_password", "w") as f:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
697 f.write("\n")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
698
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
699 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
700
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
701 config.load(self.dirname)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
702
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
703 v = config['RDBMS_PASSWORD']
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
704
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
705 self.assertEqual(v, None)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
706
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
707 def testNullableSecret_with_file_value(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
708
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
709 self.munge_configini(mods=[ ("password = ", "file://db_password"), ])
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
710
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
711 # file with no value just newline.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
712 with open(self.dirname + "/db_password", "w") as f:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
713 f.write("test\n")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
714
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
715 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
716
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
717 config.load(self.dirname)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
718
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
719 v = config['RDBMS_PASSWORD']
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
720
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
721 self.assertEqual(v, "test")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
722
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
723 def testNullableSecret_with_value(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
724
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
725 self.munge_configini(mods=[ ("password = ", "test"), ])
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
726
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
727 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
728
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
729 config.load(self.dirname)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
730
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
731 v = config['RDBMS_PASSWORD']
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
732
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
733 self.assertEqual(v, "test")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
734
7809
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
735 def testListSecret_for_jwt_invalid_secret(self):
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
736 """A jwt_secret is made of ',' separated strings.
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
737 If the first string is < 32 characters (like the default
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
738 value of disabled) then jwt is disabled and no harm done.
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
739 If any other secrets are <32 characters we raise a red flag
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
740 on startup to prevent them from being used.
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
741 """
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
742 self.munge_configini(mods=[ ("jwt_secret = ", "disable, test"), ])
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
743
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
744 config = configuration.CoreConfig()
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
745
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
746 with self.assertRaises(configuration.OptionValueError) as cm:
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
747 config.load(self.dirname)
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
748
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
749 print(cm.exception.args)
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
750 self.assertEqual(
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
751 cm.exception.args[2],
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
752 "One or more secrets less then 32 characters in length\nfound: test")
be6cb2e0d471 feat: add support for rotating jwt keys
John Rouillard <rouilj@ieee.org>
parents: 7584
diff changeset
753
6578
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
754 def testSetMailPassword_with_set_username(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
755 """ Set [mail] username and set the password.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
756 Should have both values set.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
757 """
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
758 # SETUP: set mail username
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
759 self.munge_configini(mods=[ ("username = ", "foo"),
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
760 ("#password = ", "passwordfoo",
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
761 "password = ") ],
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
762 section="[mail]")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
763
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
764 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
765
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
766 config.load(self.dirname)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
767
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
768 self.assertEqual(config['MAIL_USERNAME'], 'foo')
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
769 self.assertEqual(config['MAIL_PASSWORD'], 'passwordfoo')
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
770
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
771 def testSetMailPassword_from_file(self):
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
772 """ Set [mail] username and set the password.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
773 Should have both values set.
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
774 """
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
775 # SETUP: set mail username
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
776 self.munge_configini(mods=[ ("username = ", "foo"),
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
777 ("#password = ", "file://password",
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
778 "password = ") ],
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
779 section="[mail]")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
780 with open(self.dirname + "/password", "w") as f:
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
781 f.write("passwordfoo\n")
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
782
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
783 config = configuration.CoreConfig()
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
784
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
785 config.load(self.dirname)
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
786
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
787 self.assertEqual(config['MAIL_USERNAME'], 'foo')
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
788 self.assertEqual(config['MAIL_PASSWORD'], 'passwordfoo')
b1f1539c6a31 issue2551182 - ... allow loading values from external file. flake8 cleanups
John Rouillard <rouilj@ieee.org>
parents: 6560
diff changeset
789
6367
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
790 @skip_xapian
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
791 def testInvalidIndexerLanguage_w_empty(self):
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
792 """ make sure we have a reasonable error message if
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
793 invalid indexer language is specified. This uses
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
794 default search path for indexers.
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
795 """
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
796
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
797 # SETUP: set indexer_language value to an invalid value.
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
798 self.munge_configini(mods=[ ("indexer = ", ""),
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
799 ("indexer_language = ", "NO_LANG") ])
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
800
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
801 config = configuration.CoreConfig()
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
802
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
803 with self.assertRaises(configuration.OptionValueError) as cm:
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
804 config.load(self.dirname)
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
805
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
806 print(cm.exception)
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
807 # test repr. The type is right since it passed assertRaises.
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
808 self.assertIn("OptionValueError", repr(cm.exception))
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
809 # look for failing language
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
810 self.assertIn("NO_LANG", cm.exception.args[1])
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
811 # look for supported language
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
812 self.assertIn("english", cm.exception.args[2])
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
813
6368
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
814 @include_no_xapian
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
815 def testInvalidIndexerLanguage_w_empty_no_xapian(self):
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
816 """ Test case for empty indexer if xapian really isn't installed
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
817
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
818 This should behave like testInvalidIndexerLanguage_xapian_missing
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
819 but without all the sys.modules mangling.
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
820 """
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
821 print("Testing when xapian is not installed")
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
822
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
823 # SETUP: set indexer_language value to an invalid value.
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
824 self.munge_configini(mods=[ ("indexer = ", ""),
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
825 ("indexer_language = ", "NO_LANG") ])
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
826
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
827 config = configuration.CoreConfig()
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
828
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
829 config.load(self.dirname)
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
830
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
831 self.assertEqual(config['INDEXER_LANGUAGE'], 'NO_LANG')
e3ed3ad9e795 issue2551125 Add indexer_lang test that runs if xapian not installed
John Rouillard <rouilj@ieee.org>
parents: 6367
diff changeset
832
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
833 def testInvalidIndexerLanguage_xapian_missing(self):
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
834 """Using default path for indexers, make import of xapian
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
835 fail and prevent exception from happening even though
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
836 the indexer_language would be invalid for xapian.
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
837 """
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
838
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
839 print("Testing xapian not loadable")
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
840
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
841 # SETUP: same as testInvalidIndexerLanguage_w_empty
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
842 self.munge_configini(mods=[ ("indexer = ", ""),
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
843 ("indexer_language = ", "NO_LANG") ])
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
844
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
845 import sys
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
846 # Set module to Non to prevent xapian from loading
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
847 sys.modules['xapian'] = None
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
848 config.load(self.dirname)
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
849
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
850 # need to delete both to make python2 not error finding _xapian
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
851 del(sys.modules['xapian'])
6371
5c1db5d4baed Fix failing xapian test
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6368
diff changeset
852 if 'xapian._xapian' in sys.modules:
6367
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
853 del(sys.modules['xapian._xapian'])
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
854
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
855 self.assertEqual(config['INDEXER_LANGUAGE'], 'NO_LANG')
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
856
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
857 # do a reset here to test reset rather than wasting cycles
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
858 # to do setup in a different test
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
859 config.reset()
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
860 self.assertEqual(config['INDEXER_LANGUAGE'], 'english')
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
861
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
862 def testInvalidIndexerLanguage_w_native(self):
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
863 """indexer_language is invalid but indexer is not "" or xapian
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
864 Config load should succeed without exception.
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
865 """
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
866
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
867 print("Testing indexer = native")
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
868
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
869 self.munge_configini(mods = [ ("indexer = ", "native"),
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
870 ("indexer_language = ", "NO_LANG") ])
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
871
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
872 config.load(self.dirname)
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
873
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
874 self.assertEqual(config['HTML_VERSION'], 'html4')
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
875 self.assertEqual(config['INDEXER_LANGUAGE'], 'NO_LANG')
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
876
6367
8a7de159d1a6 issue2551125 Make indexer_lang test work if xapian not installed.
John Rouillard <rouilj@ieee.org>
parents: 6363
diff changeset
877 @skip_xapian
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
878 def testInvalidIndexerLanguage_w_xapian(self):
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
879 """ Use explicit xapian indexer. Verify exception is
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
880 generated.
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
881 """
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
882
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
883 print("Testing explicit xapian")
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
884
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
885 self.munge_configini(mods=[ ("indexer = ", "xapian"),
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
886 ("indexer_language = ", "NO_LANG") ])
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
887
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
888 with self.assertRaises(configuration.OptionValueError) as cm:
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
889 config.load(self.dirname)
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
890 # don't test exception content. Done in
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
891 # testInvalidIndexerLanguage_w_empty
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
892 # if exception not generated assertRaises
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
893 # will generate failure.
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
894
6604
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
895 def testInvalidIndexerLanguage_w_native_fts(self):
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
896 """ Use explicit native-fts indexer. Verify exception is
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
897 generated.
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
898 """
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
899
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
900 self.munge_configini(mods=[ ("indexer = ", "native-fts"),
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
901 ("indexer_language = ", "NO_LANG") ])
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
902
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
903 with self.assertRaises(configuration.OptionValueError) as cm:
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
904 config.load(self.dirname)
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
905
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
906 # test repr. The type is right since it passed assertRaises.
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
907 self.assertIn("OptionValueError", repr(cm.exception))
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
908 # look for failing language
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
909 self.assertIn("NO_LANG", cm.exception.args[1])
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
910 # look for supported language
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
911 self.assertIn("basque", cm.exception.args[2])
0d99ae7c8de6 Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents: 6584
diff changeset
912
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
913 @skip_redis
7900
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
914 def testLoadSessionDbRedisCompatible(self):
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
915 """ run load to validate config """
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
916
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
917 config = configuration.CoreConfig()
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
918
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
919 # compatible pair
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
920 config.RDBMS_BACKEND = "sqlite"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
921 config.SESSIONDB_BACKEND = "redis"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
922
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
923 config.validator(config.options)
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
924
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
925 # compatible pair
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
926 config.RDBMS_BACKEND = "anydbm"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
927 config.SESSIONDB_BACKEND = "redis"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
928
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
929 config.validator(config.options)
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
930
7900
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
931 @skip_redis
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
932 @skip_postgresql
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
933 def testLoadSessionDbRedisIncompatible(self):
011941fcb598 test: skip test requiring postgresql backend if not present
John Rouillard <rouilj@ieee.org>
parents: 7809
diff changeset
934 """ run load to validate config """
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
935 # incompatible pair
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
936 config.RDBMS_BACKEND = "postgresql"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
937 config.SESSIONDB_BACKEND = "redis"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
938
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
939 with self.assertRaises(configuration.OptionValueError) as cm:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
940 config.validator(config.options)
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
941
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
942 self.assertIn(" db type: redis with postgresql",
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
943 cm.exception.__str__())
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
944
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
945 def testLoadSessionDb(self):
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
946 """ run load to validate config """
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
947
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
948 config = configuration.CoreConfig()
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
949
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
950 # incompatible pair
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
951 config.RDBMS_BACKEND = "sqlite"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
952 config.SESSIONDB_BACKEND = "foo"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
953
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
954 with self.assertRaises(configuration.OptionValueError) as cm:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
955 config.validator(config.options)
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
956
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
957 self.assertIn(" db type: foo with sqlite",
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
958 cm.exception.__str__())
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
959
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
960 # compatible pair
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
961 config.RDBMS_BACKEND = "sqlite"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
962 config.SESSIONDB_BACKEND = ""
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
963
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
964 config.validator(config.options) # any exception will fail test
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
965
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
966 config.RDBMS_BACKEND = "sqlite"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
967 config.SESSIONDB_BACKEND = "anydbm"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
968
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
969 config.validator(config.options) # any exception will fail test
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
970
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
971 config.RDBMS_BACKEND = "anydbm"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
972 config.SESSIONDB_BACKEND = "redis"
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
973
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
974 # make it looks like redis is not available
6821
e0f0aed72097 Fix test if redis is not loaded
John Rouillard <rouilj@ieee.org>
parents: 6814
diff changeset
975 try:
e0f0aed72097 Fix test if redis is not loaded
John Rouillard <rouilj@ieee.org>
parents: 6814
diff changeset
976 del(sys.modules['redis'])
e0f0aed72097 Fix test if redis is not loaded
John Rouillard <rouilj@ieee.org>
parents: 6814
diff changeset
977 except KeyError:
e0f0aed72097 Fix test if redis is not loaded
John Rouillard <rouilj@ieee.org>
parents: 6814
diff changeset
978 # redis is not available anyway.
e0f0aed72097 Fix test if redis is not loaded
John Rouillard <rouilj@ieee.org>
parents: 6814
diff changeset
979 pass
e0f0aed72097 Fix test if redis is not loaded
John Rouillard <rouilj@ieee.org>
parents: 6814
diff changeset
980
6814
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
981 sys.modules['redis'] = None
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
982 with self.assertRaises(configuration.OptionValueError) as cm:
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
983 config.validator(config.options)
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
984 del(sys.modules['redis'])
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
985
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
986 self.assertIn("Unable to load redis module",
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
987 cm.exception.__str__())
3f60a71b0812 Summary: Support selecion session/otk data store. Add redis as data store.
John Rouillard <rouilj@ieee.org>
parents: 6681
diff changeset
988
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
989 def testLoadConfig(self):
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
990 """ run load to validate config """
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
991
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
992 config = configuration.CoreConfig()
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
993
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
994 config.load(self.dirname)
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
995
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
996 # test various ways of accessing config data
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
997 with self.assertRaises(configuration.InvalidOptionError) as cm:
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
998 # using lower case name fails
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
999 c = config['indexer_language']
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
1000 print(cm.exception)
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
1001 self.assertIn("indexer_language", repr(cm.exception))
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
1002
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
1003 # uppercase name passes as does tuple index for setting in main
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
1004 self.assertEqual(config['HTML_VERSION'], 'html4')
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
1005 self.assertEqual(config[('main', 'html_version')], 'html4')
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
1006
6357
c985ed52ca2d Add testcases for invalid indexer_language
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
1007 # uppercase name passes as does tuple index for setting in web
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
1008 self.assertEqual(config['WEB_COOKIE_TAKES_PRECEDENCE'], 0)
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6331
diff changeset
1009 self.assertEqual(config[('web','cookie_takes_precedence')], 0)
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1010
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1011
6359
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1012 def testLoadConfigNoConfig(self):
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1013 """ run load on a directory missing config.ini """
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1014
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1015 c = os.path.join(self.dirname, configuration.Config.INI_FILE)
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1016 if os.path.exists(c):
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1017 os.remove(c)
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1018 else:
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1019 self.assertFalse("setup failed missing config.ini")
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1020
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1021 config = configuration.CoreConfig()
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1022
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1023 with self.assertRaises(configuration.NoConfigError) as cm:
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1024 config.load(self.dirname)
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1025
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1026 print(cm.exception)
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1027 self.assertEqual(cm.exception.args[0], self.dirname)
2d42a308927b Test trying to load missing config.ini file.
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1028
8446
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1029 def testFormattedLogging(self):
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1030 """Depends on using default logging format with %(trace_id)"""
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1031
8446
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1032 def find_file_occurances(string):
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1033 return len(re.findall(r'\bFile\b', string))
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1034
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1035 config = configuration.CoreConfig(settings={"LOGGING_LEVEL": "DEBUG"})
8446
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1036
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1037 # format the record and verify the logformat/trace_id.
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1038 config._logging_test(None, msg="message")
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1039 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1040 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1041 self.assertEqual("message", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1042 logger = logging.getLogger('roundup')
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1043 hdlr = logger.handlers[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1044 log = hdlr.format(self._caplog.records[0])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1045 # verify that %(trace_id) was set and substituted
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1046 # Note: trace_id is not initialized in this test case
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1047 log_parts = log.split()
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1048 # testing len(shorten_int_uuid(uuid.uuid4().int))
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1049 # for 20000 tests gives range [19,22]
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1050 self.assertRegex(log_parts[2], r'^[A-Za-z0-9]{19,22}')
8446
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1051 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1052
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1053 # the rest check various values of sinfo and msg formating.
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1054
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1055 # sinfo = 1 - one line of stack starting with log call
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1056 config._logging_test(1)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1057 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1058 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1059 self.assertIn("test a_var\n File", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1060 self.assertIn("in _logging_test", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1061 self.assertIn("logger.info(msg, extra=", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1062 self.assertEqual(find_file_occurances(tuple[2]), 1)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1063 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1064
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1065 # sinfo = None - 5 lines of stack starting with log call
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1066 config._logging_test(None)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1067 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1068 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1069 self.assertIn("test a_var\n File", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1070 self.assertIn("in _logging_test", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1071 self.assertIn("logger.info(msg, extra=", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1072 self.assertEqual(find_file_occurances(tuple[2]), 5)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1073 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1074
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1075 # sinfo = 0 - whole stack starting with log call
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1076 config._logging_test(0)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1077 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1078 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1079 self.assertIn("test a_var\n File", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1080 self.assertIn("in _logging_test", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1081 self.assertIn("logger.info(msg, extra=", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1082 # A file in 'pytest' directory should be at the top of stack.
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1083 self.assertIn("pytest", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1084 # no idea how deep the actual stack is, could change with python
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1085 # versions, but 3.12 is 33 so ....
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1086 self.assertTrue(find_file_occurances(tuple[2]) > 10)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1087 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1088
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1089 # sinfo = -1 - one line of stack starting with extract_stack()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1090 config._logging_test(-1)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1091 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1092 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1093 self.assertIn("test a_var\n File", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1094 # The call to extract_stack should be included as the frame
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1095 # at bottom of stack.
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1096 self.assertIn("extract_stack()", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1097 # only one frame included
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1098 self.assertEqual(find_file_occurances(tuple[2]), 1)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1099 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1100
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1101 # sinfo = 1000 - whole stack starting with log call 1000>stack size
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1102 config._logging_test(1000)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1103 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1104 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1105 self.assertIn("test a_var\n File", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1106 self.assertIn("in _logging_test", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1107 self.assertIn("logger.info(msg, extra=", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1108 # A file in 'pytest' directory should be at the top of stack.
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1109 self.assertIn("pytest", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1110 # no idea how deep the actual stack is, could change with python
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1111 # versions, but 3.12 is 33 so ....
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1112 self.assertTrue(find_file_occurances(tuple[2]) > 10)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1113 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1114
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1115 # sinfo = -1000 - whole stack starting with extract_stack
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1116 config._logging_test(-1000)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1117 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1118 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1119 self.assertIn("test a_var\n File", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1120 self.assertIn("in _logging_test", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1121 self.assertIn("logger.info(msg, extra=", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1122 # The call to extract_stack should be included as the frame
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1123 # at bottom of stack.
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1124 self.assertIn("extract_stack()", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1125 # A file in 'pytest' directory should be at the top of stack.
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1126 # no idea how deep the actual stack is, could change with python
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1127 # versions, but 3.12 is 33 so ....
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1128 self.assertTrue(find_file_occurances(tuple[2]) > 10)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1129 self.assertIn("pytest", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1130 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1131
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1132 # pass args and compatible message
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1133 config._logging_test(None, args=(1,2,3),
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1134 msg="one: %s, two: %s, three: %s"
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1135 )
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1136 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1137 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1138 self.assertEqual('one: 1, two: 2, three: 3', tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1139 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1140
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1141 # error case for incorrect placeholder
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1142 config._logging_test(None, msg="%(a)")
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1143 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1144 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1145 self.assertEqual("%(a)", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1146 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1147
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1148 # error case for incompatible format record is the first argument
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1149 # and it can't be turned into floating point.
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1150 config._logging_test(None, msg="%f")
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1151 tuple = self._caplog.record_tuples[0]
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1152 self.assertEqual(tuple[1], 20)
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1153 self.assertEqual("%f", tuple[2])
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1154 self._caplog.clear()
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1155
14c7c07b32d8 feature: add thread local trace_id and trace_reason to logging.
John Rouillard <rouilj@ieee.org>
parents: 8443
diff changeset
1156
7966
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1157 def testXhtmlRaisesOptionError(self):
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1158 self.munge_configini(mods=[ ("html_version = ", "xhtml") ])
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1159
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1160 config = configuration.CoreConfig()
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1161
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1162 # verify config is initalized to defaults
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1163 self.assertEqual(config['HTML_VERSION'], 'html4')
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1164
7966
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1165
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1166 with self.assertRaises(configuration.OptionValueError) as cm:
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1167 # load config
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1168 config.load(self.dirname)
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1169
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1170 print(cm.exception)
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1171 self.assertEqual(str(cm.exception),
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1172 "Invalid value for HTML_VERSION: 'xhtml'\n"
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1173 "Allowed values: html4")
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1174
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1175 def testCopyConfig(self):
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1176
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1177 self.munge_configini(mods=[ ("static_files = ", "html2") ])
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1178
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1179 config = configuration.CoreConfig()
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1180
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1181 # verify config is initalized to defaults
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1182 self.assertEqual(config['STATIC_FILES'], None)
1e38ca6fb16e test: clean up test for deprecation of xhtml.
John Rouillard <rouilj@ieee.org>
parents: 7913
diff changeset
1183
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1184 # load config
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1185 STATIC_FILES = os.path.join(self.dirname, "html2")
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1186 config.load(self.dirname)
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1187 self.assertEqual(config['STATIC_FILES'], [ STATIC_FILES ])
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1188
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1189 # copy config
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1190 config_copy = config.copy()
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1191
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1192 # this should work
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1193 self.assertEqual(config_copy['STATIC_FILES'], [STATIC_FILES])
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1194
6557
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1195 @skip_py2
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1196 def testConfigValueInterpolateError(self):
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1197 ''' error is not raised using ConfigParser under Python 2.
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1198 Unknown cause, so skip it if running python 2.
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1199 '''
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1200
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1201 self.munge_configini(mods=[ ("admin_email = ", "a bare % is invalid") ])
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1202
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1203 config = configuration.CoreConfig()
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1204
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1205 # load config generates:
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1206 '''
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1207 E roundup.configuration.ParsingOptionError: Error in _test_instance/config.ini with section [main] at option admin_email: '%' must be followed by '%' or '(', found: '% is invalid'
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1208 '''
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1209
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1210 with self.assertRaises(configuration.ParsingOptionError) as cm:
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1211 config.load(self.dirname)
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1212
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1213 print(cm.exception)
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1214 self.assertIn("'%' must be followed by '%' or '(', found: '% is invalid'", cm.exception.args[0])
7913
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
1215 self.assertIn(normpath("_test_instance/config.ini") + " with section [main] at option admin_email", cm.exception.args[0])
6557
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1216
8687c096a945 Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents: 6371
diff changeset
1217
6560
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1218 from roundup.admin import AdminTool
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1219 from .test_admin import captured_output
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1220
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1221 admin=AdminTool()
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1222 with captured_output() as (out, err):
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1223 sys.argv=['main', '-i', self.dirname, 'get', 'tile', 'issue1']
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1224 ret = admin.main()
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1225
7913
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
1226 expected_err = ("Error in " +
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
1227 normpath("_test_instance/config.ini") +
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
1228 " with section [main] at option admin_email: '%' "
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
1229 "must be followed by '%' or '(', found: "
6102ae426390 issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents: 7900
diff changeset
1230 "'% is invalid'")
6560
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1231
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1232 self.assertEqual(ret, 1)
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1233 out = out.getvalue().strip()
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1234 self.assertEqual(out, expected_err)
fdfe3b7387ea Add test for config parse error by running AdminTool.
John Rouillard <rouilj@ieee.org>
parents: 6557
diff changeset
1235
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1236 def testInvalidIndexerValue(self):
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1237 """ Mistype native indexer. Verify exception is
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1238 generated.
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1239 """
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1240
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1241 print("Testing indexer nati")
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1242
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1243 self.munge_configini(mods=[ ("indexer = ", "nati") ])
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1244
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1245 with self.assertRaises(configuration.OptionValueError) as cm:
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1246 config.load(self.dirname)
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1247
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1248 self.assertIn("OptionValueError", repr(cm.exception))
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1249 # look for failing value
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1250 self.assertEqual("nati", cm.exception.args[1])
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1251 # look for supported values
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1252 self.assertIn("'whoosh'", cm.exception.args[2])
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6357
diff changeset
1253
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1254 # verify that args show up in string representaton
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1255 string_rep = cm.exception.__str__()
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1256 print(string_rep)
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1257 self.assertIn("nati", string_rep)
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6359
diff changeset
1258 self.assertIn("'whoosh'", string_rep)
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1259
8443
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1260 def testLoggerFormat(self):
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1261 config = configuration.CoreConfig()
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1262
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1263 # verify config is initalized to defaults
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1264 self.assertEqual(config['LOGGING_FORMAT'],
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1265 '%(asctime)s %(trace_id)s %(levelname)s %(message)s')
8443
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1266
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1267 # load config
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1268 config.load(self.dirname)
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1269 self.assertEqual(config['LOGGING_FORMAT'],
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1270 '%(asctime)s %(trace_id)s %(levelname)s %(message)s')
8443
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1271
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1272 # break config using an incomplete format specifier (no trailing 's')
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1273 self.munge_configini(mods=[ ("format = ", "%%(asctime)s %%(trace_id)s %%(levelname) %%(message)s") ], section="[logging]")
8443
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1274
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1275 # load config
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1276 with self.assertRaises(configuration.OptionValueError) as cm:
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1277 config.load(self.dirname)
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1278
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1279 self.assertIn('Unrecognized use of %(...) in: %(levelname)',
8443
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1280 cm.exception.args[2])
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1281
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1282 # break config by not doubling % sign to quote it from configparser
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1283 self.munge_configini(mods=[ ("format = ", "%(asctime)s %%(trace_id)s %%(levelname) %%(message)s") ], section="[logging]")
8443
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1284
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1285 with self.assertRaises(
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1286 configuration.ParsingOptionError) as cm:
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1287 config.load(self.dirname)
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1288
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1289 ini_path = os.path.join(self.dirname, "config.ini")
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1290 self.assertEqual(cm.exception.args[0],(
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1291 f"Error in {ini_path} with section "
8443
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1292 "[logging] at option format: Bad value substitution: "
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1293 "option 'format' in section 'logging' contains an "
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1294 "interpolation key 'asctime' which is not a valid "
8447
d06be9346c68 bug, test: fix tests for trace_id; readd import logging.config
John Rouillard <rouilj@ieee.org>
parents: 8446
diff changeset
1295 "option name. Raw value: '%(asctime)s %%(trace_id)s "
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1296 "%%(levelname) %%(message)s'"))
8443
39a6825d10ca feat: allow admin to set logging format from config.ini
John Rouillard <rouilj@ieee.org>
parents: 8434
diff changeset
1297
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1298 def testDictLoggerConfigViaJson(self):
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1299
8426
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1300 # good base test case
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1301 config1 = dedent("""
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1302 {
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1303 "version": 1, // only supported version
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1304 "disable_existing_loggers": false, // keep the wsgi loggers
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1305
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1306 "formatters": {
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1307 // standard Roundup formatter including context id.
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1308 "standard": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1309 "format": "%(asctime)s %(levelname)s %(name)s:%(module)s %(msg)s"
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1310 },
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1311 // used for waitress wsgi server to produce httpd style logs
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1312 "http": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1313 "format": "%(message)s"
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1314 }
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1315 },
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1316 "handlers": {
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1317 // create an access.log style http log file
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1318 "access": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1319 "level": "INFO",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1320 "formatter": "http",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1321 "class": "logging.FileHandler",
8424
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1322 "filename": "_test_instance/access.log"
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1323 },
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1324 // logging for roundup.* loggers
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1325 "roundup": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1326 "level": "DEBUG",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1327 "formatter": "standard",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1328 "class": "logging.FileHandler",
8424
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1329 "filename": "_test_instance/roundup.log"
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1330 },
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1331 // print to stdout - fall through for other logging
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1332 "default": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1333 "level": "DEBUG",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1334 "formatter": "standard",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1335 "class": "logging.StreamHandler",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1336 "stream": "ext://sys.stdout"
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1337 }
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1338 },
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1339 "loggers": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1340 "": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1341 "handlers": [
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1342 "default" // used by wsgi/usgi
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1343 ],
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1344 "level": "DEBUG",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1345 "propagate": false
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1346 },
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1347 // used by roundup.* loggers
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1348 "roundup": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1349 "handlers": [
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1350 "roundup"
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1351 ],
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1352 "level": "DEBUG",
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1353 "propagate": false // note pytest testing with caplog requires
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1354 // this to be true
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1355 },
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1356 "roundup.hyperdb": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1357 "handlers": [
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1358 "roundup"
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1359 ],
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1360 "level": "INFO", // can be a little noisy INFO for production
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1361 "propagate": false
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1362 },
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1363 "roundup.wsgi": { // using the waitress framework
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1364 "handlers": [
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1365 "roundup"
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1366 ],
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1367 "level": "DEBUG",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1368 "propagate": false
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1369 },
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1370 "roundup.wsgi.translogger": { // httpd style logging
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1371 "handlers": [
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1372 "access"
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1373 ],
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1374 "level": "DEBUG",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1375 "propagate": false
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1376 },
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1377 "root": {
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1378 "handlers": [
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1379 "default"
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1380 ],
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1381 "level": "DEBUG",
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1382 "propagate": false
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1383 }
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1384 }
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1385 }
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1386 """)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1387
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1388 log_config_filename = os.path.join(self.instance.tracker_home,
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1389 "_test_log_config.json")
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1390
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1391 # happy path
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1392 with open(log_config_filename, "w") as log_config_file:
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1393 log_config_file.write(config1)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1394
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1395 config = self.db.config.load_config_dict_from_json_file(
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1396 log_config_filename)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1397 self.assertIn("version", config)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1398 self.assertEqual(config['version'], 1)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1399
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1400 # broken inline comment misformatted
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1401 test_config = config1.replace(": 1, //", ": 1, //")
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1402 with open(log_config_filename, "w") as log_config_file:
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1403 log_config_file.write(test_config)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1404
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1405 with self.assertRaises(configuration.LoggingConfigError) as cm:
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1406 config = self.db.config.load_config_dict_from_json_file(
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1407 log_config_filename)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1408 self.assertEqual(
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1409 cm.exception.args[0],
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1410 ('Error parsing json logging dict '
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1411 '(%s) near \n\n '
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1412 '"version": 1, // only supported version\n\nExpecting '
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1413 'property name enclosed in double quotes: line 3 column 18.\n'
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1414 'Maybe bad inline comment, 3 spaces needed before //.' %
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1415 log_config_filename)
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1416 )
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1417
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1418 # broken trailing , on last dict element
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1419 test_config = config1.replace(' "ext://sys.stdout"',
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1420 ' "ext://sys.stdout",'
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1421 )
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1422 with open(log_config_filename, "w") as log_config_file:
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1423 log_config_file.write(test_config)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1424
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1425 with self.assertRaises(configuration.LoggingConfigError) as cm:
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1426 config = self.db.config.load_config_dict_from_json_file(
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1427 log_config_filename)
8426
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1428 #pre 3.12??
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1429 # FIXME check/remove when 3.13. is min supported version
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1430 if "property name" in cm.exception.args[0]:
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1431 self.assertEqual(
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1432 cm.exception.args[0],
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1433 ('Error parsing json logging dict '
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1434 '(%s) near \n\n'
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1435 ' }\n\n'
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1436 'Expecting property name enclosed in double '
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1437 'quotes: line 37 column 6.' % log_config_filename)
8426
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1438 )
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1439
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1440 # 3.13+ diags FIXME
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1441 print('FINDME')
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1442 print(cm.exception.args[0])
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1443 _junk = '''
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1444 if "property name" not in cm.exception.args[0]:
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1445 self.assertEqual(
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1446 cm.exception.args[0],
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1447 ('Error parsing json logging dict '
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1448 '(%s) near \n\n'
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1449 ' "stream": "ext://sys.stdout"\n\n'
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1450 'Expecting property name enclosed in double '
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1451 'quotes: line 37 column 6.' % log_config_filename)
8426
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1452 )
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1453 '''
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1454 # happy path for init_logging()
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1455
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1456 # verify preconditions
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1457 logger = logging.getLogger("roundup")
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1458 self.assertEqual(logger.level, 40) # error default from config.ini
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1459 self.assertEqual(logger.filters, [])
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1460
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1461 with open(log_config_filename, "w") as log_config_file:
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1462 log_config_file.write(config1)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1463
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1464 # file is made relative to tracker dir.
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1465 self.db.config["LOGGING_CONFIG"] = '_test_log_config.json'
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1466 config = self.db.config.init_logging()
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1467 self.assertIs(config, None)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1468
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1469 logger = logging.getLogger("roundup")
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1470 self.assertEqual(logger.level, 10) # debug
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1471 self.assertEqual(logger.filters, [])
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1472
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1473 # broken invalid format type (int not str)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1474 test_config = config1.replace('"format": "%(message)s"',
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1475 '"format": 1234',)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1476 with open(log_config_filename, "w") as log_config_file:
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1477 log_config_file.write(test_config)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1478
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1479 # file is made relative to tracker dir.
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1480 self.db.config["LOGGING_CONFIG"] = '_test_log_config.json'
8426
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1481
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1482
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1483 # different versions of python have different errors
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1484 # (or no error for this case in 3.7)
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1485 # FIXME remove version check post 3.7 as minimum version
8429
3210729950b1 test: fix code that does not run a test on 3.7
John Rouillard <rouilj@ieee.org>
parents: 8428
diff changeset
1486 if sys.version_info >= (3, 8, 0):
8426
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1487 with self.assertRaises(configuration.LoggingConfigError) as cm:
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1488 config = self.db.config.init_logging()
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1489
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1490 # mangle args[0] to add got 'int'
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1491 # FIXME: remove mangle after 3.12 min version
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1492 self.assertEqual(
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1493 cm.exception.args[0].replace(
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1494 "object\n", "object, got 'int'\n"),
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1495 ('Error loading logging dict from '
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1496 '%s.\n'
8426
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1497 "ValueError: Unable to configure formatter 'http'\n"
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1498 "expected string or bytes-like object, got 'int'\n" %
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1499 log_config_filename)
8426
cd0edc091b97 test: more fixes for variations among python versions.
John Rouillard <rouilj@ieee.org>
parents: 8424
diff changeset
1500 )
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1501
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1502 # broken invalid level MANGO
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1503 test_config = config1.replace(
8433
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1504 ': "INFO", // can',
de1dac9abcb6 feat: change comment in dictConfig json file to // from #
John Rouillard <rouilj@ieee.org>
parents: 8429
diff changeset
1505 ': "MANGO", // can')
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1506 with open(log_config_filename, "w") as log_config_file:
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1507 log_config_file.write(test_config)
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1508
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1509 # file is made relative to tracker dir.
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1510 self.db.config["LOGGING_CONFIG"] = '_test_log_config.json'
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1511 with self.assertRaises(configuration.LoggingConfigError) as cm:
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1512 config = self.db.config.init_logging()
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1513 self.assertEqual(
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1514 cm.exception.args[0],
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1515 ("Error loading logging dict from "
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1516 "%s.\nValueError: "
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1517 "Unable to configure logger 'roundup.hyperdb'\nUnknown level: "
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1518 "'MANGO'\n" % log_config_filename)
8423
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1519
94eed885e958 feat: add support for using dictConfig to configure logging.
John Rouillard <rouilj@ieee.org>
parents: 7966
diff changeset
1520 )
8424
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1521
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1522 # broken invalid output directory
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1523 test_config = config1.replace(
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1524 ' "_test_instance/access.log"',
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1525 ' "not_a_test_instance/access.log"')
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1526 access_filename = os.path.join("not_a_test_instance", "access.log")
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1527
8424
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1528 with open(log_config_filename, "w") as log_config_file:
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1529 log_config_file.write(test_config)
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1530
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1531 # file is made relative to tracker dir.
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1532 self.db.config["LOGGING_CONFIG"] = '_test_log_config.json'
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1533 with self.assertRaises(configuration.LoggingConfigError) as cm:
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1534 config = self.db.config.init_logging()
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1535
4a948ad46579 test: fix testDictLoggerConfigViaJson
John Rouillard <rouilj@ieee.org>
parents: 8423
diff changeset
1536 # error includes full path which is different on different
8428
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1537 # CI and dev platforms. So munge the path using re.sub and
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1538 # replace. Windows needs replace as the full path for windows
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1539 # to the file has '\\\\' not '\\' when taken from __context__.
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1540 # E.G.
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1541 # ("Error loading logging dict from '
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1542 # '_test_instance\\_test_log_config.json.\nValueError: '
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1543 # "Unable to configure handler 'access'\n[Errno 2] No such file "
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1544 # "or directory: "
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1545 # "'C:\\\\tracker\\\\path\\\\not_a_test_instance\\\\access.log'\n")
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1546 # sigh.....
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1547 output = re.sub("directory: \'.*not_a", 'directory: not_a' ,
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1548 cm.exception.args[0].replace(r'\\','\\'))
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1549 target = ("Error loading logging dict from "
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1550 "%s.\n"
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1551 "ValueError: Unable to configure handler 'access'\n"
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1552 "[Errno 2] No such file or directory: "
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1553 "%s'\n" % (log_config_filename, access_filename))
cdf876bcd370 test: test dictLoggerConfig - working logging reset and windows
John Rouillard <rouilj@ieee.org>
parents: 8427
diff changeset
1554 self.assertEqual(output, target)
8427
b34c3b8338f0 test: more fun with logger leakage.
John Rouillard <rouilj@ieee.org>
parents: 8426
diff changeset
1555
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1556 # mess up '}' so json file block isn't properly closed.
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1557 test_config = config1.replace(
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1558 ' }',
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1559 ' ')
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1560
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1561 with open(log_config_filename, "w") as log_config_file:
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1562 log_config_file.write(test_config)
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1563
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1564 # file is made relative to tracker dir.
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1565 self.db.config["LOGGING_CONFIG"] = '_test_log_config.json'
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1566 with self.assertRaises(configuration.LoggingConfigError) as cm:
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1567 config = self.db.config.init_logging()
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1568
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1569 output = cm.exception.args[0].replace(r'\\','\\')
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1570 target = ("Error parsing json logging dict "
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1571 "(%s) near \n\n"
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1572 " Error found at end of file. Maybe missing a "
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1573 "block closing '}'.\n\n"
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1574 "Expecting ',' delimiter: line 86 column 1." %
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1575 (log_config_filename,))
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1576 self.assertEqual(output, target)
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1577
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1578 def testIniFileLoggerConfig(self):
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1579
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1580 # good base test case
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1581 config1 = dedent("""
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1582 [loggers]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1583 keys=root,roundup,roundup.http,roundup.hyperdb,actions,schema,extension,detector
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1584
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1585 [logger_root]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1586 #DEBUG, INFO, WARNING, ERROR, CRITICAL
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1587 #also for root only NOTSET (all)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1588 level=DEBUG
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1589 handlers=basic
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1590
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1591 [logger_roundup]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1592 #DEBUG, INFO, WARNING, ERROR, CRITICAL
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1593 #also for root only NOTSET (all)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1594 level=DEBUG
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1595 handlers=rotate
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1596 qualname=roundup
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1597 propagate=0
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1598
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1599 [logger_roundup.http]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1600 level=INFO
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1601 handlers=rotate_weblog
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1602 qualname=roundup.http
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1603 propagate=0
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1604
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1605 [logger_roundup.hyperdb]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1606 level=WARNING
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1607 handlers=rotate
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1608 qualname=roundup.hyperdb
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1609 propagate=0
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1610
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1611 [logger_actions]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1612 #DEBUG, INFO, WARNING, ERROR, CRITICAL
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1613 #also for root only NOTSET (all)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1614 level=DEBUG
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1615 handlers=rotate
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1616 qualname=actions
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1617 propagate=0
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1618
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1619 [logger_detector]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1620 #DEBUG, INFO, WARNING, ERROR, CRITICAL
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1621 #also for root only NOTSET (all)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1622 level=DEBUG
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1623 handlers=rotate
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1624 qualname=detector
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1625 propagate=0
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1626
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1627 [logger_schema]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1628 level=DEBUG
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1629 handlers=rotate
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1630 qualname=schema
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1631 propagate=0
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1632
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1633 [logger_extension]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1634 level=DEBUG
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1635 handlers=rotate
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1636 qualname=extension
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1637 propagate=0
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1638
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1639 [handlers]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1640 keys=basic,rotate,rotate_weblog
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1641
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1642 [handler_basic]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1643 class=StreamHandler
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1644 args=(sys.stderr,)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1645 formatter=basic
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1646
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1647 [handler_rotate]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1648 class=logging.handlers.RotatingFileHandler
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1649 args=('roundup.log','a', 512000, 2)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1650 formatter=basic
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1651
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1652 [handler_rotate_weblog]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1653 class=logging.handlers.RotatingFileHandler
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1654 args=('httpd.log','a', 512000, 2)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1655 formatter=plain
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1656
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1657 [formatters]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1658 keys=basic,plain
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1659
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1660 [formatter_basic]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1661 format=%(asctime)s %(name)s:%(module)s.%(funcName)s,%(levelname)s: %(message)s
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1662 datefmt=%Y-%m-%d %H:%M:%S
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1663
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1664 [formatter_plain]
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1665 format=%(message)s
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1666 """)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1667
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1668 log_config_filename = os.path.join(self.instance.tracker_home,
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1669 "_test_log_config.ini")
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1670
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1671 # happy path
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1672 with open(log_config_filename, "w") as log_config_file:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1673 log_config_file.write(config1)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1674
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1675 self.db.config.LOGGING_CONFIG = "_test_log_config.ini"
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1676
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1677 # verify we have a clean environment
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1678 self.assertEqual(len(logging.getLogger('roundup.http').handlers), 0)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1679
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1680 # always returns None
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1681 self.db.config.init_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1682
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1683 # verify that logging loaded and handler is set
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1684 # default log config doesn't define handlers for roundup.http
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1685 self.assertEqual(len(logging.getLogger('roundup.http').handlers), 1)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1686 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1687
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1688 # use undefined enumeration
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1689 test_config = config1.replace("=DEBUG\n", "=DEBUF\n")
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1690 with open(log_config_filename, "w") as log_config_file:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1691 log_config_file.write(test_config)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1692
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1693 with self.assertRaises(configuration.LoggingConfigError) as cm:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1694 config = self.db.config.init_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1695
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1696 # verify that logging was reset
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1697 # default log config doesn't define handlers for roundup.http
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1698 self.assertEqual(len(logging.getLogger('roundup.http').handlers), 0)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1699
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1700 self.assertEqual(
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1701 cm.exception.args[0].replace(r'\\','\\'),
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1702 ('Error loading logging config from %s.\n\n'
8455
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1703 " ValueError: Unknown level: 'DEBUF'\n\n"
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1704 'Inappropriate argument value (of correct type).\n' %
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1705 log_config_filename)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1706 )
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1707 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1708
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1709
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1710 # add a syntax error "= foo"
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1711 test_config = config1.replace("=DEBUG\n", "=DEBUG\n=foo\n", 1)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1712 with open(log_config_filename, "w") as log_config_file:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1713 log_config_file.write(test_config)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1714
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1715 with self.assertRaises(configuration.LoggingConfigError) as cm:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1716 config = self.db.config.init_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1717
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1718 # verify that logging was reset
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1719 # default log config doesn't define handlers for roundup.http
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1720 self.assertEqual(len(logging.getLogger('roundup.http').handlers), 0)
8455
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1721
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1722 output = cm.exception.args[0].replace(r'\\','\\')
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1723
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1724 if sys.version_info >= (3, 12, 0):
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1725 expected = (
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1726 "Error loading logging config from %(filename)s.\n\n"
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1727 " RuntimeError: %(filename)s is invalid: Source contains parsing errors: "
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1728 "'%(filename)s'\n\t[line 9]: '=foo\\n'\n\n"
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1729 "Source contains parsing errors: '%(filename)s'\n"
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1730 "\t[line 9]: '=foo\\n' Unspecified run-time error.\n" %
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1731 {"filename": log_config_filename})
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1732
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1733 else: # 3.7 <= x < 3.12.0
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1734
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1735 expected = (
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1736 "Error loading logging config from %(filename)s.\n\n"
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1737 " ParsingError: Source contains parsing errors: "
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1738 "'%(filename)s'\n"
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1739 "\t[line 9]: '=foo\\n'\n\n"
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1740 "Raised when a configuration file does not follow legal "
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1741 "syntax.\n" % {"filename": log_config_filename})
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1742
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1743 self.assertEqual(output, expected)
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1744 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1745
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1746 # handler = basic to handler = basi
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1747 test_config = config1.replace("handlers=basic\n", "handlers=basi\n", 1)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1748 with open(log_config_filename, "w") as log_config_file:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1749 log_config_file.write(test_config)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1750
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1751 with self.assertRaises(configuration.LoggingConfigError) as cm:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1752 config = self.db.config.init_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1753
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1754 # verify that logging was reset
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1755 # default log config doesn't define handlers for roundup.http
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1756 self.assertEqual(len(logging.getLogger('roundup.http').handlers), 0)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1757
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1758 self.assertEqual(
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1759 cm.exception.args[0].replace(r'\\','\\'),
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1760 ("Error loading logging config from %(filename)s.\n\n"
8455
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1761 " KeyError: 'basi'\n\n"
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1762 "Mapping key not found. No section found with this name.\n" %
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1763 {"filename": log_config_filename})
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1764 )
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1765 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1766
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1767 # Change class to missing class
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1768 test_config = config1.replace("class=StreamHandler\n",
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1769 "class=SHAndler\n", 1)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1770 with open(log_config_filename, "w") as log_config_file:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1771 log_config_file.write(test_config)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1772
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1773 with self.assertRaises(configuration.LoggingConfigError) as cm:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1774 config = self.db.config.init_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1775
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1776 # verify that logging was reset
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1777 # default log config doesn't define handlers for roundup.http
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1778 self.assertEqual(len(logging.getLogger('roundup.http').handlers), 0)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1779
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1780 self.assertEqual(
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1781 cm.exception.args[0].replace(r'\\','\\'),
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1782 ("Error loading logging config from %(filename)s.\n\n"
8455
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1783 " ModuleNotFoundError: No module named 'SHAndler'\n\n"
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1784 "name 'SHAndler' is not defined Module not found.\n" %
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1785 {"filename": log_config_filename})
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1786 )
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1787 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1788
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1789 # remove section to cause duplicate option definition
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1790 test_config = config1.replace("[logger_roundup.http]\n",
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1791 "\n", 1)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1792 with open(log_config_filename, "w") as log_config_file:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1793 log_config_file.write(test_config)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1794
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1795 with self.assertRaises(configparser.DuplicateOptionError) as cm:
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1796 config = self.db.config.init_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1797
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1798 # verify that logging was reset
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1799 # default log config doesn't define handlers for roundup.http
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1800 self.assertEqual(len(logging.getLogger('roundup.http').handlers), 0)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1801
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1802 self.assertEqual(
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1803 str(cm.exception).replace(r'\\','\\'),
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1804 ("While reading from '%(filename)s' [line 20]: "
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1805 "option 'level' in section 'logger_roundup' already exists" %
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1806 {"filename": log_config_filename})
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1807 )
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1808 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1809
8434
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1810 def test_missing_logging_config_file(self):
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1811 saved_config = self.db.config['LOGGING_CONFIG']
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1812
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1813 for logging_file in ["logging.json", "logging.ini", "logging.foobar"]:
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1814 self.db.config['LOGGING_CONFIG'] = logging_file
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1815
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1816 with self.assertRaises(configuration.OptionValueError) as cm:
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1817 self.db.config.init_logging()
8434
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1818
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1819 logging_configfile = os.path.join(self.dirname, logging_file)
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1820 self.assertEqual(cm.exception.args[1], logging_configfile)
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1821 self.assertEqual(cm.exception.args[2],
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1822 "Unable to find logging config file.")
8434
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1823
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1824 self.db.config['LOGGING_CONFIG'] = saved_config
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1825
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1826 def test_unknown_logging_config_file_type(self):
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1827 saved_config = self.db.config['LOGGING_CONFIG']
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1828
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1829 self.db.config['LOGGING_CONFIG'] = 'schema.py'
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1830
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1831
8434
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1832 with self.assertRaises(configuration.OptionValueError) as cm:
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1833 self.db.config.init_logging()
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1834
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1835 logging_configfile = os.path.join(self.dirname, "schema.py")
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1836 self.assertEqual(cm.exception.args[1], logging_configfile)
8434
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1837 self.assertEqual(cm.exception.args[2],
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1838 "Unable to load logging config file. "
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1839 "File extension must be '.ini' or '.json'.\n")
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1840
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1841 self.db.config['LOGGING_CONFIG'] = saved_config

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