X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tests%2Ftestirker.py;h=5352434f5ea40ebe40d808848fe72295a3c5d04f;hb=22011d91a91e4379cbb4553f2b9f9e5c472d862d;hp=765e19d1396cdb1c31ceba8590186d5418de03e1;hpb=8cd1b16a02c99132d2383ade0b3d7da43fe73054;p=bzrirker.git diff --git a/tests/testirker.py b/tests/testirker.py index 765e19d..5352434 100644 --- a/tests/testirker.py +++ b/tests/testirker.py @@ -3,11 +3,10 @@ # Copyright 2012 Neil Muller # GPL 2+ - see COPYING for details from unittest import TestLoader +from SocketServer import TCPServer, StreamRequestHandler +import threading -from bzrlib import ( - config, - tests, - ) +from bzrlib import config from bzrlib.bzrdir import BzrDir from bzrlib.tests import TestCaseInTempDir from bzrlib.plugins.bzrirker.irkerhook import IrkerSender @@ -16,16 +15,28 @@ from bzrlib.plugins.bzrirker.irkerhook import IrkerSender def test_suite(): return TestLoader().loadTestsFromName(__name__) -sample_config=("[DEFAULT]\n" +sample_config = ("[DEFAULT]\n" "irker_project=bzrirker\n" + "irker_server=localhost\n" + "irker_port=6677\n" "irker_channels=irc://chat.example.test/commits\n") -colour_config=("[DEFAULT]\n" +no_project_config = ("[DEFAULT]\n" + "irker_channels=irc://chat.example.test/commits\n") + +colour_config = ("[DEFAULT]\n" "irker_project=bzrirker\n" "irker_colours=mIRC\n" "irker_channels=irc://chat.example.test/commits\n") +class MyHandler(StreamRequestHandler): + + def handle(self): + data = self.rfile.read() + self.server.data = data + + class TestConfigured(TestCaseInTempDir): def test_no_colours(self): @@ -49,12 +60,30 @@ class TestConfigured(TestCaseInTempDir): 'bzrirker: Sample work * 1 / : foo bar ', irker._format()) + def test_no_project(self): + irker = self.get_irker(no_project_config) + self.assertEqual( + 'No Project name set: Sample ' + ' work * 1 / : foo bar ', + irker._format()) + def test_message_colour(self): irker = self.get_irker(colour_config) self.assertEqual( '\x02bzrirker:\x0f \x0303Sample \x0f' ' work * \x021\x0f / \x02\x0f: foo bar ', irker._format()) + def test_send(self): + irker = self.get_irker() + server = self.get_server() + irker.send() + while server.data is None: + pass + server.shutdown() + self.assertEqual(server.data, + '{"to": ["irc://chat.example.test/commits"]' + ', "privmsg": "bzrirker: Sample ' + ' work * 1 / : foo bar "}\n') def get_irker(self, text=sample_config): my_config = config.MemoryStack(text) @@ -70,5 +99,10 @@ class TestConfigured(TestCaseInTempDir): # We're not calling send, so do the setup stuff here irker._setup_revision_and_revno() return irker - + def get_server(self): + server = TCPServer(('localhost', 6677), MyHandler) + server.data = None + thread = threading.Thread(target=server.serve_forever) + thread.start() + return server