diff options
Diffstat (limited to 'tests/scanner/test_maintransformer.py')
-rw-r--r-- | tests/scanner/test_maintransformer.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/scanner/test_maintransformer.py b/tests/scanner/test_maintransformer.py new file mode 100644 index 00000000..abf3ee73 --- /dev/null +++ b/tests/scanner/test_maintransformer.py @@ -0,0 +1,72 @@ +import unittest +import tempfile +import os + +os.environ['GI_SCANNER_DISABLE_CACHE'] = '1' + +from giscanner import ast +from giscanner.sourcescanner import SourceScanner +from giscanner.transformer import Transformer +from giscanner.annotationparser import GtkDocCommentBlockParser +from giscanner.maintransformer import MainTransformer + + +def create_scanner_from_source_string(source): + ss = SourceScanner() + tmp_fd, tmp_name = tempfile.mkstemp(suffix='.h', text=True) + + try: + with os.fdopen(tmp_fd, 'wt') as file: + file.write(source) + ss.parse_files([tmp_name]) + finally: + os.unlink(tmp_name) + + return ss + + +def load_namespace_from_source_string(namespace, source): + ss = create_scanner_from_source_string(source) + transformer = Transformer(namespace) + transformer.parse(ss.get_symbols()) + cbp = GtkDocCommentBlockParser() + blocks = cbp.parse_comment_blocks(ss.get_comments()) + main = MainTransformer(transformer, blocks) + main.transform() + + +class TestDeprecations(unittest.TestCase): + + def test_record_deprecated(self): + namespace = ast.Namespace('Test', '1.0') + load_namespace_from_source_string(namespace, """ + /** TestStruct: + * foo + * Deprecated: 1.2: something + */ + typedef struct _TestStruct TestStruct; + """) + + node = namespace.get('Struct') + self.assertEqual(node.doc, "foo") + self.assertEqual(node.deprecated, "1.2") + self.assertEqual(node.deprecated_doc, "something") + + def test_record_deprecated_from_section(self): + namespace = ast.Namespace('Test', '1.0') + load_namespace_from_source_string(namespace, """ + /** SECTION:teststruct + * foo + * Deprecated: 1.2: something + */ + typedef struct _TestStruct TestStruct; + """) + + node = namespace.get('Struct') + self.assertEqual(node.doc, "foo") + self.assertEqual(node.deprecated, "1.2") + self.assertEqual(node.deprecated_doc, "something") + + +if __name__ == '__main__': + unittest.main() |