-
Notifications
You must be signed in to change notification settings - Fork 373
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add unittests for changes to fix #4147
* Rename existing test * Add new tests * Also update Changelog here
- Loading branch information
Showing
2 changed files
with
78 additions
and
1 deletion.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -106,7 +106,7 @@ fn test_status_filtered() { | |
|
||
// See <https://github.com/martinvonz/jj/issues/3108> | ||
#[test] | ||
fn test_status_display_rebase_instructions() { | ||
fn test_status_display_rebase_instructions_if_no_decendant_resolves_conflict() { | ||
let test_env = TestEnvironment::default(); | ||
test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); | ||
|
||
|
@@ -177,6 +177,79 @@ fn test_status_display_rebase_instructions() { | |
"###); | ||
} | ||
|
||
#[test] | ||
fn test_status_display_if_child_resolves_conflict() { | ||
let test_env = TestEnvironment::default(); | ||
test_env.jj_cmd_ok(test_env.env_root(), &["git", "init", "repo"]); | ||
|
||
let repo_path = test_env.env_root().join("repo"); | ||
let conflicted_path = repo_path.join("conflicted.txt"); | ||
|
||
// PARENT: Write the initial file | ||
std::fs::write(&conflicted_path, "initial contents").unwrap(); | ||
test_env.jj_cmd_ok(&repo_path, &["describe", "--message", "Initial contents"]); | ||
|
||
// CHILD1: New commit on top of <PARENT> | ||
test_env.jj_cmd_ok( | ||
&repo_path, | ||
&["new", "--message", "First part of conflicting change"], | ||
); | ||
std::fs::write(&conflicted_path, "Child 1").unwrap(); | ||
|
||
// CHILD2: New commit also on top of <PARENT> | ||
test_env.jj_cmd_ok( | ||
&repo_path, | ||
&[ | ||
"new", | ||
"--message", | ||
"Second part of conflicting change", | ||
"@-", | ||
], | ||
); | ||
std::fs::write(&conflicted_path, "Child 2").unwrap(); | ||
|
||
// CONFLICT: New commit that is conflicted by merging <CHILD1> and <CHILD2> | ||
test_env.jj_cmd_ok(&repo_path, &["new", "--message", "boom", "all:(@-)+"]); | ||
// Adding more descendants to ensure we correctly find the root ancestors with | ||
// conflicts, not just the parents. | ||
test_env.jj_cmd_ok(&repo_path, &["new", "--message", "boom-cont"]); | ||
test_env.jj_cmd_ok(&repo_path, &["new", "--message", "boom-cont-2"]); | ||
std::fs::write(&conflicted_path, "resolved conflict").unwrap(); | ||
|
||
let stdout = test_env.jj_cmd_success(&repo_path, &["log", "-r", "::@"]); | ||
|
||
insta::assert_snapshot!(stdout, @r###" | ||
@ yqosqzyt [email protected] 2001-02-03 08:05:13 65143fef conflict | ||
│ (empty) boom-cont-2 | ||
× royxmykx [email protected] 2001-02-03 08:05:12 a4e88714 conflict | ||
│ (empty) boom-cont | ||
× mzvwutvl [email protected] 2001-02-03 08:05:11 538415e7 conflict | ||
├─╮ (empty) boom | ||
│ ○ kkmpptxz [email protected] 2001-02-03 08:05:10 1e8c2956 | ||
│ │ First part of conflicting change | ||
○ │ zsuskuln [email protected] 2001-02-03 08:05:11 2c8b19fd | ||
├─╯ Second part of conflicting change | ||
○ qpvuntsm [email protected] 2001-02-03 08:05:08 aade7195 | ||
│ Initial contents | ||
◆ zzzzzzzz root() 00000000 | ||
"###); | ||
|
||
let stdout = test_env.jj_cmd_success(&repo_path, &["status"]); | ||
|
||
insta::assert_snapshot!(stdout, @r###" | ||
The working copy is clean | ||
There are unresolved conflicts at these paths: | ||
conflicted.txt 2-sided conflict | ||
Working copy : yqosqzyt 65143fef (conflict) (empty) boom-cont-2 | ||
Parent commit: royxmykx a4e88714 (conflict) (empty) boom-cont | ||
To resolve the conflicts, start by updating to the first one: | ||
jj new mzvwutvlkqwt | ||
Then use `jj resolve`, or edit the conflict markers in the file directly. | ||
Once the conflicts are resolved, you may want to inspect the result with `jj diff`. | ||
Then run `jj squash` to move the resolution into the conflicted commit. | ||
"###); | ||
} | ||
|
||
#[test] | ||
fn test_status_simplify_conflict_sides() { | ||
let test_env = TestEnvironment::default(); | ||
|