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