blob: 60b3ca8d7fe3a93fd6461ac06169f4e7a7777fdb [file]
#!/usr/bin/env python3
# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import contextlib
import os
import sys
import setup_modules # pylint: disable=unused-import
import typ
import chromium_src.tools.metrics.python_support.tests_helpers as tests_helpers
_EXCLUDE_TEST_FILES_PATHS = [os.path.abspath(__file__)]
@contextlib.contextmanager
def _disable_luci_context():
"""Temporarily hides LUCI_CONTEXT to prevent typ from using ResultSink."""
saved_context = os.environ.pop('LUCI_CONTEXT', None)
try:
yield
finally:
if saved_context is not None:
os.environ['LUCI_CONTEXT'] = saved_context
def main():
tests_files_paths = list(tests_helpers.find_all_tests())
filtered_tests_files_paths = [
os.path.relpath(p)
for p in tests_files_paths
if p not in _EXCLUDE_TEST_FILES_PATHS
]
print(f'Running {len(filtered_tests_files_paths)} test files...')
# Hide LUCI_CONTEXT from typ so it doesn't try to upload granular test
# results to ResultSink. typ's hierarchical test IDs violate the presubmit
# ResultDB schema, causing HTTP 400s and crashing the test run.
# TODO(crbug.com/488365101): Reconsider usage of typ as a runner.
with _disable_luci_context():
return typ.main(
tests=filtered_tests_files_paths,
top_level_dirs=tests_helpers.TEST_DIRECTORIES_RELATIVE_TO_SRC,
jobs=128,
)
if __name__ == '__main__':
sys.exit(main())