3 . "$(dirname "$0")/testlib.sh"
5 begin_test "fsck default"
9 reponame="fsck-default"
13 # Create a commit with some files tracked by git-lfs
15 echo "test data" > a.dat
16 echo "test data 2" > b.dat
17 git add .gitattributes *.dat
18 git commit -m "first commit"
20 [ "Git LFS fsck OK" = "$(git lfs fsck)" ]
22 aOid=$(git log --patch a.dat | grep "^+oid" | cut -d ":" -f 2)
23 aOid12=$(echo $aOid | cut -b 1-2)
24 aOid34=$(echo $aOid | cut -b 3-4)
25 if [ "$aOid" != "$(calc_oid_file .git/lfs/objects/$aOid12/$aOid34/$aOid)" ]; then
26 echo "oid for a.dat does not match"
30 bOid=$(git log --patch b.dat | grep "^+oid" | cut -d ":" -f 2)
31 bOid12=$(echo $bOid | cut -b 1-2)
32 bOid34=$(echo $bOid | cut -b 3-4)
33 if [ "$bOid" != "$(calc_oid_file .git/lfs/objects/$bOid12/$bOid34/$bOid)" ]; then
34 echo "oid for b.dat does not match"
39 echo "CORRUPTION" >> .git/lfs/objects/$aOid12/$aOid34/$aOid
41 moved=$(native_path "$TRASHDIR/$reponame/.git/lfs/bad")
42 expected="$(printf 'Object a.dat (%s) is corrupt
43 Moving corrupt objects to %s' "$aOid" "$moved")"
44 [ "$expected" = "$(git lfs fsck)" ]
46 [ -e ".git/lfs/bad/$aOid" ]
47 [ ! -e ".git/lfs/objects/$aOid12/$aOid34/$aOid" ]
48 [ "$bOid" = "$(calc_oid_file .git/lfs/objects/$bOid12/$bOid34/$bOid)" ]
52 begin_test "fsck dry run"
56 reponame="fsck-dry-run"
60 # Create a commit with some files tracked by git-lfs
62 echo "test data" > a.dat
63 echo "test data 2" > b.dat
64 git add .gitattributes *.dat
65 git commit -m "first commit"
67 [ "Git LFS fsck OK" = "$(git lfs fsck --dry-run)" ]
69 aOid=$(git log --patch a.dat | grep "^+oid" | cut -d ":" -f 2)
70 aOid12=$(echo $aOid | cut -b 1-2)
71 aOid34=$(echo $aOid | cut -b 3-4)
72 if [ "$aOid" != "$(calc_oid_file .git/lfs/objects/$aOid12/$aOid34/$aOid)" ]; then
73 echo "oid for a.dat does not match"
77 bOid=$(git log --patch b.dat | grep "^+oid" | cut -d ":" -f 2)
78 bOid12=$(echo $bOid | cut -b 1-2)
79 bOid34=$(echo $bOid | cut -b 3-4)
80 if [ "$bOid" != "$(calc_oid_file .git/lfs/objects/$bOid12/$bOid34/$bOid)" ]; then
81 echo "oid for b.dat does not match"
85 echo "CORRUPTION" >> .git/lfs/objects/$aOid12/$aOid34/$aOid
87 [ "Object a.dat ($aOid) is corrupt" = "$(git lfs fsck --dry-run)" ]
89 if [ "$aOid" = "$(calc_oid_file .git/lfs/objects/$aOid12/$aOid34/$aOid)" ]; then
90 echo "oid for a.dat still matches match"
94 if [ "$bOid" != "$(calc_oid_file .git/lfs/objects/$bOid12/$bOid34/$bOid)" ]; then
95 echo "oid for b.dat does not match"
101 begin_test "fsck: outside git repository"
104 git lfs fsck 2>&1 > fsck.log
108 if [ "$res" = "0" ]; then
109 echo "Passes because $GIT_LFS_TEST_DIR is unset."
113 grep "Not in a git repository" fsck.log