Imported Upstream version 2.5.1
[scm/test.git] / t / t-batch-error-handling.sh
1 #!/usr/bin/env bash
2 # This is a sample Git LFS test.  See test/README.md and testhelpers.sh for
3 # more documentation.
4
5 . "$(dirname "$0")/testlib.sh"
6
7 begin_test "batch error handling"
8 (
9   set -e
10
11   # This initializes a new bare git repository in test/remote.
12   # These remote repositories are global to every test, so keep the names
13   # unique.
14   reponame="badbatch" # Server looks for the "badbatch" repo, returns a 203 status
15   setup_remote_repo "$reponame"
16
17   # Clone the repository from the test Git server.  This is empty, and will be
18   # used to test a "git pull" below. The repo is cloned to $TRASHDIR/clone
19   clone_repo "$reponame" clone
20
21   # Clone the repository again to $TRASHDIR/repo. This will be used to commit
22   # and push objects.
23   clone_repo "$reponame" repo
24
25   # This executes Git LFS from the local repo that was just cloned.
26   git lfs track "*.dat" 2>&1 | tee track.log
27   grep "Tracking \"\*.dat\"" track.log
28
29   contents="a"
30   contents_oid=$(calc_oid "$contents")
31
32   printf "$contents" > a.dat
33   git add a.dat
34   git add .gitattributes
35   git commit -m "add a.dat" 2>&1 | tee commit.log
36   grep "master (root-commit)" commit.log
37   grep "2 files changed" commit.log
38   grep "create mode 100644 a.dat" commit.log
39   grep "create mode 100644 .gitattributes" commit.log
40
41   [ "a" = "$(cat a.dat)" ]
42
43   # This is a small shell function that runs several git commands together.
44   assert_pointer "master" "a.dat" "$contents_oid" 1
45
46   refute_server_object "$reponame" "$contents_oid"
47
48   # This pushes to the remote repository set up at the top of the test.
49   git push origin master 2>&1 | tee push.log
50   grep "Unable to parse HTTP response" push.log
51 )
52 end_test