From 5ef6aeba16d51ee4328fd336cce67e44c5aaa1a8 Mon Sep 17 00:00:00 2001 From: Elijah Newren Date: Thu, 7 Mar 2019 10:49:39 -0800 Subject: [PATCH] filter-repo: add various --path-rename tests Signed-off-by: Elijah Newren --- t/t9390-filter-repo.sh | 97 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/t/t9390-filter-repo.sh b/t/t9390-filter-repo.sh index 66981a0..b66c58f 100755 --- a/t/t9390-filter-repo.sh +++ b/t/t9390-filter-repo.sh @@ -43,4 +43,101 @@ filter_testcase degenerate degenerate-keepme --path moduleA/keepme filter_testcase degenerate degenerate-moduleA --path moduleA filter_testcase degenerate degenerate-globme --path-glob *me +test_expect_success 'setup path_rename' ' + test_create_repo path_rename && + ( + cd path_rename && + mkdir sequences values && + test_seq 1 10 >sequences/tiny && + test_seq 100 110 >sequences/intermediate && + test_seq 1000 1010 >sequences/large && + test_seq 1000 1010 >values/large && + test_seq 10000 10010 >values/huge && + git add sequences values && + git commit -m initial && + + git mv sequences/tiny sequences/small && + cp sequences/intermediate sequences/medium && + echo 10011 >values/huge && + git add sequences values && + git commit -m updates && + + git rm sequences/intermediate && + echo 11 >sequences/small && + git add sequences/small && + git commit -m changes && + + echo 1011 >sequences/medium && + git add sequences/medium && + git commit -m final + ) +' + +test_expect_success '--path-rename sequences/tiny:sequences/small' ' + ( + git clone file://"$(pwd)"/path_rename path_rename_single && + cd path_rename_single && + git filter-repo --path-rename sequences/tiny:sequences/small && + git log --format=%n --name-only | sort | uniq >filenames && + test_line_count = 7 filenames && + ! grep sequences/tiny filenames && + git rev-parse HEAD~3:sequences/small + ) +' + +test_expect_success '--path-rename sequences:numbers' ' + ( + git clone file://"$(pwd)"/path_rename path_rename_dir && + cd path_rename_dir && + git filter-repo --path-rename sequences:numbers && + git log --format=%n --name-only | sort | uniq >filenames && + test_line_count = 8 filenames && + ! grep sequences/ filenames && + grep numbers/ filenames && + grep values/ filenames + ) +' + +test_expect_success '--path-rename-prefix values:numbers' ' + ( + git clone file://"$(pwd)"/path_rename path_rename_dir_2 && + cd path_rename_dir_2 && + git filter-repo --path-rename values/:numbers/ && + git log --format=%n --name-only | sort | uniq >filenames && + test_line_count = 8 filenames && + ! grep values/ filenames && + grep sequences/ filenames && + grep numbers/ filenames + ) +' + +test_expect_success '--path-rename squashing' ' + ( + git clone file://"$(pwd)"/path_rename path_rename_squash && + cd path_rename_squash && + git filter-repo \ + --path-rename sequences/tiny:sequences/small \ + --path-rename sequences:numbers \ + --path-rename values:numbers \ + --path-rename numbers/intermediate:numbers/medium && + git log --format=%n --name-only | sort | uniq >filenames && + # Just small, medium, large, huge, and a blank line... + test_line_count = 5 filenames && + ! grep sequences/ filenames && + ! grep values/ filenames && + grep numbers/ filenames + ) +' + +test_expect_success '--path-rename inability to squash' ' + ( + git clone file://"$(pwd)"/path_rename path_rename_bad_squash && + cd path_rename_bad_squash && + test_must_fail git filter-repo \ + --path-rename values/large:values/big \ + --path-rename values/huge:values/big 2>../err && + test_i18ngrep "File renaming caused colliding pathnames" ../err + ) +' + test_done