infra.git repository
Testing
Welcome to the Chrome Infra repository!
Wondering where to start? Check out General Chrome Infrastructure
documentation. In particular, to check out this repo and the rest
of the infrastructure code, follow the instructions here.
The rest of this page is specific to this repo.
Entry points
- run.py: wrapper script to run programs contained in subdirectories
without having to deal with
sys.path modifications.
- test.py: multi-purpose script to run tests.
- packages/infra_libs/: generally useful functions and classes
- infra/services/: standalone programs intended to be run as
daemons.
- infra/tools: command-line tools, intended to be run by developers.
- appengine/: many Chrome-infra-managed AppEngine applications.
- infra/experimental: for, well, experimental stuff. Once
they are stabilized and reviewed, they should be moved in a more permanent
place.
Miscellaneous technical stuff
- bootstrap/: utilities to set up a proper Python virtual
environment.
- infra/path_hacks: submodules of this modules give access
to modules in the build/ repository.
from infra.path_hacks.common import <stg> is actually getting <stg> from
build/scripts/common.
- utils/: purpose? utils?
- Need to bump infra/deployed to pick up changes?
git push origin <updated hash>:deployed
- mail chrome-troopers@, include:
- previously deployed hash (for quick rollback)
- the hash you just pushed
- the list of CLs that made this push necessary
- the output of the
git push command
Integrating tests with test.py
If you've added a new module, run your tests with test.py:
- Create a .coveragerc file in the root directory of the module you want to
test. Take a look at another .coveragerc to see what to include in that.
- Create a "test" directory in the root directory of the module you want to
test. Move your
*_test.py files to this directory.
Double-check that your tests are getting picked up when you want them to be:
./test.py test <path-to-package>.
Tests still not getting picked up by test.py? Double-check to make sure you have
__init__.py files in each directory of your module so Python recognizes it as a
package.
Style
The preferred style is PEP8 with two-space indent; that is, the Chromium
Python
style,
except functions use lowercase_with_underscores. Use yapf (git cl format)
to autoformat new code.