Unit tests for plugins defining their own config_spec.ini!
This commit sponsored by David Ahmed. Thank you!
This commit is contained in:
parent
7fadc33b80
commit
d3604e2920
21
mediagoblin/tests/appconfig_plugin_specs.ini
Normal file
21
mediagoblin/tests/appconfig_plugin_specs.ini
Normal file
@ -0,0 +1,21 @@
|
||||
[mediagoblin]
|
||||
direct_remote_path = /mgoblin_static/
|
||||
email_sender_address = "notice@mediagoblin.example.org"
|
||||
|
||||
## Uncomment and change to your DB's appropiate setting.
|
||||
## Default is a local sqlite db "mediagoblin.db".
|
||||
# sql_engine = postgresql:///gmg
|
||||
|
||||
# set to false to enable sending notices
|
||||
email_debug_mode = true
|
||||
|
||||
# Set to false to disable registrations
|
||||
allow_registration = true
|
||||
|
||||
[plugins]
|
||||
[[mediagoblin.tests.testplugins.pluginspec]]
|
||||
some_string = "not blork"
|
||||
some_int = "not an int"
|
||||
|
||||
# this one shouldn't have its own config
|
||||
[[mediagoblin.tests.testplugins.callables1]]
|
@ -18,9 +18,12 @@ import sys
|
||||
|
||||
from configobj import ConfigObj
|
||||
import pytest
|
||||
import pkg_resources
|
||||
from validate import VdtTypeError
|
||||
|
||||
from mediagoblin import mg_globals
|
||||
from mediagoblin.init.plugins import setup_plugins
|
||||
from mediagoblin.init.config import read_mediagoblin_config
|
||||
from mediagoblin.tools import pluginapi
|
||||
|
||||
|
||||
@ -294,3 +297,29 @@ def test_hook_transform():
|
||||
|
||||
assert pluginapi.hook_transform(
|
||||
"expand_tuple", (-1, 0)) == (-1, 0, 1, 2, 3)
|
||||
|
||||
|
||||
def test_plugin_config():
|
||||
"""
|
||||
Make sure plugins can set up their own config
|
||||
"""
|
||||
config, validation_result = read_mediagoblin_config(
|
||||
pkg_resources.resource_filename(
|
||||
'mediagoblin.tests', 'appconfig_plugin_specs.ini'))
|
||||
|
||||
pluginspec_section = config['plugins'][
|
||||
'mediagoblin.tests.testplugins.pluginspec']
|
||||
assert pluginspec_section['some_string'] == 'not blork'
|
||||
assert pluginspec_section['dont_change_me'] == 'still the default'
|
||||
|
||||
# Make sure validation works... this should be an error
|
||||
assert isinstance(
|
||||
validation_result[
|
||||
'plugins'][
|
||||
'mediagoblin.tests.testplugins.pluginspec'][
|
||||
'some_int'],
|
||||
VdtTypeError)
|
||||
|
||||
# the callables thing shouldn't really have anything though.
|
||||
assert len(config['plugins'][
|
||||
'mediagoblin.tests.testplugins.callables1']) == 0
|
||||
|
22
mediagoblin/tests/testplugins/pluginspec/__init__.py
Normal file
22
mediagoblin/tests/testplugins/pluginspec/__init__.py
Normal file
@ -0,0 +1,22 @@
|
||||
# GNU MediaGoblin -- federated, autonomous media hosting
|
||||
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
def setup_plugin():
|
||||
pass
|
||||
|
||||
hooks = {
|
||||
'setup': setup_plugin,
|
||||
}
|
4
mediagoblin/tests/testplugins/pluginspec/config_spec.ini
Normal file
4
mediagoblin/tests/testplugins/pluginspec/config_spec.ini
Normal file
@ -0,0 +1,4 @@
|
||||
[plugin_spec]
|
||||
some_string = string(default="blork")
|
||||
some_int = integer(default=50)
|
||||
dont_change_me = string(default="still the default")
|
Loading…
x
Reference in New Issue
Block a user