[pypy-svn] r68914 - in pypy/trunk/pypy/tool: . test
arigo at codespeak.net
arigo at codespeak.net
Mon Nov 2 16:09:45 CET 2009
Author: arigo
Date: Mon Nov 2 16:09:44 2009
New Revision: 68914
Modified:
pypy/trunk/pypy/tool/logparser.py
pypy/trunk/pypy/tool/test/test_logparser.py
Log:
Add a function with a test. Add another test for logparser.
Modified: pypy/trunk/pypy/tool/logparser.py
==============================================================================
--- pypy/trunk/pypy/tool/logparser.py (original)
+++ pypy/trunk/pypy/tool/logparser.py Mon Nov 2 16:09:44 2009
@@ -39,6 +39,20 @@
f.close()
return log
+def extract_category(log, catprefix='', toplevel=False):
+ got = []
+ resulttext = []
+ for entry in log:
+ if entry[0] == 'debug_print':
+ resulttext.append(entry[1])
+ else:
+ got.extend(extract_category(
+ entry[3], catprefix, toplevel=entry[0].startswith(catprefix)))
+ if toplevel:
+ resulttext.append('')
+ got.insert(0, '\n'.join(resulttext))
+ return got
+
def getsubcategories(log):
return [entry for entry in log if entry[0] != 'debug_print']
Modified: pypy/trunk/pypy/tool/test/test_logparser.py
==============================================================================
--- pypy/trunk/pypy/tool/test/test_logparser.py (original)
+++ pypy/trunk/pypy/tool/test/test_logparser.py Mon Nov 2 16:09:44 2009
@@ -1,5 +1,54 @@
+from pypy.tool.udir import udir
from pypy.tool.logparser import *
+
+globalpath = udir.join('test_logparser.log')
+globalpath.write("""\
+test1
+[12a0] {foo
+test2a
+test2b
+[12b0] {bar
+test3
+[12e0] bar}
+test4
+[12e5] {bar
+test5a
+test5b
+[12e6] bar}
+test6
+[12f0] foo}
+test7
+""")
+
+
+def test_parse_log_file():
+ log = parse_log_file(str(globalpath))
+ assert log == [
+ ('debug_print', 'test1'),
+ ('foo', 0x12a0, 0x12f0, [
+ ('debug_print', 'test2a'),
+ ('debug_print', 'test2b'),
+ ('bar', 0x12b0, 0x12e0, [
+ ('debug_print', 'test3')]),
+ ('debug_print', 'test4'),
+ ('bar', 0x12e5, 0x12e6, [
+ ('debug_print', 'test5a'),
+ ('debug_print', 'test5b')]),
+ ('debug_print', 'test6')]),
+ ('debug_print', 'test7')]
+
+def test_extract_category():
+ log = parse_log_file(str(globalpath))
+ catbar = list(extract_category(log, 'bar'))
+ assert catbar == ["test3\n", "test5a\ntest5b\n"]
+ assert catbar == list(extract_category(log, 'ba'))
+ catfoo = list(extract_category(log, 'foo'))
+ assert catfoo == ["test2a\ntest2b\ntest4\ntest6\n"]
+ assert catfoo == list(extract_category(log, 'f'))
+ catall = list(extract_category(log, ''))
+ assert catall == catfoo + catbar
+
def test_gettotaltimes():
result = gettotaltimes([
('foo', 2, 17, [
More information about the Pypy-commit
mailing list