| # Lint as: python3 |
| # Copyright 2021 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import logging |
| import os |
| import pathlib |
| import subprocess |
| |
| # These paths should be relative to repository root. |
| _BAD_FILES = [ |
| # Malformed BUILD.gn file, remove this entry once it is fixed. |
| "third_party/swiftshader/tests/VulkanUnitTests/BUILD.gn", |
| ] |
| |
| |
| def is_bad_gn_file(filepath: str, root: pathlib.Path) -> bool: |
| relpath = os.path.relpath(filepath, root) |
| for bad_filepath in _BAD_FILES: |
| if relpath == bad_filepath: |
| logging.info(f'Skipping {relpath}: found in _BAD_FILES list.') |
| return True |
| if not os.access(filepath, os.R_OK | os.W_OK): |
| logging.info(f'Skipping {relpath}: Cannot read and write to it.') |
| return True |
| return False |
| |
| |
| def is_git_ignored(root: pathlib.Path, filepath: str) -> bool: |
| # The command git check-ignore exits with 0 if the path is ignored, 1 if it |
| # is not ignored. |
| exit_code = subprocess.run(['git', 'check-ignore', '-q', filepath], |
| cwd=root).returncode |
| return exit_code == 0 |