Browse Source

[libclang][test] Suppress annoying 'LIBCLANG TOOLING ERROR' output

check-all invokes check-clang-python which prints the annoying message:

LIBCLANG TOOLING ERROR: fixed-compilation-database: Error while opening fixed database: No such file or directory
json-compilation-database: Error while opening JSON database: No such file or directory

Let's fix it now with os.dup os.dup2 trick.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@357562 91177308-0d34-0410-b5e6-96231b3b80d8
Fangrui Song 6 years ago
parent
commit
f4e17e7ac9
1 changed files with 9 additions and 0 deletions
  1. 9 0
      bindings/python/tests/cindex/test_cdb.py

+ 9 - 0
bindings/python/tests/cindex/test_cdb.py

@@ -23,8 +23,17 @@ class TestCDB(unittest.TestCase):
     def test_create_fail(self):
     def test_create_fail(self):
         """Check we fail loading a database with an assertion"""
         """Check we fail loading a database with an assertion"""
         path = os.path.dirname(__file__)
         path = os.path.dirname(__file__)
+
+        # clang_CompilationDatabase_fromDirectory calls fprintf(stderr, ...)
+        # Suppress its output.
+        stderr = os.dup(2)
+        with open(os.devnull, 'wb') as null:
+            os.dup2(null.fileno(), 2)
         with self.assertRaises(CompilationDatabaseError) as cm:
         with self.assertRaises(CompilationDatabaseError) as cm:
             cdb = CompilationDatabase.fromDirectory(path)
             cdb = CompilationDatabase.fromDirectory(path)
+        os.dup2(stderr, 2)
+        os.close(stderr)
+
         e = cm.exception
         e = cm.exception
         self.assertEqual(e.cdb_error,
         self.assertEqual(e.cdb_error,
             CompilationDatabaseError.ERROR_CANNOTLOADDATABASE)
             CompilationDatabaseError.ERROR_CANNOTLOADDATABASE)