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

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