Unit tests for plugins defining their own config_spec.ini!

This commit sponsored by David Ahmed.  Thank you!
This commit is contained in:
Christopher Allan Webber 2013-05-08 10:54:43 -05:00
parent 7fadc33b80
commit d3604e2920
4 changed files with 76 additions and 0 deletions

View 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]]

View File

@ -18,9 +18,12 @@ import sys
from configobj import ConfigObj from configobj import ConfigObj
import pytest import pytest
import pkg_resources
from validate import VdtTypeError
from mediagoblin import mg_globals from mediagoblin import mg_globals
from mediagoblin.init.plugins import setup_plugins from mediagoblin.init.plugins import setup_plugins
from mediagoblin.init.config import read_mediagoblin_config
from mediagoblin.tools import pluginapi from mediagoblin.tools import pluginapi
@ -294,3 +297,29 @@ def test_hook_transform():
assert pluginapi.hook_transform( assert pluginapi.hook_transform(
"expand_tuple", (-1, 0)) == (-1, 0, 1, 2, 3) "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

View 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,
}

View 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")