git-lfs/test/test-unlock.sh

204 lines
4.6 KiB
Bash
Raw Normal View History

2016-06-03 21:00:57 +00:00
#!/usr/bin/env bash
. "test/testlib.sh"
begin_test "unlocking a lock by path"
(
set -e
reponame="unlock_by_path"
2016-06-03 21:05:55 +00:00
setup_remote_repo_with_file "unlock_by_path" "c.dat"
2016-06-03 21:00:57 +00:00
git lfs lock --json "c.dat" | tee lock.log
2016-06-03 21:00:57 +00:00
id=$(assert_lock lock.log c.dat)
assert_server_lock "$reponame" "$id"
2016-06-03 21:00:57 +00:00
git lfs unlock "c.dat" 2>&1 | tee unlock.log
refute_server_lock "$reponame" "$id"
2016-06-03 21:00:57 +00:00
)
end_test
begin_test "force unlocking lock with missing file"
(
set -e
reponame="force-unlock-missing-file"
setup_remote_repo_with_file "$reponame" "a.dat"
git lfs lock --json "a.dat" | tee lock.log
id=$(assert_lock lock.log a.dat)
assert_server_lock "$reponame" "$id"
git rm a.dat
git commit -m "a.dat"
rm *.log *.json # ensure clean git status
git status
git lfs unlock "a.dat" 2>&1 | tee unlock.log
grep "Unable to determine path" unlock.log
assert_server_lock "$reponame" "$id"
rm unlock.log
git lfs unlock --force "a.dat" 2>&1 | tee unlock.log
refute_server_lock "$reponame" "$id"
)
end_test
2016-12-28 00:16:00 +00:00
begin_test "unlocking a lock (--json)"
(
set -e
reponame="unlock_by_path_json"
setup_remote_repo_with_file "$reponame" "c_json.dat"
2016-12-28 00:16:00 +00:00
git lfs lock --json "c_json.dat" | tee lock.log
2016-12-28 00:16:00 +00:00
id=$(assert_lock lock.log c_json.dat)
assert_server_lock "$reponame" "$id"
2016-12-28 00:16:00 +00:00
git lfs unlock --json "c_json.dat" 2>&1 | tee unlock.log
2016-12-28 00:16:00 +00:00
grep "\"unlocked\":true" unlock.log
refute_server_lock "$reponame" "$id"
2016-12-28 00:16:00 +00:00
)
end_test
2016-06-03 21:00:57 +00:00
begin_test "unlocking a lock by id"
(
set -e
reponame="unlock_by_id"
2016-06-03 21:05:55 +00:00
setup_remote_repo_with_file "unlock_by_id" "d.dat"
2016-06-03 21:00:57 +00:00
git lfs lock --json "d.dat" | tee lock.log
2016-06-03 21:00:57 +00:00
id=$(assert_lock lock.log d.dat)
assert_server_lock "$reponame" "$id"
2016-06-03 21:00:57 +00:00
git lfs unlock --id="$id"
refute_server_lock "$reponame" "$id"
2016-06-03 21:00:57 +00:00
)
end_test
begin_test "unlocking a lock without sufficient info"
(
set -e
reponame="unlock_ambiguous"
setup_remote_repo_with_file "$reponame" "e.dat"
2016-06-03 21:00:57 +00:00
git lfs lock --json "e.dat" | tee lock.log
2016-06-03 21:00:57 +00:00
id=$(assert_lock lock.log e.dat)
assert_server_lock "$reponame" "$id"
2016-06-03 21:00:57 +00:00
git lfs unlock 2>&1 | tee unlock.log
2016-06-03 21:00:57 +00:00
grep "Usage: git lfs unlock" unlock.log
assert_server_lock "$reponame" "$id"
2016-06-03 21:00:57 +00:00
)
end_test
begin_test "unlocking a lock while uncommitted"
(
set -e
reponame="unlock_modified"
2017-01-30 17:09:41 +00:00
setup_remote_repo_with_file "$reponame" "mod.dat"
git lfs lock --json "mod.dat" | tee lock.log
id=$(assert_lock lock.log mod.dat)
assert_server_lock "$reponame" "$id"
2017-01-30 17:09:41 +00:00
echo "\nSomething" >> mod.dat
git lfs unlock "mod.dat" 2>&1 | tee unlock.log
[ ${PIPESTATUS[0]} -ne "0" ]
grep "Cannot unlock file with uncommitted changes" unlock.log
assert_server_lock "$reponame" "$id"
# should allow after discard
2017-01-30 17:09:41 +00:00
git checkout mod.dat
git lfs unlock "mod.dat" 2>&1 | tee unlock.log
refute_server_lock "$reponame" "$id"
)
end_test
begin_test "unlocking a lock with ambiguious arguments"
(
set -e
reponame="unlock_ambiguious_args"
setup_remote_repo_with_file "$reponame" "a.dat"
git lfs lock --json "a.dat" | tee lock.log
id=$(assert_lock lock.log a.dat)
assert_server_lock "$reponame" "$id"
git lfs unlock --id "$id" a.dat 2>&1 | tee unlock.log
if [ "0" -eq "${PIPESTATUS[0]}" ]; then
echo >&2 "expected ambiguous \`git lfs unlock\` command to exit, didn't"
exit 1
fi
grep "Usage:" unlock.log
assert_server_lock "$reponame" "$id"
)
end_test
begin_test "unlocking a lock while uncommitted with --force"
(
set -e
reponame="unlock_modified_force"
2017-01-30 17:09:41 +00:00
setup_remote_repo_with_file "$reponame" "modforce.dat"
git lfs lock --json "modforce.dat" | tee lock.log
id=$(assert_lock lock.log modforce.dat)
assert_server_lock "$reponame" "$id"
2017-01-30 17:09:41 +00:00
echo "\nSomething" >> modforce.dat
# should allow with --force
git lfs unlock --force "modforce.dat" 2>&1 | tee unlock.log
grep "Warning: unlocking with uncommitted changes" unlock.log
refute_server_lock "$reponame" "$id"
)
end_test
2017-02-03 09:44:29 +00:00
begin_test "unlocking a lock while untracked"
(
set -e
reponame="unlock_untracked"
setup_remote_repo_with_file "$reponame" "notrelevant.dat"
git lfs track "*.dat"
# Create file but don't add it to git
# Shouldn't be able to unlock it
echo "something" > untracked.dat
git lfs lock --json "untracked.dat" | tee lock.log
2017-02-03 09:44:29 +00:00
id=$(assert_lock lock.log untracked.dat)
2017-02-03 09:44:29 +00:00
assert_server_lock "$reponame" "$id"
git lfs unlock "untracked.dat" 2>&1 | tee unlock.log
2017-02-03 09:44:29 +00:00
[ ${PIPESTATUS[0]} -ne "0" ]
grep "Cannot unlock file with uncommitted changes" unlock.log
assert_server_lock "$reponame" "$id"
# should allow after add/commit
git add untracked.dat
git commit -m "Added untracked"
git lfs unlock "untracked.dat" 2>&1 | tee unlock.log
2017-02-03 09:44:29 +00:00
refute_server_lock "$reponame" "$id"
)
end_test