2015-07-30 02:37:31 +00:00
#!/usr/bin/env bash
2015-05-26 21:49:04 +00:00
. "test/testlib.sh"
2015-05-26 22:08:03 +00:00
begin_test "update"
2015-05-26 21:49:04 +00:00
(
set -e
pre_push_hook = " #!/bin/sh
2015-08-14 15:59:16 +00:00
command -v git-lfs >/dev/null 2>& 1 || { echo >& 2 \" \\ nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting .git/hooks/pre-push.\\ n\" ; exit 2; }
2015-05-26 21:49:04 +00:00
git lfs pre-push \" \$ @\" "
mkdir without-pre-push
cd without-pre-push
git init
2015-08-13 23:12:17 +00:00
[ "Updated pre-push hook." = " $( git lfs update) " ]
2015-05-26 22:15:52 +00:00
[ " $pre_push_hook " = " $( cat .git/hooks/pre-push) " ]
2015-05-26 21:49:04 +00:00
# run it again
2015-08-13 23:12:17 +00:00
[ "Updated pre-push hook." = " $( git lfs update) " ]
2015-05-26 22:15:52 +00:00
[ " $pre_push_hook " = " $( cat .git/hooks/pre-push) " ]
2015-05-26 21:49:04 +00:00
# replace old hook 1
echo " #!/bin/sh
git lfs push --stdin \$ *" > .git/hooks/pre-push
2015-08-13 23:12:17 +00:00
[ "Updated pre-push hook." = " $( git lfs update) " ]
2015-05-26 22:15:52 +00:00
[ " $pre_push_hook " = " $( cat .git/hooks/pre-push) " ]
2015-05-26 21:49:04 +00:00
# replace old hook 2
echo " #!/bin/sh
git lfs push --stdin \" \$ @\" " > .git/hooks/pre-push
2015-08-13 23:12:17 +00:00
[ "Updated pre-push hook." = " $( git lfs update) " ]
2015-05-26 22:15:52 +00:00
[ " $pre_push_hook " = " $( cat .git/hooks/pre-push) " ]
2015-05-26 21:49:04 +00:00
2015-05-27 21:40:16 +00:00
# replace old hook 3
echo " #!/bin/sh
git lfs pre-push \" \$ @\" " > .git/hooks/pre-push
2015-08-13 23:12:17 +00:00
[ "Updated pre-push hook." = " $( git lfs update) " ]
[ " $pre_push_hook " = " $( cat .git/hooks/pre-push) " ]
# replace old hook 4
echo " #!/bin/sh
command -v git-lfs >/dev/null 2>& 1 || { echo >& 2 \" \\ nThis repository has been set up with Git LFS but Git LFS is not installed.\\ n\" ; exit 0; }
git lfs pre-push \" $@ \" "
[ "Updated pre-push hook." = " $( git lfs update) " ]
[ " $pre_push_hook " = " $( cat .git/hooks/pre-push) " ]
# replace old hook 5
echo " #!/bin/sh
command -v git-lfs >/dev/null 2>& 1 || { echo >& 2 \" \\ nThis repository has been set up with Git LFS but Git LFS is not installed.\\ n\" ; exit 2; }
git lfs pre-push \" $@ \" "
[ "Updated pre-push hook." = " $( git lfs update) " ]
2015-05-27 21:40:16 +00:00
[ " $pre_push_hook " = " $( cat .git/hooks/pre-push) " ]
2015-05-26 21:49:04 +00:00
# don't replace unexpected hook
echo "test" > .git/hooks/pre-push
expected = " Hook already exists: pre-push
test
Run \` git lfs update --force\` to overwrite this hook."
2015-05-26 22:15:52 +00:00
[ " $expected " = " $( git lfs update 2>& 1) " ]
[ "test" = " $( cat .git/hooks/pre-push) " ]
2015-05-26 21:49:04 +00:00
# force replace unexpected hook
2015-08-13 23:12:17 +00:00
[ "Updated pre-push hook." = " $( git lfs update --force) " ]
2015-05-26 22:15:52 +00:00
[ " $pre_push_hook " = " $( cat .git/hooks/pre-push) " ]
2015-09-17 22:26:02 +00:00
2015-10-26 23:12:15 +00:00
has_test_dir || exit 0
2015-09-30 23:38:13 +00:00
2015-09-17 22:26:02 +00:00
echo "test with bare repository"
cd ..
git clone --mirror without-pre-push bare
cd bare
2015-09-17 22:37:25 +00:00
git lfs env
2015-09-17 22:26:02 +00:00
git lfs update
2015-09-17 22:37:25 +00:00
ls -al hooks
2015-09-17 22:26:02 +00:00
[ " $pre_push_hook " = " $( cat hooks/pre-push) " ]
2015-05-26 21:49:04 +00:00
)
end_test
2015-09-02 19:25:34 +00:00
begin_test "update lfs.{url}.access"
(
set -e
mkdir update-access
cd update-access
git init
git config lfs.http://example.com.access private
git config lfs.https://example.com.access private
git config lfs.https://example2.com.access basic
git config lfs.https://example3.com.access other
[ "private" = " $( git config lfs.http://example.com.access) " ]
[ "private" = " $( git config lfs.https://example.com.access) " ]
[ "basic" = " $( git config lfs.https://example2.com.access) " ]
[ "other" = " $( git config lfs.https://example3.com.access) " ]
expected = " Updated pre-push hook.
Updated http://example.com access from private to basic.
Updated https://example.com access from private to basic.
Removed invalid https://example3.com access of other."
)
end_test
2015-09-08 15:29:53 +00:00
begin_test "update: outside git repository"
(
2015-10-19 20:47:18 +00:00
if [ -d "hooks" ] ; then
ls -al
echo "hooks dir exists"
exit 1
fi
2015-09-08 16:20:52 +00:00
set +e
git lfs update 2>& 1 > check.log
res = $?
2015-09-08 15:29:53 +00:00
set -e
2015-10-19 20:47:18 +00:00
2015-09-08 20:12:51 +00:00
if [ " $res " = "0" ] ; then
2015-10-19 20:47:18 +00:00
if [ -z " $GIT_LFS_TEST_DIR " ] ; then
echo " Passes because $GIT_LFS_TEST_DIR is unset. "
exit 0
fi
2015-09-08 20:12:51 +00:00
fi
2015-10-19 20:47:18 +00:00
2015-09-08 16:20:52 +00:00
[ " $res " = "128" ]
2015-10-19 20:47:18 +00:00
if [ -d "hooks" ] ; then
ls -al
echo "hooks dir exists"
exit 1
fi
cat check.log
2015-09-08 16:20:52 +00:00
grep "Not in a git repository" check.log
2015-09-08 15:29:53 +00:00
)
end_test