0
Files
src/testing/run_with_dummy_home.py
Ben Pastene b5c6726e71 Enforce formatting of all py files under //testing/
Some subdirs have their own .style.yapf files (like
//testing/pytype_common/), but most do not. This has lead to a lot of
python code in //testing/ naturally being developed with no
consistent styling. This can make things a little hard to read when
put in the context of other py code throughout the repo that's much
more consistent.

So this:
- adds a basic //testing/.style.yapf file
- adds another testing/trigger_scripts/.style.yapf file that's similar
  but sets indent to 4, since the code in that dir currently uses
  4 indents
- reformats everything
- adds a presubmit checkout to //testing/PRESUBMIT.py to enforce that
  things stay formatted

Bug: 340623285
Change-Id: I2a6707ba2f6f784454d348a19280dca2ca90804b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5540460
Commit-Queue: Ben Pastene <bpastene@chromium.org>
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1301583}
2024-05-15 21:24:01 +00:00

59 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
# Copyright 2018 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Usage: run_with_dummy_home.py <command>
Helper for running a test with a dummy $HOME, populated with just enough for
tests to run and pass. Useful for isolating tests from the real $HOME, which
can contain config files that negatively affect test performance.
"""
import os
import shutil
import subprocess
import sys
import tempfile
def _set_up_dummy_home(original_home, dummy_home):
"""Sets up a dummy $HOME that Chromium tests can run in.
Files are copied, while directories are symlinked.
"""
for filename in ['.Xauthority']:
original_path = os.path.join(original_home, filename)
if not os.path.exists(original_path):
continue
shutil.copyfile(original_path, os.path.join(dummy_home, filename))
# Prevent fontconfig etc. from reconstructing the cache and symlink rr
# trace directory.
for dirpath in [['.cache'], ['.local', 'share', 'rr'], ['.vpython'],
['.vpython_cipd_cache'], ['.vpython-root']]:
original_path = os.path.join(original_home, *dirpath)
if not os.path.exists(original_path):
continue
dummy_parent_path = os.path.join(dummy_home, *dirpath[:-1])
if not os.path.isdir(dummy_parent_path):
os.makedirs(dummy_parent_path)
os.symlink(original_path, os.path.join(dummy_home, *dirpath))
def main():
try:
dummy_home = tempfile.mkdtemp()
print('Creating dummy home in %s' % dummy_home)
original_home = os.environ['HOME']
os.environ['HOME'] = dummy_home
_set_up_dummy_home(original_home, dummy_home)
return subprocess.call(sys.argv[1:])
finally:
shutil.rmtree(dummy_home)
if __name__ == '__main__':
sys.exit(main())