[gtk-doc] scan: refactor testsuite to prepare for more tests



commit 75eed8a453ae342e13c6d461196e52308a4189eb
Author: Stefan Sauer <ensonic users sf net>
Date:   Tue Nov 20 10:31:39 2018 +0100

    scan: refactor testsuite to prepare for more tests
    
    Extract a base-class so that we can have test classes for each decl-type.
    Remove 'tests' from the 'bugs' suite that we now cover in the unit-tests.

 tests/bugs/src/tester.h |  7 +----
 tests/scan.py           | 68 +++++++++++++++++++++++++++++++++++++++++--------
 2 files changed, 58 insertions(+), 17 deletions(-)
---
diff --git a/tests/bugs/src/tester.h b/tests/bugs/src/tester.h
index 24a94cd..1d06c71 100644
--- a/tests/bugs/src/tester.h
+++ b/tests/bugs/src/tester.h
@@ -333,13 +333,8 @@ const char * const * bug_624200a(void);
 const char ** const bug_624200b(void);
 
 
-/* internal function and macro */
+/* internal function */
 gchar *_bug_000000a (const gchar *name);
-#define _BUG_000000b (a) (a*a);
-
-#ifndef __GTK_DOC_IGNORE__
-extern int bug_512565(void);
-#endif
 
 void (*bug_638330) (void *arg1,
      const unsigned char *data,
diff --git a/tests/scan.py b/tests/scan.py
index a58c9d2..fc78aa4 100644
--- a/tests/scan.py
+++ b/tests/scan.py
@@ -24,24 +24,35 @@ import unittest
 from gtkdoc import scan
 
 
-class ScanHeaderContent(unittest.TestCase):
+class ScanHeaderContetTestCase(unittest.TestCase):
+    """Baseclass for the header scanner tests."""
 
     def setUp(self):
         self.decls = []
         self.types = []
-        self.options = argparse.Namespace(deprecated_guards='')
+        self.options = argparse.Namespace(deprecated_guards='', ignore_decorators='')
 
     def scanHeaderContent(self, content):
         return scan.ScanHeaderContent(content, self.decls, self.types,
                                       self.options)
 
-    def test_EmptyInput(self):
-        slist, doc_comments = self.scanHeaderContent([])
+    def assertNoDeclFound(self, slist):
         self.assertEqual([], slist)
-        self.assertEqual({}, doc_comments)
         self.assertEqual([], self.decls)
         self.assertEqual([], self.types)
 
+    def assertNothingFound(self, slist, doc_comments):
+        self.assertEqual({}, doc_comments)
+        self.assertNoDeclFound(slist)
+
+
+class ScanHeaderContent(ScanHeaderContetTestCase):
+    """Test generic scanner behaviour."""
+
+    def test_EmptyInput(self):
+        slist, doc_comments = self.scanHeaderContent([])
+        self.assertNothingFound(slist, doc_comments)
+
     def test_FindsDocComment(self):
         slist, doc_comments = self.scanHeaderContent([
             '/** FooBar:',
@@ -55,11 +66,9 @@ class ScanHeaderContent(unittest.TestCase):
             '/** FooBar:',
             ' */'
         ])
-        self.assertEqual([], slist)
-        self.assertEqual([], self.decls)
-        self.assertEqual([], self.types)
+        self.assertNoDeclFound(slist)
 
-    # test /* < private_header > */ maker
+    # TODO: test /* < private_header > */ maker
 
     def test_SkipSymbolWithPreprocessor(self):
         slist, doc_comments = self.scanHeaderContent([
@@ -67,10 +76,47 @@ class ScanHeaderContent(unittest.TestCase):
             'extern int bug_512565(void);'
             '#endif'
         ])
-        self.assertEqual([], slist)
-        self.assertEqual([], self.decls)
+        self.assertNoDeclFound(slist)
+
+
+# ENUM
+
+
+# FUNCTION
+
+
+class ScanHeaderContentMacros(ScanHeaderContetTestCase):
+    """Test parsing of macro declarations."""
+
+    def assertDecl(self, name, decl):
+        d = '<MACRO>\n<NAME>%s</NAME>\n%s</MACRO>\n' % (name, decl)
+        self.assertEqual([d], self.decls)
         self.assertEqual([], self.types)
 
+    def test_FindsMacroNumber(self):
+        slist, doc_comments = self.scanHeaderContent([
+            '#define FOO 1'
+        ])
+        self.assertEqual(['FOO'], slist)
+        self.assertDecl('FOO', '#define FOO 1')
+
+    def test_FindsMacroExpression(self):
+        slist, doc_comments = self.scanHeaderContent([
+            '#define FOO (1 << 1)'
+        ])
+        self.assertEqual(['FOO'], slist)
+        self.assertDecl('FOO', '#define FOO (1 << 1)')
+
+    # TODO: test for a few variants
+    def test_IgnoresInternalMacro(self):
+        slist, doc_comments = self.scanHeaderContent([
+            '#define _BUG_000000b (a) (a*a)'
+        ])
+        self.assertNoDeclFound(slist)
+
+
+# STRUCT
+
 
 if __name__ == '__main__':
     unittest.main()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]