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
Contributor

@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

@yuja yuja force-pushed the push-wkuoyunotwuo branch from 7e5f12e to 61fe27b Compare November 9, 2024 02:01
@yuja yuja force-pushed the push-wkuoyunotwuo branch from 61fe27b to 646ba5a Compare November 16, 2024 10:35
@yuja yuja force-pushed the push-wkuoyunotwuo branch from 646ba5a to a007234 Compare December 5, 2024 14:00
yuja added 3 commits January 2, 2025 15:16
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.
@yuja yuja force-pushed the push-wkuoyunotwuo branch from a007234 to ac77261 Compare January 2, 2025 06:26
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