diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/scanner/test_sourcescanner.py | 61 |
1 files changed, 42 insertions, 19 deletions
diff --git a/tests/scanner/test_sourcescanner.py b/tests/scanner/test_sourcescanner.py index 3963683d..ecd312e3 100644 --- a/tests/scanner/test_sourcescanner.py +++ b/tests/scanner/test_sourcescanner.py @@ -5,7 +5,20 @@ import os from giscanner.sourcescanner import SourceScanner -two_typedefs_source = """ +class Test(unittest.TestCase): + + def _parse_files(self, code, header=True): + scanner = SourceScanner() + tmp_fd, tmp_name = tempfile.mkstemp(suffix=".h" if header else ".c") + fileobj = os.fdopen(tmp_fd, 'wb') + with fileobj: + fileobj.write(code.encode("utf-8")) + scanner.parse_files([tmp_name]) + os.unlink(tmp_name) + return scanner + + def test_length_consistency(self): + scanner = self._parse_files(""" /** * Spam: */ @@ -15,26 +28,36 @@ typedef struct _spam Spam; * Eggs: */ typedef struct _eggs Eggs; -""" +""") + self.assertEqual(len(list(scanner.get_symbols())), 2) + self.assertEqual(len(list(scanner.get_symbols())), 2) + self.assertEqual(len(list(scanner.get_comments())), 2) + self.assertEqual(len(list(scanner.get_comments())), 2) + self.assertFalse(scanner.get_errors()) -class Test(unittest.TestCase): - def setUp(self): - self.ss = SourceScanner() - tmp_fd, tmp_name = tempfile.mkstemp() - file = os.fdopen(tmp_fd, 'wt') - file.write(two_typedefs_source) - file.close() - - self.ss.parse_files([tmp_name]) - - def test_get_symbols_length_consistency(self): - self.assertEqual(len(list(self.ss.get_symbols())), 2) - self.assertEqual(len(list(self.ss.get_symbols())), 2) - - def test_get_comments_length_consistency(self): - self.assertEqual(len(list(self.ss.get_comments())), 2) - self.assertEqual(len(list(self.ss.get_comments())), 2) + def test_parser_error(self): + scanner = self._parse_files(""" +void foo() { + a = +}""") + + errors = scanner.get_errors() + self.assertEqual(len(errors), 1) + self.assertTrue("syntax error" in errors[0]) + + def test_ignore_typeof(self): + # https://gitlab.gnome.org/GNOME/gobject-introspection/merge_requests/71 + scanner = self._parse_files(""" +/** +* foo: +*/ +void foo(int bar) { + bar = ((__typeof__(bar)) (foo) (bar)); +} +""") + self.assertEqual(len(list(scanner.get_comments())), 1) + self.assertFalse(scanner.get_errors()) if __name__ == '__main__': |