misc/cwfs/cwfs_test.py
changeset 0 b97547f5f1fa
child 1977 606923dff11b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/misc/cwfs/cwfs_test.py	Wed Nov 05 15:52:50 2008 +0100
@@ -0,0 +1,46 @@
+from logilab.common.testlib import TestCase, unittest_main
+
+import cubicwebfs
+import sre
+
+def spec_parser(filename) :
+    """
+    extract tests from specification
+    """
+    sections = []
+    buffer = ""
+    in_section = False
+    for line in file(filename) :
+        if line.startswith('Test::'):
+            in_section = True
+            buffer = ""
+        elif in_section :
+            if line.startswith("  ") or not line.strip() :
+                buffer += line.lstrip()
+            else :
+                sections.append(buffer)
+                in_section = False
+    tests = []
+    for section in sections :
+        subsections = [t for t in section.strip().split('$ ls') if t]
+        for subsection in subsections :
+            path, results = subsection.splitlines()[0], subsection.splitlines()[1:]
+            path = path.strip()
+            items = set([i for i in sre.split('[\t\n]', '\n'.join(results)) if i])
+            tests.append((path, items))
+    return tests
+
+tests = spec_parser("cubicwebfs-spec.txt")
+
+class monTC(TestCase) :
+    pass
+
+for index, (path, results) in enumerate(tests) :
+    def f(self, p=path, r=results) :
+        res = set(cubicwebfs.ls(p))
+        self.assertEqual(r, res) #, 'en trop %s\nmanque %s' % (r-results,results-r))
+    f.__doc__ = "%s %s"%(index,path)
+    setattr(monTC,'test_%s'%index,f)
+
+if __name__ == '__main__':
+    unittest_main()