github.com/stffabi/git-lfs@v2.3.5-0.20180214015214-8eeaa8d88902+incompatible/test/test-locks.sh (about) 1 #!/usr/bin/env bash 2 3 . "test/testlib.sh" 4 5 begin_test "list a single lock with bad ref" 6 ( 7 set -e 8 9 reponame="locks-list-other-branch-required" 10 setup_remote_repo "$reponame" 11 clone_repo "$reponame" "$reponame" 12 13 git lfs track "*.dat" 14 echo "f" > f.dat 15 git add .gitattributes f.dat 16 git commit -m "add f.dat" 17 git push origin master:other 18 19 git checkout -b other 20 git lfs lock --json "f.dat" | tee lock.log 21 22 git checkout master 23 git lfs locks --path "f.dat" 2>&1 | tee locks.log 24 if [ "0" -eq "${PIPESTATUS[0]}" ]; then 25 echo >&2 "fatal: expected 'git lfs lock \'a.dat\'' to fail" 26 exit 1 27 fi 28 29 grep 'Expected ref "refs/heads/other", got "refs/heads/master"' locks.log 30 ) 31 end_test 32 33 begin_test "list a single lock" 34 ( 35 set -e 36 37 reponame="locks-list-master-branch-required" 38 setup_remote_repo_with_file "$reponame" "f.dat" 39 clone_repo "$reponame" "$reponame" 40 41 git lfs lock --json "f.dat" | tee lock.log 42 43 id=$(assert_lock lock.log f.dat) 44 assert_server_lock "$reponame" "$id" "refs/heads/master" 45 46 git lfs locks --path "f.dat" | tee locks.log 47 [ $(wc -l < locks.log) -eq 1 ] 48 grep "f.dat" locks.log 49 grep "Git LFS Tests" locks.log 50 ) 51 end_test 52 53 begin_test "list a single lock (--json)" 54 ( 55 set -e 56 57 reponame="locks_list_single_json" 58 setup_remote_repo_with_file "$reponame" "f_json.dat" 59 60 git lfs lock --json "f_json.dat" | tee lock.log 61 62 id=$(assert_lock lock.log f_json.dat) 63 assert_server_lock "$reponame" "$id" 64 65 git lfs locks --json --path "f_json.dat" | tee locks.log 66 grep "\"path\":\"f_json.dat\"" locks.log 67 grep "\"owner\":{\"name\":\"Git LFS Tests\"}" locks.log 68 ) 69 end_test 70 71 begin_test "list locks with a limit" 72 ( 73 set -e 74 75 reponame="locks_list_limit" 76 setup_remote_repo "$reponame" 77 clone_repo "$reponame" "clone_$reponame" 78 79 git lfs track "*.dat" 80 echo "foo" > "g_1.dat" 81 echo "bar" > "g_2.dat" 82 83 git add "g_1.dat" "g_2.dat" ".gitattributes" 84 git commit -m "add files" | tee commit.log 85 grep "3 files changed" commit.log 86 grep "create mode 100644 g_1.dat" commit.log 87 grep "create mode 100644 g_2.dat" commit.log 88 grep "create mode 100644 .gitattributes" commit.log 89 90 91 git push origin master 2>&1 | tee push.log 92 grep "master -> master" push.log 93 94 git lfs lock --json "g_1.dat" | tee lock.log 95 assert_server_lock "$reponame" "$(assert_log "lock.log" g_1.dat)" 96 97 git lfs lock --json "g_2.dat" | tee lock.log 98 assert_server_lock "$reponame" "$(assert_lock "lock.log" g_2.dat)" 99 100 git lfs locks --limit 1 | tee locks.log 101 [ $(wc -l < locks.log) -eq 1 ] 102 ) 103 end_test 104 105 begin_test "list locks with pagination" 106 ( 107 set -e 108 109 reponame="locks_list_paginate" 110 setup_remote_repo "$reponame" 111 clone_repo "$reponame" "clone_$reponame" 112 113 git lfs track "*.dat" 114 for i in $(seq 1 5); do 115 echo "$i" > "h_$i.dat" 116 done 117 118 git add "h_1.dat" "h_2.dat" "h_3.dat" "h_4.dat" "h_5.dat" ".gitattributes" 119 120 git commit -m "add files" | tee commit.log 121 grep "6 files changed" commit.log 122 for i in $(seq 1 5); do 123 grep "create mode 100644 h_$i.dat" commit.log 124 done 125 grep "create mode 100644 .gitattributes" commit.log 126 127 git push origin master 2>&1 | tee push.log 128 grep "master -> master" push.log 129 130 for i in $(seq 1 5); do 131 git lfs lock --json "h_$i.dat" | tee lock.log 132 assert_server_lock "$reponame" "$(assert_lock "lock.log" "h_$1.dat")" 133 done 134 135 # The server will return, at most, three locks at a time 136 git lfs locks --limit 4 | tee locks.log 137 [ $(wc -l < locks.log) -eq 4 ] 138 ) 139 end_test 140 141 begin_test "cached locks" 142 ( 143 set -e 144 145 reponame="cached_locks" 146 setup_remote_repo "remote_$reponame" 147 clone_repo "remote_$reponame" "clone_$reponame" 148 149 git lfs track "*.dat" 150 echo "foo" > "cached1.dat" 151 echo "bar" > "cached2.dat" 152 153 git add "cached1.dat" "cached2.dat" ".gitattributes" 154 git commit -m "add files" | tee commit.log 155 grep "3 files changed" commit.log 156 grep "create mode 100644 cached1.dat" commit.log 157 grep "create mode 100644 cached2.dat" commit.log 158 grep "create mode 100644 .gitattributes" commit.log 159 160 git push origin master 2>&1 | tee push.log 161 grep "master -> master" push.log 162 163 git lfs lock --json "cached1.dat" | tee lock.log 164 assert_server_lock "$(assert_lock "lock.log" cached1.dat)" 165 166 git lfs lock --json "cached2.dat" | tee lock.log 167 assert_server_lock "$(assert_lock "lock.log" cached2.dat)" 168 169 git lfs locks --local | tee locks.log 170 [ $(wc -l < locks.log) -eq 2 ] 171 172 # delete the remote to prove we're using the local records 173 git remote remove origin 174 175 git lfs locks --local --path "cached1.dat" | tee locks.log 176 [ $(wc -l < locks.log) -eq 1 ] 177 grep "cached1.dat" locks.log 178 179 git lfs locks --local --limit 1 | tee locks.log 180 [ $(wc -l < locks.log) -eq 1 ] 181 ) 182 end_test