annotate test/test_config.py @ 8580:5cba36e42b8f

chore: refactor replace urlparse with urlsplit and use urllib_ Python docs recommend use of urlsplit() rather than urlparse(). urlsplit() is a little faster and doesn't try to split the path into path and params using the rules from an obsolete RFC. actions.py, demo.py, rest.py, client.py Replace urlparse() with urlsplit() actions.py urlsplit() produces a named tuple with one fewer elements (no .param). So fixup calls to urlunparse() so they have the proper number of elements in the tuple. also merge url filtering for param and path. demo.py, rest.py: Replace imports from urlparse/urllib.parse with roundup.anypy.urllib_ so we use the same interface throughout the code base. test/test_cgi.py: Since actions.py filtering for invali urls not split by path/param, fix tests for improperly quoted url's.
author John Rouillard <rouilj@ieee.org>
date Sun, 19 Apr 2026 22:58:59 -0400
parents 16e8bacb8f90
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
8570
16e8bacb8f90 test: strftime formats; Runtime v Parsing error config.ini windows python
John Rouillard <rouilj@ieee.org>
parents: 8457
diff changeset
1724 if sys.version_info >= (3, 11, 4):
8455
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 expected = (
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1735 "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
1736 " 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
1737 "'%(filename)s'\n"
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1738 "\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
1739 "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
1740 "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
1741
6d6f689d3701 fix: python < 3.12 returns ParsingError not RuntimeError; print exception
John Rouillard <rouilj@ieee.org>
parents: 8452
diff changeset
1742 self.assertEqual(output, expected)
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1743 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1744
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1745 # handler = basic to handler = basi
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1746 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
1747 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
1748 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
1749
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1750 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
1751 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
1752
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1753 # verify that logging was reset
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1754 # 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
1755 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
1756
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1757 self.assertEqual(
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1758 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
1759 ("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
1760 " KeyError: 'basi'\n\n"
8452
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1761 "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
1762 {"filename": log_config_filename})
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1763 )
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1764 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1765
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1766 # Change class to missing class
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1767 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
1768 "class=SHAndler\n", 1)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1769 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
1770 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
1771
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1772 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
1773 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
1774
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1775 # verify that logging was reset
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1776 # 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
1777 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
1778
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1779 self.assertEqual(
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1780 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
1781 ("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
1782 " 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
1783 "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
1784 {"filename": log_config_filename})
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1785 )
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1786 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1787
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1788 # 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
1789 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
1790 "\n", 1)
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1791 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
1792 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
1793
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1794 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
1795 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
1796
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1797 # verify that logging was reset
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1798 # 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
1799 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
1800
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1801 self.assertEqual(
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1802 str(cm.exception).replace(r'\\','\\'),
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1803 ("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
1804 "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
1805 {"filename": log_config_filename})
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1806 )
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1807 self.reset_logging()
e91ff70e4563 bug: improve error reporting for errors for logging fileConfig.
John Rouillard <rouilj@ieee.org>
parents: 8451
diff changeset
1808
8434
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1809 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
1810 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
1811
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1812 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
1813 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
1814
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1815 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
1816 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
1817
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1818 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
1819 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
1820 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
1821 "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
1822
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1823 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
1824
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1825 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
1826 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
1827
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1828 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
1829
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1830
8434
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1831 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
1832 self.db.config.init_logging()
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1833
8451
401c6f0be6c5 bug: fix json logging config file syntax exception/fix test for windows
John Rouillard <rouilj@ieee.org>
parents: 8447
diff changeset
1834 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
1835 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
1836 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
1837 "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
1838 "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
1839
66284037142e refactor: also error on missing file or invalid extension
John Rouillard <rouilj@ieee.org>
parents: 8433
diff changeset
1840 self.db.config['LOGGING_CONFIG'] = saved_config

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