chromium/tools/clang/rewrite_raw_ptr_fields/tests/run_all_tests.py

#!/usr/bin/env python3
# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import glob
import os.path
import shutil
import subprocess
import sys


def RunRewritingTests():
  subprocess.run([
      "tools/clang/scripts/test_tool.py", "--apply-edits",
      "rewrite_raw_ptr_fields"
  ])


def RunGeneratingTest(test_path):
  tmp_test_path = test_path.replace("-test.cc", "-original.cc")
  test_filter = os.path.basename(test_path).replace("-test.cc", "")

  shutil.copyfile(test_path, tmp_test_path)
  try:
    subprocess.run([
        "tools/clang/scripts/test_tool.py",
        "--test-filter=%s" % test_filter, "rewrite_raw_ptr_fields"
    ])
  finally:
    os.remove(tmp_test_path)


def RunGeneratingTests():
  tests = glob.glob("tools/clang/rewrite_raw_ptr_fields/tests/gen-*-test.cc")
  for test_path in tests:
    RunGeneratingTest(test_path)


def main():
  if not os.path.exists("ATL_OWNERS"):
    sys.stderr.write(
        "Please run run_all_tests.py from the root dir of Chromium")
    return -1

  if not os.path.exists(
      "third_party/llvm-build/Release+Asserts/bin/rewrite_raw_ptr_fields"):
    sys.stderr.write("Please build rewrite_raw_ptr_fields first")
    return -1

  RunRewritingTests()
  RunGeneratingTests()


if __name__ == "__main__":
  main()