--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb/misc/cwfs/cwfs_test.py Sat Jan 16 13:48:51 2016 +0100
@@ -0,0 +1,66 @@
+# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
+#
+# This file is part of CubicWeb.
+#
+# CubicWeb is free software: you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation, either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License along
+# with CubicWeb. If not, see <http://www.gnu.org/licenses/>.
+"""
+
+"""
+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 open(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()