filter-repo: add testcases for --[to-]subdirectory-filter

Signed-off-by: Elijah Newren <newren@gmail.com>
This commit is contained in:
Elijah Newren 2019-03-07 17:38:12 -08:00
parent 1f0e57bada
commit 2b2ab0422e

View File

@ -140,16 +140,19 @@ test_expect_success '--path-rename inability to squash' '
)
'
test_expect_success 'setup tag_rename' '
test_create_repo tag_rename &&
test_expect_success 'more setup' '
test_create_repo metasyntactic &&
(
cd tag_rename &&
cd metasyntactic &&
weird_name=$(printf "file\tna\nme") &&
echo "funny" >"$weird_name" &&
mkdir numbers &&
test_seq 1 10 >numbers/small &&
test_seq 100 110 >numbers/medium &&
git add numbers &&
git add "$weird_name" numbers &&
git commit -m initial &&
git tag v1.0 &&
git tag -a -m v1.1 v1.1 &&
mkdir words &&
echo foo >words/important &&
@ -161,27 +164,67 @@ test_expect_success 'setup tag_rename' '
git tag v2.0 &&
echo spam >words/to &&
echo spam >words/know &&
echo eggs >words/know &&
git add words
git rm "$weird_name" &&
git commit -m more.words &&
git tag -a -m "Look, ma, I made a tag" v3.0
)
'
test_expect_success 'check --tag-rename' '
test_expect_success '--tag-rename' '
(
git clone file://"$(pwd)"/tag_rename tag_rename_actual &&
cd tag_rename_actual &&
git clone file://"$(pwd)"/metasyntactic tag_rename &&
cd tag_rename &&
git filter-repo \
--tag-rename "":"myrepo-" \
--path words &&
test_must_fail git cat-file -t v1.0 &&
test_must_fail git cat-file -t v1.1 &&
test_must_fail git cat-file -t v2.0 &&
test_must_fail git cat-file -t v3.0 &&
test_must_fail git cat-file -t myrepo-v1.0 &&
test_must_fail git cat-file -t myrepo-v1.1 &&
test $(git cat-file -t myrepo-v2.0) = commit &&
test $(git cat-file -t myrepo-v3.0) = tag
)
'
test_expect_success '--subdirectory-filter' '
(
git clone file://"$(pwd)"/metasyntactic subdir_filter &&
cd subdir_filter &&
git filter-repo \
--subdirectory-filter words &&
git cat-file --batch-check --batch-all-objects >all-objs &&
test_line_count = 10 all-objs &&
git log --format=%n --name-only | sort | uniq >filenames &&
test_line_count = 6 filenames &&
grep ^important$ filenames &&
test_must_fail git cat-file -t v1.0 &&
test_must_fail git cat-file -t v1.1 &&
test $(git cat-file -t v2.0) = commit &&
test $(git cat-file -t v3.0) = tag
)
'
test_expect_success '--to-subdirectory-filter' '
(
git clone file://"$(pwd)"/metasyntactic to_subdir_filter &&
cd to_subdir_filter &&
git filter-repo \
--to-subdirectory-filter mysubdir &&
git cat-file --batch-check --batch-all-objects >all-objs &&
test_line_count = 22 all-objs &&
git log --format=%n --name-only | sort | uniq >filenames &&
test_line_count = 9 filenames &&
grep "^\"mysubdir/file\\\\tna\\\\nme\"$" filenames &&
grep ^mysubdir/words/important$ filenames &&
test $(git cat-file -t v1.0) = commit &&
test $(git cat-file -t v1.1) = tag &&
test $(git cat-file -t v2.0) = commit &&
test $(git cat-file -t v3.0) = tag
)
'
test_done