Track exgit main; allow in :dev to unbreak integration tests#1
Closed
ivarvong wants to merge 1 commit into
Closed
Conversation
The integration test set wedged at boot because :exgit's old .app declared :vfs in its `applications` list (vfs is `optional: true` in exgit but Mix still emits it). With :exgit also depending on :vfs, :application_controller deadlocked on enqueue_or_start. Upstream fix is in exgit main (4a79314): mark the :vfs back-dep `runtime: false` so it doesn't land in `applications`. Track main here so the fix flows in, and allow :exgit in :dev so the fixture is debuggable from `iex -S mix run` without flipping to MIX_ENV=test. Per CLAUDE.md the dependency direction is backend → vfs; that invariant is preserved (vfs -> exgit only in :dev/:test, exgit -> vfs only at compile time).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
mix test test/integration/exgit_test.exs --include integration(andeven bare
mix run -e 'IO.puts(:hi)'once:exgitwas a dev dep)hung indefinitely with
:application_controllerlooping onenqueue_or_start_app.Root cause: a circular OTP application dependency between
:vfsand:exgit. The oldexgit.applisted:vfsin itsapplicationskey(Mix auto-includes
optional: truedeps there). With both appsloaded in the same VM, the controller deadlocked.
Fix
Two-part:
main, SHA4a79314): markthe
:vfsback-depruntime: falseso it stays out ofapplications. Thedefimpl VFS.Mountable, for: Exgit.Repositoryonly needs vfs at compile time anyway — there's no runtime
supervision tree to depend on.
branch: "main"so the fix flows in, and bumpfrom
only: :test→only: [:dev, :test]so the integrationfixture is debuggable from
iex -S mix runwithoutMIX_ENV=test.Per
CLAUDE.mdthe invariant is backend → vfs, never the reverse.That holds: vfs only depends on exgit in
:dev/:test(for theintegration test), and exgit only depends on vfs at compile time.
Verification
mix checkclean: format, compile -W, credo 0 issues, dialyzer 0 errors, 100% coverage, 36 doctests + 46 properties + 325 tests.mix test test/integration/exgit_test.exs --include integration: 9 tests, 0 failures, 30ms.mix run -e 'Application.ensure_all_started(:exgit); IO.puts("ok")'returns immediately.