brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 2be9b9e Raw
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