72 lines · python
1import os2 3from clang.cindex import Config, File, Index, TranslationUnit4 5if "CLANG_LIBRARY_PATH" in os.environ:6 Config.set_library_path(os.environ["CLANG_LIBRARY_PATH"])7 8import unittest9 10inputs_dir = os.path.join(os.path.dirname(__file__), "INPUTS")11 12 13class TestFile(unittest.TestCase):14 def test_file(self):15 index = Index.create()16 tu = index.parse("t.c", unsaved_files=[("t.c", "")])17 file = File.from_name(tu, "t.c")18 self.assertEqual(str(file), "t.c")19 self.assertEqual(file.name, "t.c")20 self.assertEqual(repr(file), "<File: t.c>")21 22 def test_file_eq(self):23 path = os.path.join(inputs_dir, "testfile.c")24 path_a = os.path.join(inputs_dir, "a.inc")25 path_b = os.path.join(inputs_dir, "b.inc")26 tu = TranslationUnit.from_source(path)27 main_file = File.from_name(tu, path)28 a_file = File.from_name(tu, path_a)29 a_file2 = File.from_name(tu, path_a)30 b_file = File.from_name(tu, path_b)31 32 self.assertEqual(a_file, a_file2)33 self.assertNotEqual(a_file, b_file)34 self.assertNotEqual(main_file, a_file)35 self.assertNotEqual(main_file, b_file)36 self.assertNotEqual(main_file, "t.c")37 38 def test_file_eq_in_memory(self):39 tu = TranslationUnit.from_source(40 "testfile.c",41 unsaved_files=[42 (43 "testfile.c",44 """45int a[] = { 46 #include "a.inc"47};48int b[] = { 49 #include "b.inc"50};51""",52 ),53 ("a.inc", "1,2,3"),54 ("b.inc", "1,2,3"),55 ],56 )57 58 path = os.path.join(inputs_dir, "testfile.c")59 path_a = os.path.join(inputs_dir, "a.inc")60 path_b = os.path.join(inputs_dir, "b.inc")61 tu = TranslationUnit.from_source(path)62 main_file = File.from_name(tu, path)63 a_file = File.from_name(tu, path_a)64 a_file2 = File.from_name(tu, path_a)65 b_file = File.from_name(tu, path_b)66 67 self.assertEqual(a_file, a_file2)68 self.assertNotEqual(a_file, b_file)69 self.assertNotEqual(main_file, a_file)70 self.assertNotEqual(main_file, b_file)71 self.assertNotEqual(main_file, "a.inc")72