Skip to content

Avoid repeated CLI startup when preparing integration fixtures - #917

Merged
sds merged 1 commit into
mainfrom
perf/fixture-install-api
Nov 5, 2026
Merged

sds merged 1 commit into
mainfrom
perf/fixture-install-api

Conversation

@sds

@sds sds commented Nov 5, 2026 •

Copy link
Copy Markdown
Owner

Prepare installed hooks through Overcommit::Installer when installation is only integration-test setup. This avoids repeatedly starting Ruby and loading the CLI before exercising a commit, push, signing, merge, or concurrency behavior. Dedicated CLI/installation and Gemfile-loading tests retain their real executable calls; every example and assertion remains.

The helper clears repository-path caches before and after installation so setup cannot inherit a previous example's repository or leak its own paths. Fixture logging is captured in memory.

Paired Windows CI experiment on Ruby 3.4 compared unchanged code and this setup on the same VM, alternating order across all five production shards:

Shard Control Installer API
1 30.70s 27.49s
2 41.13s 38.91s
3 49.90s 43.21s
4 47.62s 45.84s
5 35.08s 29.11s

All five candidates passed and were faster in both execution orders: median paired reduction 10.5%, aggregate test-command reduction 9.7%.

Local validation: all 90 integration examples pass, RuboCop passes, and git diff --check passes. Full GitHub CI passed all 10,188 example executions across the six Ruby/OS pairs, lint, and required CI in 107s. This verifies correctness; overall workflow time was approximately unchanged within hosted-runner variation.

@sds
sds merged commit afa4e63 into main Nov 5, 2026
38 checks passed
@sds
sds deleted the perf/fixture-install-api branch November 5, 2026 18:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant