
This was done to ensure no regressions in crbug.com/40281617 but while doing that I realized that there is a lot of ground to cover and potential controversies in how to actually cover this with tests so for the sake of keeping CLs relatively small I think it makes sense to dedicate this one to simply covering existing functionality with tests. Main changes done here: 1. Add `PRESUBMIT_test.py` for histogram that adds a basic pass/fails scenarios for the 3 presubmit checks we have. 2. Add 2 extra versions of `.*histogram.xml` within `test_data` with comments describing what each of them representing. 3. Add basic injectability by exposing internal versions of check methods in `PRESUBMIT.py` as a lot of those checks relying on various types of globals - it was a way to inject things like xml paths, or actually not skip the whole checks where the data comes from `test_data` directory when testing this functionality. 4. Make `CheckWebViewHistogramsAllowlist` accept histograms_files as params to allow dependency on global test enabling testing. Probably the biggest controversy is using PRESUBMIT_test_mocks which come from top level of the repo. AFAICT there are no official mocks available and there is a prior art to reusing top level ones for example (but not limited to): https://source.chromium.org/chromium/chromium/src/+/main:base/allocator/partition_allocator/PRESUBMIT_test.py;l=12-17 Tested: This whole PR is adding test coverage, but on top of that I validated that presubmits are still properly passing IRL by checking that they pass on prod version of histograms.xml and then tripping each of them intentionally with local changes. Bug: 391532700 Change-Id: I23a4c29ac8a3dc77abb84b06cdd5864921b6eedf Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6187542 Commit-Queue: Andrzej Fiedukowicz <afie@google.com> Reviewed-by: Nate Fischer <ntfschr@chromium.org> Reviewed-by: Robert Kaplow <rkaplow@chromium.org> Cr-Commit-Position: refs/heads/main@{#1411638}
61 lines
2.3 KiB
Python
Executable File
61 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# 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 os
|
|
import sys
|
|
|
|
THIS_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
SRC_DIR = os.path.dirname(os.path.dirname(THIS_DIR))
|
|
TYP_DIR = os.path.join(SRC_DIR, 'third_party', 'catapult', 'third_party', 'typ')
|
|
|
|
if not TYP_DIR in sys.path:
|
|
sys.path.insert(0, TYP_DIR)
|
|
|
|
import typ
|
|
|
|
|
|
def resolve(*paths):
|
|
return [os.path.join(THIS_DIR, *(p.split('/'))) for p in paths]
|
|
|
|
|
|
sys.exit(
|
|
typ.main(
|
|
tests=resolve(
|
|
'actions/extract_actions_test.py',
|
|
|
|
# TODO(crbug.com/40772738) - the test ordering is very sensitive due
|
|
# to potential name collisions between ukm/pretty_print.py and
|
|
# histograms/pretty_print.py and the implementation in typ.
|
|
#
|
|
# Until this issue is fixed, best to ensure that the 'histograms'
|
|
# files show up *after* the 'ukm' files (in order for the histograms
|
|
# directory to be added to sys.path *before* ukm), and that we run
|
|
# the tests in a single process (jobs=1, below).
|
|
'common/codegen_shared_test.py',
|
|
'dwa/dwa_model_test.py',
|
|
'dwa/dwa_xml_validations_test.py',
|
|
'dwa/gen_builders_test.py',
|
|
'ukm/gen_builders_test.py',
|
|
'ukm/ukm_model_test.py',
|
|
'ukm/xml_validations_test.py',
|
|
'histograms/expand_owners_unittest.py',
|
|
'histograms/extract_histograms_test.py',
|
|
'histograms/generate_expired_histograms_array_unittest.py',
|
|
'histograms/generate_allowlist_from_histograms_file_unittest.py',
|
|
'histograms/merge_xml_test.py',
|
|
'histograms/PRESUBMIT_test.py',
|
|
'histograms/pretty_print_test.py',
|
|
'histograms/validate_token_test.py',
|
|
'../json_comment_eater/json_comment_eater_test.py',
|
|
'../json_to_struct/element_generator_test.py',
|
|
'../json_to_struct/struct_generator_test.py',
|
|
'../variations/fieldtrial_to_struct_unittest.py',
|
|
'../variations/fieldtrial_util_unittest.py',
|
|
'../variations/split_variations_cmd_unittest.py',
|
|
'../../components/variations/service/'
|
|
'generate_ui_string_overrider_unittest.py',
|
|
),
|
|
jobs=1))
|