Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Adam Osuchowski
Kea
Commits
b91c7c25
Commit
b91c7c25
authored
Apr 08, 2011
by
Michal 'vorner' Vaner
Browse files
[trac810] Test for plugin-loader
parent
11133485
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/bin/cfgmgr/b10-cfgmgr.py.in
View file @
b91c7c25
...
...
@@ -65,6 +65,9 @@ def signal_handler(signal, frame):
if cm:
cm.running = False
def load_plugins(path, cm):
pass
def main():
options = parse_options()
global cm
...
...
src/bin/cfgmgr/tests/Makefile.am
View file @
b91c7c25
...
...
@@ -12,6 +12,7 @@ if ENABLE_PYTHON_COVERAGE
endif
for
pytest
in
$(PYTESTS)
;
do
\
echo Running test
:
$$pytest ;
\
env TESTDATA_PATH=$(abs_srcdir)/testdata
\
env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python:$(abs_top_builddir)/src/bin/cfgmgr
\
$(PYCOVERAGE_RUN) $(abs_builddir)/$$pytest || exit ;
\
done
src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in
View file @
b91c7c25
...
...
@@ -30,6 +30,7 @@ class MyConfigManager:
self.run_called = False
self.write_config_called = False
self.running = True
self.virtual_modules = []
def read_config(self):
self.read_config_called = True
...
...
@@ -43,6 +44,24 @@ class MyConfigManager:
def write_config(self):
self.write_config_called = True
def set_virtual_module(self, spec, function):
self.virtual_modules.append((spec, function))
class TestPlugins(unittest.TestCase):
def test_load_plugins(self):
"""Test we can successfully find and load the mock plugin."""
# Let it load the plugin
b = __import__("b10-cfgmgr")
# The parameters aren't important for this test
cm = MyConfigManager(None, None)
b.load_plugins(os.environ['TESTDATA_PATH'] + os.sep + 'plugins', cm)
# Check exactly one plugin was loaded and the right data were fed into
# the cm
self.assertEqual(len(cm.virtual_modules), 1)
(spec, check) = cm.virtual_modules[0]
self.assertEqual(spec.get_module_name(), "mock_config_plugin")
self.assertEqual(check(None), "Mock config plugin")
class TestConfigManagerStartup(unittest.TestCase):
def test_cfgmgr(self):
# some creative module use;
...
...
src/bin/cfgmgr/tests/testdata/plugins/testplugin.py
0 → 100644
View file @
b91c7c25
# Copyright (C) 2011 Internet Systems Consortium.
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# A test plugin. It does mostly nothing, just provides a function we can
# recognize from the test. However, it looks like a real plugin, with the
# (almost) correct interface, even when it's not used.
class
MockSpec
:
"""Mock spec, contains no data, it can only provide it's name.
It'll not really be used for anything."""
def
get_module_name
(
self
):
return
"mock_config_plugin"
def
mock_check_config
(
config
)
"""Mock function to check config. Does nothing, only returns
an "error" string to indicate it's this one."""
return
"Mock config plugin"
def
load
():
"""When a plugin is loaded, this is called to provide the spec and
checking function."""
return
(
MockSpec
(),
mock_check_config
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment