Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Darst <rkd@zgib.net>2009-09-24 20:37:56 (GMT)
committer Richard Darst <rkd@zgib.net>2009-09-24 20:37:56 (GMT)
commit348de7d7afd900d84d624746366feea04730eacc (patch)
tree7570dd2c50ce6040806f4400dfe6cdb6dea7dc37
parentc6d908634d7d8d1e1e29508898ab86dafa1d230d (diff)
Added a test of meeting output, and other reorganization
- This patch reorganizes some tests, cleans it up. - Also adds test_contents_test, which replays a test meeting and then looks in all outputs to ensure that the specific items appear (or don't appear) in the output files. darcs-hash:20090924203756-82ea9-510faab6775a5ab12baaa3411a47e22a617797e4.gz
-rw-r--r--tests/run_test.py112
1 files changed, 94 insertions, 18 deletions
diff --git a/tests/run_test.py b/tests/run_test.py
index f4738e2..02cf86c 100644
--- a/tests/run_test.py
+++ b/tests/run_test.py
@@ -1,15 +1,22 @@
# Richard Darst, 2009
import os
+import re
import sys
import tempfile
import unittest
+os.environ['MEETBOT_RUNNING_TESTS'] = '1'
import meeting
import writers
running_tests = True
-os.environ['MEETBOT_RUNNING_TESTS'] = '1'
+
+def process_meeting(contents, extraConfig={}):
+ return meeting.process_meeting(contents=contents,
+ channel="#none", filename='/dev/null',
+ dontSave=True, safeMode=False,
+ extraConfig=extraConfig)
class MeetBotTest(unittest.TestCase):
@@ -19,7 +26,7 @@ class MeetBotTest(unittest.TestCase):
sys.argv[1:] = ["replay", "test-script-1.log.txt"]
sys.path.insert(0, "..")
try:
- execfile("../meeting.py", globals())
+ execfile("../meeting.py", {})
finally:
del sys.path[0]
@@ -56,30 +63,99 @@ class MeetBotTest(unittest.TestCase):
'.txt': writers.Text,
'.mw': writers.MediaWiki,
'.pmw': writers.PmWiki,
+ #'.tmp.txt|template=+template.txt': writers.Template,
+ #'.tmp.html|template=+template.html': writers.Template,
}
def M_trivial(self, contents=None, extraConfig={}):
if contents is None:
contents = self.trivial_contents
- return meeting.process_meeting(contents=contents,
- channel="#none",
- filename='/dev/null',
- dontSave=True,
- extraConfig=extraConfig,
- safeMode=False)
+ return process_meeting(contents=contents,
+ extraConfig=extraConfig)
def test_script_1(self):
- meeting.process_meeting(contents=file('test-script-1.log.txt').read(),
- channel="#none", filename='/dev/null',
- dontSave=True, safeMode=False,
- extraConfig={
- 'writer_map':self.full_writer_map})
+ process_meeting(contents=file('test-script-1.log.txt').read(),
+ extraConfig={'writer_map':self.full_writer_map})
#def test_script_3(self):
- # meeting.process_meeting(contents=file('test-script-3.log.txt').read(),
- # channel="#none", filename='/dev/null',
- # dontSave=True, safeMode=False,
- # extraConfig={
- # 'writer_map':self.full_writer_map})
+ # process_meeting(contents=file('test-script-3.log.txt').read(),
+ # extraConfig={'writer_map':self.full_writer_map})
+
+ all_commands_test_contents = """
+ 10:10:10 <x> #startmeeting
+ 10:10:10 <x> #topic h6k4orkac
+ 10:10:10 <x> #info blaoulrao
+ 10:10:10 <x> #idea alrkkcao4
+ 10:10:10 <x> #help ntoircoa5
+ 10:10:10 <x> #link http://bnatorkcao.net kroacaonteu
+ 10:10:10 <x> http://jrotjkor.net krotroun
+ 10:10:10 <x> #action xrceoukrc
+ 10:10:10 <x> #nick okbtrokr
+
+ # Should not appear in non-log output
+ 10:10:10 <x> #idea ckmorkont
+ 10:10:10 <x> #undo
+
+ # Assert that chairs can change the topic, and non-chairs can't.
+ 10:10:10 <x> #chair y
+ 10:10:10 <y> #topic topic_doeschange
+ 10:10:10 <z> #topic topic_doesntchange
+ 10:10:10 <x> #unchair y
+ 10:10:10 <y> #topic topic_doesnt2change
+
+ 10:10:10 <x> #endmeeting
+ """
+ def test_contents_test2(self):
+ """Ensure that certain input lines do appear in the output.
+
+ This test ensures that the input to certain commands does
+ appear in the output.
+ """
+ M = process_meeting(contents=self.all_commands_test_contents,
+ extraConfig={'writer_map':self.full_writer_map})
+ results = M.save()
+ for name, output in results.iteritems():
+ self.assert_('h6k4orkac' in output, "Topic failed for %s"%name)
+ self.assert_('blaoulrao' in output, "Info failed for %s"%name)
+ self.assert_('alrkkcao4' in output, "Idea failed for %s"%name)
+ self.assert_('ntoircoa5' in output, "Help failed for %s"%name)
+ self.assert_('http://bnatorkcao.net' in output,
+ "Link(1) failed for %s"%name)
+ self.assert_('kroacaonteu' in output, "Link(2) failed for %s"%name)
+ self.assert_('http://jrotjkor.net' in output,
+ "Link detection(1) failed for %s"%name)
+ self.assert_('krotroun' in output,
+ "Link detection(2) failed for %s"%name)
+ self.assert_('xrceoukrc' in output, "Action failed for %s"%name)
+ self.assert_('okbtrokr' in output, "Nick failed for %s"%name)
+
+ # Things which should only appear or not appear in the
+ # notes (not the logs):
+ if 'log' not in name:
+ self.assert_( 'ckmorkont' not in output,
+ "Undo failed for %s"%name)
+ self.assert_('topic_doeschange' in output,
+ "Chair changing topic failed for %s"%name)
+ self.assert_('topic_doesntchange' not in output,
+ "Non-chair not changing topic failed for %s"%name)
+ self.assert_('topic_doesnt2change' not in output,
+ "Un-chaired was able to chang topic for %s"%name)
+
+ #def test_contents_test(self):
+ # contents = open('test-script-3.log.txt').read()
+ # M = process_meeting(contents=file('test-script-3.log.txt').read(),
+ # extraConfig={'writer_map':self.full_writer_map})
+ # results = M.save()
+ # for line in contents.split('\n'):
+ # m = re.search(r'#(\w+)\s+(.*)', line)
+ # if not m:
+ # continue
+ # type_ = m.group(1)
+ # text = m.group(2)
+ # text = re.sub('[^\w]+', '', text).lower()
+ #
+ # m2 = re.search(t2, re.sub(r'[^\w\n]', '', results['.txt']))
+ # import fitz.interactnow
+ # print m.groups()
def t_css(self):
"""Runs all CSS-related tests.