1import os 2from clang.cindex import Config 3if 'CLANG_LIBRARY_PATH' in os.environ: 4 Config.set_library_path(os.environ['CLANG_LIBRARY_PATH']) 5 6from clang.cindex import LinkageKind 7from clang.cindex import Cursor 8from clang.cindex import TranslationUnit 9 10from .util import get_cursor 11from .util import get_tu 12 13import unittest 14 15 16class TestLinkage(unittest.TestCase): 17 def test_linkage(self): 18 """Ensure that linkage specifers are available on cursors""" 19 20 tu = get_tu(""" 21void foo() { int no_linkage; } 22static int internal; 23namespace { struct unique_external_type {} } 24unique_external_type unique_external; 25extern int external; 26""", lang = 'cpp') 27 28 no_linkage = get_cursor(tu.cursor, 'no_linkage') 29 self.assertEqual(no_linkage.linkage, LinkageKind.NO_LINKAGE) 30 31 internal = get_cursor(tu.cursor, 'internal') 32 self.assertEqual(internal.linkage, LinkageKind.INTERNAL) 33 34 unique_external = get_cursor(tu.cursor, 'unique_external') 35 self.assertEqual(unique_external.linkage, LinkageKind.UNIQUE_EXTERNAL) 36 37 external = get_cursor(tu.cursor, 'external') 38 self.assertEqual(external.linkage, LinkageKind.EXTERNAL) 39