diff --git a/src/plugins.py b/src/plugins.py index 729ebbcf2..0bd70414d 100644 --- a/src/plugins.py +++ b/src/plugins.py @@ -316,6 +316,13 @@ _whoRe = re.compile ("\$who", re.I) _botnickRe = re.compile("\$botnick", re.I) _todayRe = re.compile("\$today", re.I) _nowRe = re.compile("\$now", re.I) +def randInt(m): + return str(random.randint(-1000, 1000)) + +def randDate(m): + t = pow(2,30)*random.random()+time.time()/4.0 + return time.ctime(t) + def standardSubstitute(irc, msg, text): """Do the standard set of substitutions on text, and return it""" if ircutils.isChannel(msg.args[0]): @@ -327,9 +334,8 @@ def standardSubstitute(irc, msg, text): text = _randomnickRe.sub(user, text) else: text = _randomnickRe.sub('anyone', text) - t = pow(2,30)*random.random()+time.time()/4.0 - text = _randomdateRe.sub(time.ctime(t), text) - text = _randomintRe.sub(str(random.randint(-1000, 1000)), text) + text = _randomdateRe.sub(randDate, text) + text = _randomintRe.sub(randInt, text) text = _whoRe.sub(msg.nick, text) text = _botnickRe.sub(irc.nick, text) text = _todayRe.sub(time.ctime(), text) diff --git a/test/test_plugins.py b/test/test_plugins.py index cf3339ba0..8ce0a33db 100644 --- a/test/test_plugins.py +++ b/test/test_plugins.py @@ -100,21 +100,24 @@ class FunctionsTestCase(unittest.TestCase): nick = 'foobar' def testStandardSubstitute(self): msg = ircmsgs.privmsg('#foo', 'filler', prefix='biff!quux@xyzzy') - s = plugins.standardSubstitute(self.irc, msg, '$randomint') - try: - int(s) - except ValueError: - self.fail('$randomnick wasn\'t an int.') s = plugins.standardSubstitute(self.irc, msg, '$randomInt') try: int(s) except ValueError: - self.fail('$randomnick wasn\'t an int.') + self.fail('$randomint wasn\'t an int.') self.assertEqual(plugins.standardSubstitute(self.irc, msg, '$botnick'), self.irc.nick) self.assertEqual(plugins.standardSubstitute(self.irc, msg, '$who'), msg.nick) self.assert_(plugins.standardSubstitute(self.irc, msg, '$randomdate')) + q = plugins.standardSubstitute(self.irc, msg, '$randomdate\t$randomdate') + dl = q.split('\t') + if dl[0] == dl[1]: + self.fail ('Two $randomdates in the same string were the same') + q = plugins.standardSubstitute(self.irc, msg, '$randomint\t$randomint') + dl = q.split('\t') + if dl[0] == dl[1]: + self.fail ('Two $randomints in the same string were the same') self.assert_(plugins.standardSubstitute(self.irc, msg, '$today')) self.assert_(plugins.standardSubstitute(self.irc, msg, '$now')) n = plugins.standardSubstitute(self.irc, msg, '$randomnick')