| Server IP : 61.19.30.66 / Your IP : 216.73.216.15 Web Server : Apache/2.2.22 (Ubuntu) System : Linux klw 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64 User : www-data ( 33) PHP Version : 5.3.10-1ubuntu3.48 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /usr/share/pyshared/computerjanitor/ |
Upload File : |
# plugin_tests.py - unit tests for plugin.py
# Copyright (C) 2008 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import tempfile
import unittest
import computerjanitor
class PluginTests(unittest.TestCase):
def testGetCruftRaisesException(self):
p = computerjanitor.Plugin()
self.assertRaises(computerjanitor.UnimplementedMethod, p.get_cruft)
def testPostCleanupReturnsNone(self):
p = computerjanitor.Plugin()
self.assertEqual(p.post_cleanup(), None)
def testDoesNotHaveAppAttributeByDefault(self):
p = computerjanitor.Plugin()
self.assertFalse(hasattr(p, "app"))
def testSetApplicationSetsApp(self):
p = computerjanitor.Plugin()
p.set_application("foo")
self.assertEqual(p.app, "foo")
def testSetsRequiredConditionToNoneByDefault(self):
p = computerjanitor.Plugin()
self.assertEqual(p.condition, [])
class PluginManagerTests(unittest.TestCase):
def testFindsNoPluginsInEmptyDirectory(self):
tempdir = tempfile.mkdtemp()
pm = computerjanitor.PluginManager(None, [tempdir])
plugins = pm.get_plugins()
os.rmdir(tempdir)
self.assertEqual(plugins, [])
def testFindsOnePluginFileInTestPluginDirectory(self):
pm = computerjanitor.PluginManager(None, ["testplugins"])
self.assertEqual(pm.get_plugin_files(),
["testplugins/hello_plugin.py"])
def testFindsOnePluginInTestPluginDirectory(self):
pm = computerjanitor.PluginManager(None, ["testplugins"])
self.assertEqual(len(pm.get_plugins()), 1)
def testFindPluginsSetsApplicationInPluginsFound(self):
pm = computerjanitor.PluginManager("foo", ["testplugins"])
self.assertEqual(pm.get_plugins()[0].app, "foo")
def callback(self, filename, index, count):
self.callback_called = True
def testCallsCallbackWhenFindingPlugins(self):
pm = computerjanitor.PluginManager(None, ["testplugins"])
self.callback_called = False
pm.get_plugins(callback=self.callback)
self.assert_(self.callback_called)
class ConditionTests(unittest.TestCase):
def setUp(self):
self.pm = computerjanitor.PluginManager(None, ["testplugins"])
class White(computerjanitor.Plugin):
pass
class Red(computerjanitor.Plugin):
def __init__(self):
self.condition = ["red"]
class RedBlack(computerjanitor.Plugin):
def __init__(self):
self.condition = ["red","black"]
self.white = White()
self.red = Red()
self.redblack = RedBlack()
self.pm._plugins = [self.white, self.red, self.redblack]
def testReturnsOnlyConditionlessPluginByDefault(self):
self.assertEqual(self.pm.get_plugins(), [self.white])
def testReturnsOnlyRedPluginWhenConditionIsRed(self):
self.assertEqual(self.pm.get_plugins(condition="red"), [self.red, self.redblack])
def testReturnsOnlyRedPluginWhenConditionIsRedAndBlack(self):
self.assertEqual(self.pm.get_plugins(condition=["red","black"]), [self.redblack])
def testReturnsEallPluginsWhenRequested(self):
self.assertEqual(set(self.pm.get_plugins(condition="*")),
set([self.white, self.red, self.redblack]))