blob: 1dacd5306a0ce8edf0639ce0457c507f803445e7 [file] [view]
# Repo End-to-End Tests
These tests run the real `repo` launcher & code (as subprocesses) against a
local git smart HTTP server. They are hermetic: everything is served from
`127.0.0.1` out of temporary directories, and the user's git config &
environment are ignored.
They run as part of `./run_tests` by default, after the unit tests.
## Running
```sh
# Everything (unit + e2e).
./run_tests
# Only the e2e tests.
./run_tests -m e2e
# Everything but the e2e tests.
./run_tests -m 'not e2e'
```
The suite is skipped automatically when `git http-backend` isn't
available, when git is older than 2.28 (need default branch support and
superproject support), or when not run from a git checkout.
## Layout
* `harness.py`: the git server, server-side repos & the repo client.
* `test_init_sync.py`: core `repo init` & `repo sync` options.
* `test_partial_clone.py`: partial clones, incl. the standard Android
configuration from go/repo-init & go/sync.
* `test_sync_modes.py`: `sync -n`/`-l` & the other sync flags.
* `test_groups.py`: manifest groups.
* `test_failures.py`: failure paths (missing projects, dirty trees, ...).
* `test_workflows.py`: multi-step workflows.
* `test_manifest_regressions.py`: manifests that broke users in the past.