]> granicus.if.org Git - clang/commitdiff
python binding: expose compile command filename
authorGuillaume Papin <guillaume.papin@epitech.eu>
Mon, 7 Mar 2016 18:44:42 +0000 (18:44 +0000)
committerGuillaume Papin <guillaume.papin@epitech.eu>
Mon, 7 Mar 2016 18:44:42 +0000 (18:44 +0000)
Reviewers: compnerd, skalinichev

Differential Revision: http://reviews.llvm.org/D17278

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262845 91177308-0d34-0410-b5e6-96231b3b80d8

bindings/python/clang/cindex.py
bindings/python/tests/cindex/test_cdb.py

index e4b38769b77d4c6cf49b795cede69f69b50716d8..f4c7ca4986f7cc09962dfe8d5c4f0febb9f6d1ab 100644 (file)
@@ -2702,6 +2702,11 @@ class CompileCommand(object):
         """Get the working directory for this CompileCommand"""
         return conf.lib.clang_CompileCommand_getDirectory(self.cmd)
 
+    @property
+    def filename(self):
+        """Get the working filename for this CompileCommand"""
+        return conf.lib.clang_CompileCommand_getFilename(self.cmd)
+
     @property
     def arguments(self):
         """
@@ -2884,6 +2889,11 @@ functionList = [
    _CXString,
    _CXString.from_result),
 
+  ("clang_CompileCommand_getFilename",
+   [c_object_p],
+   _CXString,
+   _CXString.from_result),
+
   ("clang_CompileCommand_getNumArgs",
    [c_object_p],
    c_uint),
index e1f824f797f22657384cd7ccdff65ee20a8beae7..35fe3e108a12e4b749bb4b6810af8208e24924e9 100644 (file)
@@ -38,27 +38,34 @@ def test_all_compilecommand():
     cmds = cdb.getAllCompileCommands()
     assert len(cmds) == 3
     expected = [
+        { 'wd': '/home/john.doe/MyProject',
+          'file': '/home/john.doe/MyProject/project.cpp',
+          'line': ['clang++', '-o', 'project.o', '-c',
+                   '/home/john.doe/MyProject/project.cpp']},
         { 'wd': '/home/john.doe/MyProjectA',
+          'file': '/home/john.doe/MyProject/project2.cpp',
           'line': ['clang++', '-o', 'project2.o', '-c',
                    '/home/john.doe/MyProject/project2.cpp']},
         { 'wd': '/home/john.doe/MyProjectB',
+          'file': '/home/john.doe/MyProject/project2.cpp',
           'line': ['clang++', '-DFEATURE=1', '-o', 'project2-feature.o', '-c',
                    '/home/john.doe/MyProject/project2.cpp']},
-        { 'wd': '/home/john.doe/MyProject',
-          'line': ['clang++', '-o', 'project.o', '-c',
-                   '/home/john.doe/MyProject/project.cpp']}
+
         ]
     for i in range(len(cmds)):
         assert cmds[i].directory == expected[i]['wd']
+        assert cmds[i].filename == expected[i]['file']
         for arg, exp in zip(cmds[i].arguments, expected[i]['line']):
             assert arg == exp
 
 def test_1_compilecommand():
     """Check file with single compile command"""
     cdb = CompilationDatabase.fromDirectory(kInputsDir)
-    cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp')
+    file = '/home/john.doe/MyProject/project.cpp'
+    cmds = cdb.getCompileCommands(file)
     assert len(cmds) == 1
-    assert cmds[0].directory == '/home/john.doe/MyProject'
+    assert cmds[0].directory == os.path.dirname(file)
+    assert cmds[0].filename == file
     expected = [ 'clang++', '-o', 'project.o', '-c',
                  '/home/john.doe/MyProject/project.cpp']
     for arg, exp in zip(cmds[0].arguments, expected):