commands: add additional export test coverage
Add additional integration tests to test various functionality of the `migrate export` command
This commit is contained in:
parent
3ab80db213
commit
966762b8ab
@ -7,26 +7,36 @@ begin_test "migrate export (default branch)"
|
||||
(
|
||||
set -e
|
||||
|
||||
setup_multiple_local_branches
|
||||
setup_multiple_local_branches_tracked
|
||||
|
||||
md_oid="$(calc_oid "$(git cat-file -p :a.md)")"
|
||||
txt_oid="$(calc_oid "$(git cat-file -p :a.txt)")"
|
||||
md_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_oid="$(calc_oid "$(cat a.txt)")"
|
||||
|
||||
git lfs migrate import
|
||||
git checkout my-feature
|
||||
md_feature_oid="$(calc_oid "$(cat a.md)")"
|
||||
git checkout master
|
||||
|
||||
assert_pointer "refs/heads/master" "a.md" "$md_oid" "140"
|
||||
assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120"
|
||||
assert_pointer "refs/heads/my-feature" "a.md" "$md_feature_oid" "30"
|
||||
|
||||
git lfs migrate export --include="*.md, *.txt"
|
||||
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.md" "$md_oid" "140") ]
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120") ]
|
||||
assert_pointer "refs/heads/my-feature" "a.md" "$md_feature_oid" "30"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
feature="$(git rev-parse refs/heads/my-feature)"
|
||||
|
||||
master_attrs="$(git cat-file -p "$master:.gitattributes")"
|
||||
feature_attrs="$(git cat-file -p "$feature:.gitattributes")"
|
||||
|
||||
echo "$master_attrs" | grep -q "*.md text -filter -merge -diff"
|
||||
echo "$master_attrs" | grep -q "*.txt text -filter -merge -diff"
|
||||
|
||||
[ ! $(echo "$feature_attrs" | grep -q "*.md text -filter -merge -diff") ]
|
||||
[ ! $(echo "$feature_attrs" | grep -q "*.txt text -filter -merge -diff") ]
|
||||
)
|
||||
end_test
|
||||
|
||||
@ -36,6 +46,8 @@ begin_test "migrate export (with remote)"
|
||||
|
||||
setup_single_remote_branch_tracked
|
||||
|
||||
git push origin master
|
||||
|
||||
md_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_oid="$(calc_oid "$(cat a.txt)")"
|
||||
|
||||
@ -60,3 +72,228 @@ begin_test "migrate export (with remote)"
|
||||
echo "$master_attrs" | grep -q "*.txt text -filter -merge -diff"
|
||||
)
|
||||
end_test
|
||||
|
||||
begin_test "migrate export (include/exclude args)"
|
||||
(
|
||||
set -e
|
||||
|
||||
setup_multiple_local_branches_tracked
|
||||
|
||||
md_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_oid="$(calc_oid "$(cat a.txt)")"
|
||||
|
||||
assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120"
|
||||
|
||||
git lfs migrate export --include="*" --exclude="a.md"
|
||||
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120") ]
|
||||
assert_pointer "refs/heads/master" "a.md" "$md_oid" "140"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
|
||||
master_attrs="$(git cat-file -p "$master:.gitattributes")"
|
||||
|
||||
echo "$master_attrs" | grep -q "* text -filter -merge -diff"
|
||||
echo "$master_attrs" | grep -q "a.md filter=lfs diff=lfs merge=lfs"
|
||||
|
||||
)
|
||||
end_test
|
||||
|
||||
begin_test "migrate export (bare repository)"
|
||||
(
|
||||
set -e
|
||||
|
||||
setup_single_remote_branch_tracked
|
||||
git push origin master
|
||||
make_bare
|
||||
|
||||
git lfs migrate export --everything --include="*"
|
||||
)
|
||||
end_test
|
||||
|
||||
begin_test "migrate export (given branch)"
|
||||
(
|
||||
set -e
|
||||
|
||||
setup_multiple_local_branches_tracked
|
||||
|
||||
md_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_oid="$(calc_oid "$(cat a.txt)")"
|
||||
|
||||
git checkout my-feature
|
||||
md_feature_oid="$(calc_oid "$(cat a.md)")"
|
||||
git checkout master
|
||||
|
||||
assert_pointer "refs/heads/my-feature" "a.md" "$md_feature_oid" "30"
|
||||
assert_pointer "refs/heads/my-feature" "a.txt" "$txt_oid" "120"
|
||||
assert_pointer "refs/heads/master" "a.md" "$md_oid" "140"
|
||||
assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120"
|
||||
|
||||
git lfs migrate export --include="*.md,*.txt" my-feature
|
||||
|
||||
[ ! $(assert_pointer "refs/heads/my-feature" "a.md" "$md_feature_oid" "30") ]
|
||||
[ ! $(assert_pointer "refs/heads/my-feature" "a.txt" "$txt_oid" "120") ]
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.md" "$md_oid" "140") ]
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120") ]
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
feature="$(git rev-parse refs/heads/my-feature)"
|
||||
|
||||
master_attrs="$(git cat-file -p "$master:.gitattributes")"
|
||||
feature_attrs="$(git cat-file -p "$feature:.gitattributes")"
|
||||
|
||||
echo "$master_attrs" | grep -q "*.md text -filter -merge -diff"
|
||||
echo "$master_attrs" | grep -q "*.txt text -filter -merge -diff"
|
||||
echo "$feature_attrs" | grep -q "*.md text -filter -merge -diff"
|
||||
echo "$feature_attrs" | grep -q "*.txt text -filter -merge -diff"
|
||||
)
|
||||
end_test
|
||||
|
||||
begin_test "migrate export (no filter)"
|
||||
(
|
||||
set -e
|
||||
|
||||
setup_multiple_local_branches_tracked
|
||||
|
||||
git lfs migrate export 2>&1 | tee migrate.log
|
||||
if [ ${PIPESTATUS[0]} -eq 0 ]; then
|
||||
echo >&2 "fatal: expected git lfs migrate export to fail, didn't"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
grep "fatal: one or more files must be specified with --include" migrate.log
|
||||
)
|
||||
end_test
|
||||
|
||||
begin_test "migrate export (exclude remote refs)"
|
||||
(
|
||||
set -e
|
||||
|
||||
setup_single_remote_branch_tracked
|
||||
|
||||
md_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_oid="$(calc_oid "$(cat a.txt)")"
|
||||
|
||||
git checkout refs/remotes/origin/master
|
||||
md_remote_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_remote_oid="$(calc_oid "$(cat a.txt)")"
|
||||
git checkout master
|
||||
|
||||
assert_pointer "refs/heads/master" "a.md" "$md_oid" "50"
|
||||
assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "30"
|
||||
|
||||
assert_pointer "refs/remotes/origin/master" "a.md" "$md_remote_oid" "140"
|
||||
assert_pointer "refs/remotes/origin/master" "a.txt" "$txt_remote_oid" "120"
|
||||
|
||||
git lfs migrate export --include="*.md,*.txt"
|
||||
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.md" "$md_oid" "50") ]
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "30") ]
|
||||
|
||||
assert_pointer "refs/remotes/origin/master" "a.md" "$md_remote_oid" "140"
|
||||
assert_pointer "refs/remotes/origin/master" "a.txt" "$txt_remote_oid" "120"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
remote="$(git rev-parse refs/remotes/origin/master)"
|
||||
|
||||
master_attrs="$(git cat-file -p "$master:.gitattributes")"
|
||||
remote_attrs="$(git cat-file -p "$remote:.gitattributes")"
|
||||
|
||||
echo "$master_attrs" | grep -q "*.md text -filter -merge -diff"
|
||||
echo "$master_attrs" | grep -q "*.txt text -filter -merge -diff"
|
||||
|
||||
[ ! $(echo "$remote_attrs" | grep -q "*.md text -filter -merge -diff") ]
|
||||
[ ! $(echo "$remote_attrs" | grep -q "*.txt text -filter -merge -diff") ]
|
||||
)
|
||||
end_test
|
||||
|
||||
begin_test "migrate export (--skip-fetch)"
|
||||
(
|
||||
set -e
|
||||
|
||||
setup_single_remote_branch_tracked
|
||||
|
||||
md_master_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_master_oid="$(calc_oid "$(cat a.txt)")"
|
||||
|
||||
git checkout refs/remotes/origin/master
|
||||
md_remote_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_remote_oid="$(calc_oid "$(cat a.txt)")"
|
||||
git checkout master
|
||||
|
||||
git tag pseudo-remote "$(git rev-parse refs/remotes/origin/master)"
|
||||
# Remove the refs/remotes/origin/master ref, and instruct 'git lfs migrate' to
|
||||
# not fetch it.
|
||||
git update-ref -d refs/remotes/origin/master
|
||||
|
||||
assert_pointer "refs/heads/master" "a.md" "$md_master_oid" "50"
|
||||
assert_pointer "pseudo-remote" "a.md" "$md_remote_oid" "140"
|
||||
assert_pointer "refs/heads/master" "a.txt" "$txt_master_oid" "30"
|
||||
assert_pointer "pseudo-remote" "a.txt" "$txt_remote_oid" "120"
|
||||
|
||||
git lfs migrate export --skip-fetch --include="*.md,*.txt"
|
||||
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.md" "$md_master_oid" "50") ]
|
||||
[ ! $(assert_pointer "pseudo-remote" "a.md" "$md_remote_oid" "140") ]
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_master_oid" "30") ]
|
||||
[ ! $(assert_pointer "pseudo-remote" "a.txt" "$txt_remote_oid" "120") ]
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
remote="$(git rev-parse pseudo-remote)"
|
||||
|
||||
master_attrs="$(git cat-file -p "$master:.gitattributes")"
|
||||
remote_attrs="$(git cat-file -p "$remote:.gitattributes")"
|
||||
|
||||
echo "$master_attrs" | grep -q "*.md text -filter -merge -diff"
|
||||
echo "$master_attrs" | grep -q "*.txt text -filter -merge -diff"
|
||||
echo "$remote_attrs" | grep -q "*.md text -filter -merge -diff"
|
||||
echo "$remote_attrs" | grep -q "*.txt text -filter -merge -diff"
|
||||
)
|
||||
end_test
|
||||
|
||||
begin_test "migrate export (include/exclude ref)"
|
||||
(
|
||||
set -e
|
||||
|
||||
setup_multiple_remote_branches_gitattrs
|
||||
|
||||
md_master_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_master_oid="$(calc_oid "$(cat a.txt)")"
|
||||
|
||||
git checkout refs/remotes/origin/master
|
||||
md_remote_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_remote_oid="$(calc_oid "$(cat a.txt)")"
|
||||
|
||||
git checkout my-feature
|
||||
md_feature_oid="$(calc_oid "$(cat a.md)")"
|
||||
txt_feature_oid="$(calc_oid "$(cat a.txt)")"
|
||||
|
||||
git checkout master
|
||||
|
||||
git lfs migrate export \
|
||||
--include="*.txt" \
|
||||
--include-ref=refs/heads/my-feature \
|
||||
--exclude-ref=refs/heads/master
|
||||
|
||||
assert_pointer "refs/heads/master" "a.md" "$md_master_oid" "21"
|
||||
assert_pointer "refs/heads/master" "a.txt" "$txt_master_oid" "20"
|
||||
|
||||
assert_pointer "refs/remotes/origin/master" "a.md" "$md_remote_oid" "11"
|
||||
assert_pointer "refs/remotes/origin/master" "a.txt" "$txt_remote_oid" "10"
|
||||
|
||||
assert_pointer "refs/heads/my-feature" "a.md" "$md_feature_oid" "31"
|
||||
[ ! $(assert_pointer "refs/heads/my-feature" "a.txt" "$txt_feature_oid" "30") ]
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
feature="$(git rev-parse refs/heads/my-feature)"
|
||||
remote="$(git rev-parse refs/remotes/origin/master)"
|
||||
|
||||
master_attrs="$(git cat-file -p "$master:.gitattributes")"
|
||||
remote_attrs="$(git cat-file -p "$remote:.gitattributes")"
|
||||
feature_attrs="$(git cat-file -p "$feature:.gitattributes")"
|
||||
|
||||
[ ! $(echo "$master_attrs" | grep -q "*.txt text -filter -merge -diff") ]
|
||||
[ ! $(echo "$remote_attrs" | grep -q "*.txt text -filter -merge -diff") ]
|
||||
echo "$feature_attrs" | grep -q "*.txt text -filter -merge -diff"
|
||||
)
|
||||
end_test
|
||||
|
@ -134,6 +134,36 @@ setup_multiple_local_branches_with_gitattrs() {
|
||||
git commit -m "add .gitattributes"
|
||||
}
|
||||
|
||||
# setup_multiple_local_branches_tracked creates a repo with exactly the same
|
||||
# structure as in setup_multiple_local_branches, but with all files tracked by
|
||||
# Git LFS
|
||||
setup_multiple_local_branches_tracked() {
|
||||
set -e
|
||||
|
||||
reponame="migrate-info-multiple-local-branches"
|
||||
|
||||
remove_and_create_local_repo "$reponame"
|
||||
|
||||
git lfs track "*.txt" "*.md"
|
||||
git add .gitattributes
|
||||
git commit -m "initial commit"
|
||||
|
||||
base64 < /dev/urandom | head -c 120 > a.txt
|
||||
base64 < /dev/urandom | head -c 140 > a.md
|
||||
|
||||
git add a.txt a.md
|
||||
git commit -m "add a.{txt,md}"
|
||||
|
||||
git checkout -b my-feature
|
||||
|
||||
base64 < /dev/urandom | head -c 30 > a.md
|
||||
|
||||
git add a.md
|
||||
git commit -m "add an additional 30 bytes to a.md"
|
||||
|
||||
git checkout master
|
||||
}
|
||||
|
||||
# setup_local_branch_with_space creates a repository as follows:
|
||||
#
|
||||
# A
|
||||
@ -202,7 +232,7 @@ setup_single_remote_branch_with_gitattrs() {
|
||||
}
|
||||
|
||||
# Creates a repo identical to setup_single_remote_branch, except with *.md and
|
||||
# *.txt files tracked by Git LFS, and all commits pushed to master
|
||||
# *.txt files tracked by Git LFS
|
||||
setup_single_remote_branch_tracked() {
|
||||
set -e
|
||||
|
||||
@ -227,8 +257,6 @@ setup_single_remote_branch_tracked() {
|
||||
|
||||
git add a.md a.txt
|
||||
git commit -m "add an additional 30, 50 bytes to a.{txt,md}"
|
||||
|
||||
git push origin master
|
||||
}
|
||||
|
||||
# setup_multiple_remote_branches creates a repository as follows:
|
||||
@ -277,6 +305,41 @@ setup_multiple_remote_branches() {
|
||||
git checkout master
|
||||
}
|
||||
|
||||
# Creates a repo identical to that in setup_multiple_remote_branches(), but
|
||||
# with all files tracked by Git LFS
|
||||
setup_multiple_remote_branches_gitattrs() {
|
||||
set -e
|
||||
|
||||
reponame="migrate-info-exclude-remote-refs-given-branch"
|
||||
|
||||
remove_and_create_remote_repo "$reponame"
|
||||
|
||||
git lfs track "*.txt" "*.md"
|
||||
git add .gitattributes
|
||||
git commit -m "initial commit"
|
||||
|
||||
base64 < /dev/urandom | head -c 10 > a.txt
|
||||
base64 < /dev/urandom | head -c 11 > a.md
|
||||
git add a.txt a.md
|
||||
git commit -m "add 10, 11 bytes, a.{txt,md}"
|
||||
|
||||
git push origin master
|
||||
|
||||
base64 < /dev/urandom | head -c 20 > a.txt
|
||||
base64 < /dev/urandom | head -c 21 > a.md
|
||||
git add a.txt a.md
|
||||
git commit -m "add 20, 21 bytes, a.{txt,md}"
|
||||
|
||||
git checkout -b my-feature
|
||||
|
||||
base64 < /dev/urandom | head -c 30 > a.txt
|
||||
base64 < /dev/urandom | head -c 31 > a.md
|
||||
git add a.txt a.md
|
||||
git commit -m "add 30, 31 bytes, a.{txt,md}"
|
||||
|
||||
git checkout master
|
||||
}
|
||||
|
||||
# setup_single_local_branch_with_tags creates a repository as follows:
|
||||
#
|
||||
# A---B
|
||||
|
Loading…
Reference in New Issue
Block a user