Imported Upstream version 2.5.1
[scm/test.git] / t / t-push-failures-remote.sh
1 #!/usr/bin/env bash
2
3 . "$(dirname "$0")/testlib.sh"
4
5 # push_fail_test preforms a test expecting a `git lfs push` to fail given the
6 # contents of a particular file contained within that push. The Git server used
7 # during tests has certain special cases that are triggered by finding specific
8 # keywords within a file (as given by the first argument).
9 #
10 # An optional second argument can be included, "msg", that assert that the
11 # contents "msg" was included in the output of a `git lfs push`.
12 push_fail_test() {
13   local contents="$1"
14   local msg="$2"
15
16   set -e
17
18   local reponame="$(basename "$0" ".sh")-$contents"
19   setup_remote_repo "$reponame"
20   clone_repo "$reponame" "$reponame"
21
22   git lfs track "*.dat"
23   printf "hi" > good.dat
24   printf "$contents" > bad.dat
25   git add .gitattributes good.dat bad.dat
26   git commit -m "welp"
27
28   set +e
29   git push origin master 2>&1 | tee push.log
30   res="${PIPESTATUS[0]}"
31   set -e
32
33   if [ ! -z "$msg" ]; then
34     grep "$msg" push.log
35   fi
36
37   refute_server_object "$reponame" "$(calc_oid "$contents")"
38   if [ "$res" = "0" ]; then
39     echo "push successful?"
40     exit 1
41   fi
42 }
43
44 begin_test "push: upload file with storage 403"
45 (
46   set -e
47
48   push_fail_test "status-storage-403"
49 )
50 end_test
51
52 begin_test "push: upload file with storage 404"
53 (
54   set -e
55
56   push_fail_test "status-storage-404"
57 )
58 end_test
59
60 begin_test "push: upload file with storage 410"
61 (
62   set -e
63
64   push_fail_test "status-storage-410"
65 )
66 end_test
67
68 begin_test "push: upload file with storage 500"
69 (
70   set -e
71
72   push_fail_test "status-storage-500"
73 )
74 end_test
75
76 begin_test "push: upload file with storage 503"
77 (
78   set -e
79
80   push_fail_test "status-storage-503" "LFS is temporarily unavailable"
81 )
82 end_test
83
84 begin_test "push: upload file with api 403"
85 (
86   set -e
87
88   push_fail_test "status-batch-403"
89 )
90 end_test
91
92 begin_test "push: upload file with api 404"
93 (
94   set -e
95
96   push_fail_test "status-batch-404"
97 )
98 end_test
99
100 begin_test "push: upload file with api 410"
101 (
102   set -e
103
104   push_fail_test "status-batch-410"
105 )
106 end_test
107
108 begin_test "push: upload file with api 422"
109 (
110   set -e
111
112   push_fail_test "status-batch-422"
113 )
114 end_test
115
116 begin_test "push: upload file with api 500"
117 (
118   set -e
119
120   push_fail_test "status-batch-500"
121 )
122 end_test