Added tests for src/ modules.

This commit is contained in:
Jeremy Fincher 2003-09-05 18:47:58 +00:00
parent 7e80782452
commit 57146b93cf
5 changed files with 216 additions and 3 deletions

View File

@ -81,6 +81,10 @@ class AdminCommands(privmsgs.CapabilityCheckingPrivmsg):
"""
if not args:
args.append(msg.args[0])
for arg in args:
if arg not in irc.state.channels:
irc.error('I\'m not currently in %s' % arg)
return
irc.queueMsg(ircmsgs.parts(args, msg.nick))
def disable(self, irc, msg, args):

View File

@ -229,7 +229,7 @@ class OwnerCommands(privmsgs.CapabilityCheckingPrivmsg):
'''
def reload(self, irc, msg, args):
"""<callback name>
"""<plugin>
Unloads and subsequently reloads the callback by name; use the 'list'
command to see a list of the currently loaded callbacks.
@ -259,7 +259,7 @@ class OwnerCommands(privmsgs.CapabilityCheckingPrivmsg):
irc.error(msg, 'There was no callback %s.' % name)
def unload(self, irc, msg, args):
"""<callback name>
"""<plugin>
Unloads the callback by name; use the 'list' command to see a list
of the currently loaded callbacks.

View File

@ -0,0 +1,97 @@
#!/usr/bin/env python
###
# Copyright (c) 2002, Jeremiah Fincher
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the author of this software nor the name of
# contributors to this software may be used to endorse or promote products
# derived from this software without specific prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
from test import *
class AdminCommandsTestCase(PluginTestCase):
plugins = ('AdminCommands', 'MiscCommands')
def testSetprefixchar(self):
self.assertNotError('setprefixchar $')
self.assertResponse('getprefixchar', "'$'")
def testAddcapability(self):
self.assertError('addcapability sdlkfj foo')
def testRemoveCapability(self):
self.assertError('removecapability alsdfkjasd foo')
def testDisable(self):
self.assertError('disable enable')
self.assertError('disable identify')
def testEnable(self):
self.assertError('enable enable')
def testJoin(self):
m = self.getMsg('join #foo')
self.assertEqual(m.command, 'JOIN')
self.assertEqual(m.args[0], '#foo')
m = self.getMsg('join #foo #bar')
self.assertEqual(m.command, 'JOIN')
self.assertEqual(m.args[0], '#foo,#bar')
m = self.getMsg('join #foo,key')
self.assertEqual(m.command, 'JOIN')
self.assertEqual(m.args[0], '#foo')
self.assertEqual(m.args[1], 'key')
m = self.getMsg('join #bar #foo,key')
self.assertEqual(m.command, 'JOIN')
self.assertEqual(m.args[0], '#foo,#bar')
self.assertEqual(m.args[1], 'key')
m = self.getMsg('join #bar,key1 #foo,key2')
self.assertEqual(m.command, 'JOIN')
self.assertEqual(m.args[0], '#foo,#bar')
self.assertEqual(m.args[1], 'key2,key1')
def testPart(self):
self.assertError('part #foo')
_ = self.getMsg('join #foo') # get the JOIN.
_ = self.getMsg(' ') # get the WHO.
self.assertError('part #foo #bar')
m = self.getMsg('part #foo')
self.assertEqual(m.command, 'PART')
self.assertEqual(m.args[0], '#foo')
_ = self.getMsg('join #foo #bar') # get the JOIN.
_ = self.getMsg(' ') # get the WHO.
# vvv(won't send this because there was no server response.)
# _ = self.getMsg(' ') # get the WH0.
m = self.getMsg('part #foo #bar')
self.assertEqual(m.command, 'PART')
self.assertEqual(m.args[0], '#foo,#bar')
def testNick(self):
m = self.getMsg('nick foobar')
self.assertEqual(m.command, 'NICK')
self.assertEqual(m.args[0], 'foobar')
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:

68
test/test_MiscCommands.py Normal file
View File

@ -0,0 +1,68 @@
#!/usr/bin/env python
###
# Copyright (c) 2002, Jeremiah Fincher
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the author of this software nor the name of
# contributors to this software may be used to endorse or promote products
# derived from this software without specific prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
from test import *
class MiscCommandsTestCase(PluginTestCase):
plugins = ('MiscCommands',)
def testHelp(self):
self.assertNotError('help list')
self.assertNotError('help help')
def testMorehelp(self):
self.assertNotError('morehelp list')
self.assertNotError('morehelp morehelp')
def testList(self):
self.assertNotError('list MiscCommands')
self.assertNotError('list misccommands')
def testBug(self):
self.assertNotError('bug')
def testVersion(self):
self.assertNotError('version')
def testSource(self):
self.assertNotError('source')
def testLogfilesize(self):
self.assertNotError('logfilesize')
def testGetprefixchar(self):
self.assertNotError('getprefixchar')
def testModuleof(self):
self.assertResponse('moduleof moduleof', 'MiscCommands')
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:

View File

@ -35,13 +35,57 @@ import conf
class OwnerCommandsTestCase(PluginTestCase):
plugins = ('OwnerCommands',)
def testEval(self):
conf.allowEval = True
s = "[irc.__class__ for irc in " \
"irc.getCallback('Relay').ircstates.keys()]"
self.assertNotRegexp('eval ' + s, '^SyntaxError')
def testExec(self):
self.assertNotError('exec conf.foo = True')
self.failUnless(conf.foo)
del conf.foo
def testSettrace(self):
self.assertNotError('settrace')
self.assertNotError('unsettrace')
def testIrcquote(self):
self.assertResponse('ircquote PRIVMSG %s :foo' % self.irc.nick, 'foo')
def testFlush(self):
self.assertNotError('flush')
def testUpkeep(self):
self.assertNotError('upkeep')
def testSetUnset(self):
self.assertNotError('set foo bar')
self.failUnless(world.tempvars['foo'] == 'bar')
self.assertNotError('unset foo')
self.failIf('foo' in world.tempvars)
self.assertError('unset foo')
def testLoad(self):
self.assertError('load OwnerCommands')
self.assertNotError('load MiscCommands')
self.assertNotError('list OwnerCommands')
def testReload(self):
self.assertError('reload MiscCommands')
self.assertNotError('load MiscCommands')
self.assertNotError('reload MiscCommands')
def testUnload(self):
self.assertError('unload MiscCommands')
self.assertNotError('load MiscCommands')
self.assertNotError('unload MiscCommands')
self.assertError('unload MiscCommands')
def testSay(self):
self.assertResponse('say %s foo' % self.irc.nick, 'foo')
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: