import os from clang.cindex import Config if "CLANG_LIBRARY_PATH" in os.environ: Config.set_library_path(os.environ["CLANG_LIBRARY_PATH"]) from clang.cindex import LinkageKind from clang.cindex import Cursor from clang.cindex import TranslationUnit from .util import get_cursor from .util import get_tu import unittest class TestLinkage(unittest.TestCase): def test_linkage(self): """Ensure that linkage specifers are available on cursors""" tu = get_tu( """ void foo() { int no_linkage; } static int internal; namespace { struct unique_external_type {} } unique_external_type unique_external; extern int external; """, lang="cpp", ) no_linkage = get_cursor(tu.cursor, "no_linkage") self.assertEqual(no_linkage.linkage, LinkageKind.NO_LINKAGE) internal = get_cursor(tu.cursor, "internal") self.assertEqual(internal.linkage, LinkageKind.INTERNAL) unique_external = get_cursor(tu.cursor, "unique_external") self.assertEqual(unique_external.linkage, LinkageKind.UNIQUE_EXTERNAL) external = get_cursor(tu.cursor, "external") self.assertEqual(external.linkage, LinkageKind.EXTERNAL)