[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