diff options
author | Marc Abramowitz <marc@marc-abramowitz.com> | 2016-03-07 18:52:36 -0800 |
---|---|---|
committer | Marc Abramowitz <marc@marc-abramowitz.com> | 2016-03-07 18:52:36 -0800 |
commit | cc83e06efff71b81ca5a3ac6df65775971181295 (patch) | |
tree | d52fa3f1a93730f263c2c5ac8266de8e5fb12abf /tests/test_config.py | |
download | paste-git-tox_coverage.tar.gz |
tox.ini: Measure test coveragetox_coverage
Diffstat (limited to 'tests/test_config.py')
-rw-r--r-- | tests/test_config.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/test_config.py b/tests/test_config.py new file mode 100644 index 0000000..8119157 --- /dev/null +++ b/tests/test_config.py @@ -0,0 +1,85 @@ +# (c) 2007 Philip Jenvey; written for Paste (http://pythonpaste.org) +# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php +from nose.tools import assert_raises +from paste.config import CONFIG, ConfigMiddleware +from paste.fixture import TestApp +import six + +test_key = 'test key' + +def reset_config(): + while True: + try: + CONFIG._pop_object() + except IndexError: + break + +def app_with_config(environ, start_response): + start_response('200 OK', [('Content-type','text/plain')]) + lines = ['Variable is: %s\n' % CONFIG[test_key], + 'Variable is (in environ): %s' % environ['paste.config'][test_key]] + if six.PY3: + lines = [line.encode('utf8') for line in lines] + return lines + +class NestingAppWithConfig(object): + def __init__(self, app): + self.app = app + + def __call__(self, environ, start_response): + response = self.app(environ, start_response) + assert isinstance(response, list) + supplement = ['Nesting variable is: %s' % CONFIG[test_key], + 'Nesting variable is (in environ): %s' % \ + environ['paste.config'][test_key]] + if six.PY3: + supplement = [line.encode('utf8') for line in supplement] + response.extend(supplement) + return response + +def test_request_config(): + try: + config = {test_key: 'test value'} + app = ConfigMiddleware(app_with_config, config) + res = TestApp(app).get('/') + assert 'Variable is: test value' in res + assert 'Variable is (in environ): test value' in res + finally: + reset_config() + +def test_request_config_multi(): + try: + config = {test_key: 'test value'} + app = ConfigMiddleware(app_with_config, config) + config = {test_key: 'nesting value'} + app = ConfigMiddleware(NestingAppWithConfig(app), config) + res = TestApp(app).get('/') + assert 'Variable is: test value' in res + assert 'Variable is (in environ): test value' in res + assert 'Nesting variable is: nesting value' in res + print(res) + assert 'Nesting variable is (in environ): nesting value' in res + finally: + reset_config() + +def test_process_config(request_app=test_request_config): + try: + process_config = {test_key: 'bar', 'process_var': 'foo'} + CONFIG.push_process_config(process_config) + + assert CONFIG[test_key] == 'bar' + assert CONFIG['process_var'] == 'foo' + + request_app() + + assert CONFIG[test_key] == 'bar' + assert CONFIG['process_var'] == 'foo' + CONFIG.pop_process_config() + + assert_raises(AttributeError, lambda: 'process_var' not in CONFIG) + assert_raises(IndexError, CONFIG.pop_process_config) + finally: + reset_config() + +def test_process_config_multi(): + test_process_config(test_request_config_multi) |