Skip to content

Commit 03d6ab8

Browse files
fix(move fixup): correctly squash renamed files
1 parent 928d3c7 commit 03d6ab8

1 file changed

Lines changed: 90 additions & 0 deletions

File tree

git-branchless/tests/test_move.rs

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6416,6 +6416,96 @@ fn test_move_fixup_deleted_files() -> eyre::Result<()> {
64166416
Ok(())
64176417
}
64186418

6419+
#[test]
6420+
fn test_move_fixup_renamed_files() -> eyre::Result<()> {
6421+
let git = make_git()?;
6422+
git.init_repo()?;
6423+
git.detach_head()?;
6424+
6425+
git.commit_file("test1", 1)?;
6426+
git.commit_file("test2", 2)?;
6427+
6428+
git.run(&["mv", "test1.txt", "test1-renamed.txt"])?;
6429+
git.run(&["commit", "-m", "rename test1"])?;
6430+
6431+
git.write_file_txt("test2", "new contents")?;
6432+
git.run(&["add", "."])?;
6433+
git.run(&["commit", "-m", "update test2"])?;
6434+
6435+
{
6436+
let (stdout, _stderr) = git.branchless("smartlog", &[])?;
6437+
insta::assert_snapshot!(stdout, @"
6438+
O f777ecc (master) create initial.txt
6439+
|
6440+
o 62fc20d create test1.txt
6441+
|
6442+
o 96d1c37 create test2.txt
6443+
|
6444+
o 7111570 rename test1
6445+
|
6446+
@ bdef94f update test2
6447+
");
6448+
6449+
let (stdout, _stderr) = git.run(&["ls-files"])?;
6450+
insta::assert_snapshot!(stdout, @"
6451+
initial.txt
6452+
test1-renamed.txt
6453+
test2.txt
6454+
");
6455+
6456+
let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?;
6457+
insta::assert_snapshot!(&stdout, @"
6458+
test1.txt => test1-renamed.txt | 0
6459+
1 file changed, 0 insertions(+), 0 deletions(-)
6460+
");
6461+
6462+
let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~~"])?;
6463+
insta::assert_snapshot!(&stdout, @"
6464+
test2.txt | 1 +
6465+
1 file changed, 1 insertion(+)
6466+
");
6467+
}
6468+
6469+
{
6470+
let (stdout, _stderr) = git.branchless(
6471+
"move",
6472+
&["--in-memory", "--fixup", "-x", "HEAD~", "-d", "HEAD~~"],
6473+
)?;
6474+
6475+
insta::assert_snapshot!(stdout, @"
6476+
Attempting rebase in-memory...
6477+
[1/2] Committed as: b2e638e create test2.txt
6478+
[2/2] Committed as: 8b45ead update test2
6479+
branchless: processing 3 rewritten commits
6480+
branchless: running command: <git-executable> checkout 8b45ead20e7afdc53784baf7f3a48c0733147669 --
6481+
O f777ecc (master) create initial.txt
6482+
|
6483+
o 62fc20d create test1.txt
6484+
|
6485+
o b2e638e create test2.txt
6486+
|
6487+
@ 8b45ead update test2
6488+
In-memory rebase succeeded.
6489+
");
6490+
6491+
let (stdout, _stderr) = git.run(&["ls-files"])?;
6492+
insta::assert_snapshot!(stdout, @"
6493+
initial.txt
6494+
test1-renamed.txt
6495+
test2.txt
6496+
");
6497+
6498+
let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?;
6499+
insta::assert_snapshot!(&stdout, @"
6500+
test1.txt => test1-renamed.txt | 0
6501+
test2.txt | 1 +
6502+
2 files changed, 1 insertion(+)
6503+
");
6504+
}
6505+
6506+
Ok(())
6507+
}
6508+
64196509
#[test]
64206510
fn test_move_reparent() -> eyre::Result<()> {
64216511
let git = make_git()?;

0 commit comments

Comments
 (0)