mirror of
https://github.com/newren/git-filter-repo.git
synced 2024-08-30 00:01:30 +02:00
filter-repo: add various --path-rename tests
Signed-off-by: Elijah Newren <newren@gmail.com>
This commit is contained in:
parent
20385ead8f
commit
5ef6aeba16
@ -43,4 +43,101 @@ filter_testcase degenerate degenerate-keepme --path moduleA/keepme
|
|||||||
filter_testcase degenerate degenerate-moduleA --path moduleA
|
filter_testcase degenerate degenerate-moduleA --path moduleA
|
||||||
filter_testcase degenerate degenerate-globme --path-glob *me
|
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
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user