-
Notifications
You must be signed in to change notification settings - Fork 349
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: demonstrate sparsed-away paths lost on stale-workspace recovery
As shown by the updated test case, when we recover from a working copy pointing to a lost operation, the new working-copy commit after snapshotting will have lost any files outside the sparse patterns.
- Loading branch information
1 parent
0d19779
commit ffb1268
Showing
1 changed file
with
41 additions
and
20 deletions.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -419,12 +419,24 @@ fn test_workspaces_current_op_discarded_by_other() { | |
|
||
std::fs::write(main_path.join("modified"), "base\n").unwrap(); | ||
std::fs::write(main_path.join("deleted"), "base\n").unwrap(); | ||
std::fs::write(main_path.join("sparse"), "base\n").unwrap(); | ||
test_env.jj_cmd_ok(&main_path, &["new"]); | ||
std::fs::write(main_path.join("modified"), "main\n").unwrap(); | ||
test_env.jj_cmd_ok(&main_path, &["new"]); | ||
|
||
test_env.jj_cmd_ok(&main_path, &["workspace", "add", "../secondary"]); | ||
// Make unsnapshotted writes in the secondary working copy | ||
test_env.jj_cmd_ok( | ||
&secondary_path, | ||
&[ | ||
"sparse", | ||
"set", | ||
"--clear", | ||
"--add=modified", | ||
"--add=deleted", | ||
"--add=added", | ||
], | ||
); | ||
std::fs::write(secondary_path.join("modified"), "secondary\n").unwrap(); | ||
std::fs::remove_file(secondary_path.join("deleted")).unwrap(); | ||
std::fs::write(secondary_path.join("added"), "secondary\n").unwrap(); | ||
|
@@ -443,13 +455,13 @@ fn test_workspaces_current_op_discarded_by_other() { | |
], | ||
); | ||
insta::assert_snapshot!(stdout, @r###" | ||
@ ca4014fc13 abandon commit 9e69961a6cb8dc42410fa11421c5ce14c9ba4dba3d85c99b3f5d7214e01c09211d3f6abf0a5502038bc9531d4d7828a4b3e978ca4f64f6cb5b00f4181c1710cc | ||
◉ b7e3c248b3 Create initial working-copy commit in workspace secondary | ||
◉ 3a464a164b add workspace 'secondary' | ||
◉ 1a8a57ad06 new empty commit | ||
◉ 34dce00889 snapshot working copy | ||
◉ 64b8644c69 new empty commit | ||
◉ 983fc29dc3 snapshot working copy | ||
@ 716b8d737e abandon commit 8ac26d0060e2be7f3fce2b5ebd2eb0c75053666f6cbc41bee50bb6da463868704a0bcf1ed9848761206d77694a71e3c657e5e250245e342779df1b00f0da9009 | ||
◉ bb8aec2a1c Create initial working-copy commit in workspace secondary | ||
◉ af6f39b411 add workspace 'secondary' | ||
◉ 05c14c7e78 new empty commit | ||
◉ 92bb962606 snapshot working copy | ||
◉ 553e0ea3a4 new empty commit | ||
◉ b3755a9026 snapshot working copy | ||
◉ 17dbb2fe40 add workspace 'default' | ||
◉ cecfee9647 initialize repo | ||
◉ 0000000000 | ||
|
@@ -460,10 +472,10 @@ fn test_workspaces_current_op_discarded_by_other() { | |
test_env.jj_cmd_ok(&main_path, &["util", "gc", "--expire=now"]); | ||
|
||
insta::assert_snapshot!(get_log_output(&test_env, &main_path), @r###" | ||
@ b026dbb4ded8 default@ | ||
│ ◉ 11b31a7bf02c secondary@ | ||
◉ ec4904a30161 secondary@ | ||
│ @ 74769415363f default@ | ||
├─╯ | ||
◉ cab81fe8ecb0 | ||
◉ bd711986720f | ||
◉ 000000000000 | ||
"###); | ||
|
||
|
@@ -476,29 +488,38 @@ fn test_workspaces_current_op_discarded_by_other() { | |
|
||
let (stdout, stderr) = test_env.jj_cmd_ok(&secondary_path, &["workspace", "update-stale"]); | ||
insta::assert_snapshot!(stderr, @r###" | ||
Failed to read working copy's current operation; attempting recovery. Error message from read attempt: Object b7e3c248b31b30b9ebe9bc0960bb5138a9832745f0e02d76e7dc9e65a44fcfd092cdf9e22e6ca84498dc496dd08c22027ecc3ba8fc45ab54bf565b9cda13eca6 of type operation not found | ||
Created and checked out recovery commit 1e90e5d2ab94 | ||
Failed to read working copy's current operation; attempting recovery. Error message from read attempt: Object bb8aec2a1ca33ebafdfe8866bc4ad3464dffd25634fde19d1025625880791b141d35753e10737c41b2bc133ab84047312f3021d905bb711960253e7f430100fc of type operation not found | ||
Created and checked out recovery commit 30ee0d1fbd7a | ||
"###); | ||
insta::assert_snapshot!(stdout, @""); | ||
|
||
insta::assert_snapshot!(get_log_output(&test_env, &main_path), @r###" | ||
◉ bffc5782a10d secondary@ | ||
◉ 11b31a7bf02c | ||
│ @ b026dbb4ded8 default@ | ||
◉ 8fd911b4e595 secondary@ | ||
◉ ec4904a30161 | ||
│ @ 74769415363f default@ | ||
├─╯ | ||
◉ cab81fe8ecb0 | ||
◉ bd711986720f | ||
◉ 000000000000 | ||
"###); | ||
|
||
// The sparse patterns should remain | ||
let stdout = test_env.jj_cmd_success(&secondary_path, &["sparse", "list"]); | ||
insta::assert_snapshot!(stdout, @r###" | ||
added | ||
deleted | ||
modified | ||
"###); | ||
let (stdout, stderr) = test_env.jj_cmd_ok(&secondary_path, &["st"]); | ||
insta::assert_snapshot!(stderr, @""); | ||
// TODO: The file outside the sparse patterns should still be there | ||
insta::assert_snapshot!(stdout, @r###" | ||
Working copy changes: | ||
A added | ||
D deleted | ||
M modified | ||
Working copy : kpqxywon bffc5782 (no description set) | ||
Parent commit: rzvqmyuk 11b31a7b (empty) (no description set) | ||
D sparse | ||
Working copy : kmkuslsw 8fd911b4 (no description set) | ||
Parent commit: rzvqmyuk ec4904a3 (empty) (no description set) | ||
"###); | ||
// The modified file should have the same contents it had before (not reset to | ||
// the base contents) | ||
|
@@ -509,9 +530,9 @@ fn test_workspaces_current_op_discarded_by_other() { | |
let (stdout, stderr) = test_env.jj_cmd_ok(&secondary_path, &["obslog"]); | ||
insta::assert_snapshot!(stderr, @""); | ||
insta::assert_snapshot!(stdout, @r###" | ||
@ kpqxywon [email protected] 2001-02-03 04:05:17.000 +07:00 secondary@ bffc5782 | ||
@ kmkuslsw [email protected] 2001-02-03 04:05:18.000 +07:00 secondary@ 8fd911b4 | ||
│ (no description set) | ||
◉ kpqxywon hidden [email protected] 2001-02-03 04:05:17.000 +07:00 1e90e5d2 | ||
◉ kmkuslsw hidden [email protected] 2001-02-03 04:05:18.000 +07:00 30ee0d1f | ||
(empty) (no description set) | ||
"###); | ||
} | ||
|