Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tests: split cli/tests to separate crate, remove test-fakes feature (PoC) #4622

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

yuja
Copy link
Collaborator

@yuja yuja commented Oct 11, 2024

The goal is to remove the crate-cycle: jj-cli --(dev)--> jj-cli. Since there's no way to express binary dependency in Cargo.toml, all binaries which the tests depend on should have to be built within the same crate.

I put Cargo.toml in cli/tests so the directory structure looks familiar.

One big caveat: since we build a separate "jj" binary for tests, the production "jj" binary is no longer covered by these tests. We might want to leave a couple of tests in jj-cli to ensure that the real "jj" binary works.

Checklist

If applicable:

  • I have updated CHANGELOG.md
  • I have updated the documentation (README.md, docs/, demos/)
  • I have updated the config schema (cli/src/config-schema.json)
  • I have added tests to cover my changes

This fixes real dependency cycle that would expose slightly different versions
of jj_lib types to unit tests, one from super::* and another from testutils::*.

The testutils dependency will be removed by splitting lib/tests to a separate
crate.
This breaks dev-dependency cycle: jj-lib -> testutils -> jj-lib.

I put Cargo.toml in lib/tests so the directory structure looks familiar. I'm
not sure if this layout is common, but I found this pattern in gix.
…PoC)

The goal is to remove the crate-cycle: `jj-cli --(dev)--> jj-cli`. Since there's
no way to express binary dependency in Cargo.toml, all binaries which the tests
depend on should have to be built within the same crate.

I put Cargo.toml in cli/tests so the directory structure looks familiar.

One big caveat: since we build a separate "jj" binary for tests, the production
"jj" binary is no longer covered by these tests. We might want to leave a couple
of tests in jj-cli to ensure that the real "jj" binary works.
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