run_tests: add a helper for invoking unittests

This makes it very easy for people to run all our unittests with just
`./run_tests`.  There doesn't seem to be any other way currently to
quickly invoke any of the tests.

Change-Id: I1f9a3745fa397a1e797bd64065c2ba7f338de4a1
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/227613
Tested-by: David Pursehouse <dpursehouse@collab.net>
Reviewed-by: David Pursehouse <dpursehouse@collab.net>
This commit is contained in:
Mike Frysinger 2019-06-12 17:42:43 -04:00 committed by David Pursehouse
parent 2b7daff8cb
commit 4f42a97067
3 changed files with 76 additions and 6 deletions

View File

@ -1,3 +1,5 @@
[TOC]
# Short Version # Short Version
- Make small logical changes. - Make small logical changes.
@ -52,17 +54,29 @@ Run `flake8` on changes modules:
flake8 file.py flake8 file.py
Note that repo generally follows [Google's python style guide] Note that repo generally follows [Google's python style guide] rather than
(https://google.github.io/styleguide/pyguide.html) rather than [PEP 8] [PEP 8], so it's possible that the output of `flake8` will be quite noisy.
(https://www.python.org/dev/peps/pep-0008/), so it's possible that It's not mandatory to avoid all warnings, but at least the maximum line
the output of `flake8` will be quite noisy. It's not mandatory to length should be followed.
avoid all warnings, but at least the maximum line length should be
followed.
If there are many occurrences of the same warning that cannot be If there are many occurrences of the same warning that cannot be
avoided without going against the Google style guide, these may be avoided without going against the Google style guide, these may be
suppressed in the included `.flake8` file. suppressed in the included `.flake8` file.
[Google's python style guide]: https://google.github.io/styleguide/pyguide.html
[PEP 8]: https://www.python.org/dev/peps/pep-0008/
## Running tests
There is a [`./run_tests`](./run_tests) helper script for quickly invoking all
of our unittests. The coverage isn't great currently, but it should still be
run for all commits.
Adding more unittests for changes you make would be greatly appreciated :).
Check out the [tests/](./tests/) subdirectory for more details.
## Check the license ## Check the license
repo is licensed under the Apache License, 2.0. repo is licensed under the Apache License, 2.0.

54
run_tests Executable file
View File

@ -0,0 +1,54 @@
#!/usr/bin/python
# -*- coding:utf-8 -*-
# Copyright 2019 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Wrapper to run pytest with the right settings."""
from __future__ import print_function
import errno
import os
import subprocess
import sys
def run_pytest(cmd, argv):
"""Run the unittests via |cmd|."""
try:
subprocess.check_call([cmd] + argv)
return 0
except OSError as e:
if e.errno == errno.ENOENT:
print('%s: unable to run `%s`: %s' % (__file__, cmd, e), file=sys.stderr)
print('%s: Try installing pytest: sudo apt-get install python-pytest' %
(__file__,), file=sys.stderr)
return 1
else:
raise
def main(argv):
"""The main entry."""
# Add the repo tree to PYTHONPATH as the tests expect to be able to import
# modules directly.
topdir = os.path.dirname(os.path.realpath(__file__))
pythonpath = os.environ.get('PYTHONPATH', '')
os.environ['PYTHONPATH'] = '%s:%s' % (topdir, pythonpath)
return run_pytest('pytest', argv)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))

2
tests/fixtures/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/.repo_not.present.gitconfig.json
/.repo_test.gitconfig.json