From 57146b93cff7c2c049cba107223ed2448ac38de3 Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Fri, 5 Sep 2003 18:47:58 +0000 Subject: [PATCH] Added tests for src/ modules. --- src/AdminCommands.py | 4 ++ src/OwnerCommands.py | 4 +- test/test_AdminCommands.py | 97 ++++++++++++++++++++++++++++++++++++++ test/test_MiscCommands.py | 68 ++++++++++++++++++++++++++ test/test_OwnerCommands.py | 46 +++++++++++++++++- 5 files changed, 216 insertions(+), 3 deletions(-) create mode 100644 test/test_AdminCommands.py create mode 100644 test/test_MiscCommands.py diff --git a/src/AdminCommands.py b/src/AdminCommands.py index c9b7aee22..954c4a6da 100755 --- a/src/AdminCommands.py +++ b/src/AdminCommands.py @@ -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): diff --git a/src/OwnerCommands.py b/src/OwnerCommands.py index 8e536a124..3d5a25f8b 100644 --- a/src/OwnerCommands.py +++ b/src/OwnerCommands.py @@ -229,7 +229,7 @@ class OwnerCommands(privmsgs.CapabilityCheckingPrivmsg): ''' def reload(self, irc, msg, args): - """ + """ 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): - """ + """ Unloads the callback by name; use the 'list' command to see a list of the currently loaded callbacks. diff --git a/test/test_AdminCommands.py b/test/test_AdminCommands.py new file mode 100644 index 000000000..2c184ff2f --- /dev/null +++ b/test/test_AdminCommands.py @@ -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: + diff --git a/test/test_MiscCommands.py b/test/test_MiscCommands.py new file mode 100644 index 000000000..278a8f564 --- /dev/null +++ b/test/test_MiscCommands.py @@ -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: + diff --git a/test/test_OwnerCommands.py b/test/test_OwnerCommands.py index ab31e0e36..f25fcd63e 100644 --- a/test/test_OwnerCommands.py +++ b/test/test_OwnerCommands.py @@ -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: