Add attribute IrcMsg.time.

This commit is contained in:
Valentin Lorentz 2015-08-22 18:36:47 +02:00
parent 33e8966e4b
commit 11c10bb3f1
2 changed files with 17 additions and 1 deletions

View File

@ -114,7 +114,7 @@ class IrcMsg(object):
# On second thought, let's use methods for tagging. # On second thought, let's use methods for tagging.
__slots__ = ('args', 'command', 'host', 'nick', 'prefix', 'user', __slots__ = ('args', 'command', 'host', 'nick', 'prefix', 'user',
'_hash', '_str', '_repr', '_len', 'tags', 'reply_env', '_hash', '_str', '_repr', '_len', 'tags', 'reply_env',
'server_tags') 'server_tags', 'time')
def __init__(self, s='', command='', args=(), prefix='', msg=None, def __init__(self, s='', command='', args=(), prefix='', msg=None,
reply_env=None): reply_env=None):
assert not (msg and s), 'IrcMsg.__init__ cannot accept both s and msg' assert not (msg and s), 'IrcMsg.__init__ cannot accept both s and msg'
@ -148,6 +148,7 @@ class IrcMsg(object):
else: else:
self.args = s.split() self.args = s.split()
self.command = self.args.pop(0) self.command = self.args.pop(0)
self.time = time.time()
except (IndexError, ValueError): except (IndexError, ValueError):
raise MalformedIrcMsg(repr(originalString)) raise MalformedIrcMsg(repr(originalString))
else: else:
@ -171,11 +172,14 @@ class IrcMsg(object):
else: else:
self.reply_env = None self.reply_env = None
self.tags = msg.tags.copy() self.tags = msg.tags.copy()
self.server_tags = msg.server_tags
self.time = msg.time
else: else:
self.prefix = prefix self.prefix = prefix
self.command = command self.command = command
assert all(ircutils.isValidArgument, args), args assert all(ircutils.isValidArgument, args), args
self.args = args self.args = args
self.time = None
self.args = tuple(self.args) self.args = tuple(self.args)
if isUserHostmask(self.prefix): if isUserHostmask(self.prefix):
(self.nick,self.user,self.host)=ircutils.splitHostmask(self.prefix) (self.nick,self.user,self.host)=ircutils.splitHostmask(self.prefix)

View File

@ -29,6 +29,7 @@
from supybot.test import * from supybot.test import *
import time
import copy import copy
import pickle import pickle
@ -94,6 +95,11 @@ class IrcMsgTestCase(SupyTestCase):
ircmsgs.IrcMsg, ircmsgs.IrcMsg,
args=('foo', 'bar'), args=('foo', 'bar'),
prefix='foo!bar@baz') prefix='foo!bar@baz')
m = ircmsgs.IrcMsg(prefix='foo!bar@baz', args=('foo', 'bar'),
command='CMD')
self.assertIs(m.time, None)
m.time = 24
self.assertEqual(ircmsgs.IrcMsg(msg=m).time, 24)
def testPickleCopy(self): def testPickleCopy(self):
for msg in msgs: for msg in msgs:
@ -141,6 +147,12 @@ class IrcMsgTestCase(SupyTestCase):
self.assertEqual(m.args, ('me', 'Hello')) self.assertEqual(m.args, ('me', 'Hello'))
self.assertEqual(str(m), s + '\n') self.assertEqual(str(m), s + '\n')
def testTime(self):
before = time.time()
msg = ircmsgs.IrcMsg('PRIVMSG #foo :foo')
after = time.time()
self.assertTrue(before <= msg.time <= after)
class FunctionsTestCase(SupyTestCase): class FunctionsTestCase(SupyTestCase):
def testIsAction(self): def testIsAction(self):
L = [':jemfinch!~jfincher@ts26-2.homenet.ohio-state.edu PRIVMSG' L = [':jemfinch!~jfincher@ts26-2.homenet.ohio-state.edu PRIVMSG'