# 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.