diff options
| author | Mario Corchero <mcorcherojim@bloomberg.net> | 2022-01-24 12:39:50 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-24 12:39:50 (GMT) |
| commit | d7c68639795a576ff58b6479c8bb34c113df3618 (patch) | |
| tree | cb14dbe941f837f0c36f785c59d9d22b9d1fccca /Lib/test/test_logging.py | |
| parent | 58f3d980989c7346ad792d464c1d749dcec6af63 (diff) | |
| download | cpython-d7c68639795a576ff58b6479c8bb34c113df3618.zip cpython-d7c68639795a576ff58b6479c8bb34c113df3618.tar.gz cpython-d7c68639795a576ff58b6479c8bb34c113df3618.tar.bz2 | |
bpo-41906: Accept built filters in dictConfig (GH-30756)
When configuring the logging stack, accept already built filters (or
just callables) in the filters array of loggers and handlers.
This facilitates passing quick callables as filters.
Automerge-Triggered-By: GH:vsajip
Diffstat (limited to 'Lib/test/test_logging.py')
| -rw-r--r-- | Lib/test/test_logging.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 7c38676..4f33151 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -3447,6 +3447,44 @@ class ConfigDictTest(BaseTest): logging.info('some log') self.assertEqual(stderr.getvalue(), 'some log my_type\n') + def test_config_callable_filter_works(self): + def filter_(_): + return 1 + self.apply_config({ + "version": 1, "root": {"level": "DEBUG", "filters": [filter_]} + }) + assert logging.getLogger().filters[0] is filter_ + logging.getLogger().filters = [] + + def test_config_filter_works(self): + filter_ = logging.Filter("spam.eggs") + self.apply_config({ + "version": 1, "root": {"level": "DEBUG", "filters": [filter_]} + }) + assert logging.getLogger().filters[0] is filter_ + logging.getLogger().filters = [] + + def test_config_filter_method_works(self): + class FakeFilter: + def filter(self, _): + return 1 + filter_ = FakeFilter() + self.apply_config({ + "version": 1, "root": {"level": "DEBUG", "filters": [filter_]} + }) + assert logging.getLogger().filters[0] is filter_ + logging.getLogger().filters = [] + + def test_invalid_type_raises(self): + class NotAFilter: pass + for filter_ in [None, 1, NotAFilter()]: + self.assertRaises( + ValueError, + self.apply_config, + {"version": 1, "root": {"level": "DEBUG", "filters": [filter_]}} + ) + + class ManagerTest(BaseTest): def test_manager_loggerclass(self): logged = [] |
