Hello community,
here is the log from the commit of package python-limnoria for openSUSE:Factory
checked in at 2020-09-06 00:02:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-limnoria (Old)
and /work/SRC/openSUSE:Factory/.python-limnoria.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-limnoria"
Sun Sep 6 00:02:46 2020 rev:17 rq:832064 version:2020.09.03
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-limnoria/python-limnoria.changes
2020-08-31 16:51:26.608389132 +0200
+++
/work/SRC/openSUSE:Factory/.python-limnoria.new.3399/python-limnoria.changes
2020-09-06 00:03:00.871272231 +0200
@@ -1,0 +2,11 @@
+Fri Sep 4 10:49:33 UTC 2020 - Atri Bhattacharya <[email protected]>
+
+- Update to version 2020-09-03:
+ * ChannelLogger:
+ - Add tests for getLog.
+ - Write tests for privmsg and notice.
+ - Write tests for relayed privmsg.
+ - Add tests for non-relayed messages when rewriteRelayed is
+ True.
+
+-------------------------------------------------------------------
Old:
----
limnoria-2020.08.30.tar.gz
New:
----
limnoria-2020.09.03.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-limnoria.spec ++++++
--- /var/tmp/diff_new_pack.DitT45/_old 2020-09-06 00:03:01.459272526 +0200
+++ /var/tmp/diff_new_pack.DitT45/_new 2020-09-06 00:03:01.463272528 +0200
@@ -18,9 +18,9 @@
%define skip_python2 1
%define appname limnoria
-%define srcver 2020-08-30
+%define srcver 2020-09-03
Name: python-limnoria
-Version: 2020.08.30
+Version: 2020.09.03
Release: 0
Summary: A modified version of Supybot (an IRC bot and framework)
License: BSD-3-Clause
++++++ limnoria-2020.08.30.tar.gz -> limnoria-2020.09.03.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Limnoria-master-2020-08-30/plugins/ChannelLogger/plugin.py
new/Limnoria-master-2020-09-03/plugins/ChannelLogger/plugin.py
--- old/Limnoria-master-2020-08-30/plugins/ChannelLogger/plugin.py
2020-08-29 22:53:25.000000000 +0200
+++ new/Limnoria-master-2020-09-03/plugins/ChannelLogger/plugin.py
2020-08-30 14:52:45.000000000 +0200
@@ -302,8 +302,8 @@
if msg.command in ('PRIVMSG', 'NOTICE'):
rewriteRelayed = self.registryValue(
'rewriteRelayed', msg.channel, irc.network)
- if rewriteRelayed and 'echo-message' in
self.state.capabilities_ack:
- assert 'labeled-response' in self.state.capabilities_ack, \
+ if rewriteRelayed and 'echo-message' in
irc.state.capabilities_ack:
+ assert 'labeled-response' in irc.state.capabilities_ack, \
'echo-message was negotiated without labeled-response.'
# If we negotiated the echo-message cap, we have to remember
# this message was relayed when the server sends it back to us.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Limnoria-master-2020-08-30/plugins/ChannelLogger/test.py
new/Limnoria-master-2020-09-03/plugins/ChannelLogger/test.py
--- old/Limnoria-master-2020-08-30/plugins/ChannelLogger/test.py
2020-08-29 22:53:25.000000000 +0200
+++ new/Limnoria-master-2020-09-03/plugins/ChannelLogger/test.py
2020-08-30 14:52:45.000000000 +0200
@@ -27,18 +27,157 @@
# POSSIBILITY OF SUCH DAMAGE.
###
+import io
+from unittest.mock import patch, Mock
+
+from supybot import conf
from supybot.test import *
-class ChannelLoggerTestCase(PluginTestCase):
+from . import plugin
+
+timestamp_re = '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2} '
+
+
+patch_open = patch.object(plugin, 'open', create=True)
+
+class ChannelLoggerTestCase(ChannelPluginTestCase):
plugins = ('ChannelLogger',)
+ config = {
+ 'supybot.plugins.ChannelLogger.flushImmediately': True,
+ 'supybot.plugins.ChannelLogger.enable.:test.#foo': True,
+ }
- def testLogDir(self):
+ def testLogName(self):
self.assertEqual(
self.irc.getCallback('ChannelLogger').getLogName('test', '#foo'),
- '#foo.log')
+ '#foo.log'
+ )
self.assertEqual(
self.irc.getCallback('ChannelLogger').getLogName('test',
'#f/../oo'),
- '#f..oo.log')
+ '#f..oo.log'
+ )
+
+ def testLogDir(self):
+ self.assertEqual(
+ self.irc.getCallback('ChannelLogger').getLogDir(self.irc, '#foo'),
+ conf.supybot.directories.log.dirize('ChannelLogger/test/#foo')
+ )
+ self.assertEqual(
+ self.irc.getCallback('ChannelLogger').getLogDir(self.irc,
'#f/../oo'),
+ conf.supybot.directories.log.dirize('ChannelLogger/test/#f..oo')
+ )
+
+ @patch_open
+ def testLog(self, mock_open):
+ mock_open.return_value = Mock()
+ self.assertIs(
+ self.irc.getCallback('ChannelLogger').getLog(self.irc, '#foo'),
+ mock_open.return_value
+ )
+ mock_open.assert_called_once_with(
+
conf.supybot.directories.log.dirize('ChannelLogger/test/#foo/#foo.log'),
+ encoding='utf-8',
+ mode='a'
+ )
+
+ # the log file should be cached
+ mock_open.reset_mock()
+ self.assertIs(
+ self.irc.getCallback('ChannelLogger').getLog(self.irc, '#foo'),
+ mock_open.return_value
+ )
+ mock_open.assert_not_called()
+
+ @patch_open
+ def testLogPrivmsg(self, mock_open):
+ log_file = io.StringIO()
+ mock_open.return_value = log_file
+
+ self.irc.feedMsg(
+ ircmsgs.privmsg('#foo', 'test message', prefix='foo!bar@baz')
+ )
+
+ self.assertRegex(
+ log_file.getvalue(),
+ timestamp_re + '<foo> test message\n'
+ )
+
+ @patch_open
+ def _testLogRewriteRelayedEmulatedEcho(self, mock_open, relayed):
+ with conf.supybot.plugins.ChannelLogger.rewriteRelayed.context(True):
+ log_file = io.StringIO()
+ mock_open.return_value = log_file
+
+ msg = ircmsgs.privmsg(
+ '#foo', '<someone> test message', prefix='foo!bar@baz'
+ )
+ if relayed:
+ msg.tag('relayedMsg')
+ self.irc.getCallback('ChannelLogger').outFilter(self.irc, msg)
+ self.irc.feedMsg(msg)
+
+ if relayed:
+ content = '<someone> test message\n'
+ else:
+ content = '<foo> <someone> test message\n'
+ self.assertRegex(log_file.getvalue(), timestamp_re + content)
+
+ def testLogRewriteRelayedEmulatedEcho(self):
+ self._testLogRewriteRelayedEmulatedEcho(relayed=True)
+
+ def testLogRewriteRelayedEmulatedEchoNotRelayed(self):
+ self._testLogRewriteRelayedEmulatedEcho(relayed=False)
+
+ @patch_open
+ def _testLogRewriteRelayedRealEcho(self, mock_open, relayed):
+ with conf.supybot.plugins.ChannelLogger.rewriteRelayed.context(True):
+ log_file = io.StringIO()
+ mock_open.return_value = log_file
+
+ original_caps = self.irc.state.capabilities_ack
+ self.irc.state.capabilities_ack |= {
+ 'echo-message', 'labeled-response'
+ }
+
+ try:
+ out_msg = ircmsgs.privmsg('#foo', '<someone> test message')
+ if relayed:
+ out_msg.tag('relayedMsg')
+ self.irc.getCallback('ChannelLogger').outFilter(self.irc,
out_msg)
+ finally:
+ self.irc.state.capabilities_ack = original_caps
+
+ msg = ircmsgs.privmsg(
+ '#foo', '<someone> test message', prefix='foo!bar@baz'
+ )
+ msg.server_tags['label'] = out_msg.server_tags['label']
+ self.irc.feedMsg(msg)
+
+ if relayed:
+ content = '<someone> test message\n'
+ else:
+ content = '<foo> <someone> test message\n'
+ self.assertRegex(log_file.getvalue(), timestamp_re + content)
+
+ def testLogRewriteRelayedRealEcho(self):
+ self._testLogRewriteRelayedRealEcho(relayed=True)
+
+ def testLogRewriteRelayedRealEchoNotRelayed(self):
+ self._testLogRewriteRelayedRealEcho(relayed=False)
+
+ @patch_open
+ def testLogNotice(self, mock_open):
+ log_file = io.StringIO()
+ mock_open.return_value = log_file
+
+ self.irc.feedMsg(
+ ircmsgs.notice('#foo', 'test message', prefix='foo!bar@baz')
+ )
+
+ self.assertRegex(
+ log_file.getvalue(),
+ timestamp_re + '-foo- test message\n'
+ )
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: