Merge branch 'jc/am-state-fix'
[gitweb.git] / t / t5504-fetch-receive-strict.sh
index 69ee13c8bebbdb1303378288597420cdf70b7b88..44f3d5fb284e9848180df9ed9cfbc44a91762277 100755 (executable)
@@ -115,4 +115,55 @@ test_expect_success 'push with transfer.fsckobjects' '
        test_cmp exp act
 '
 
+cat >bogus-commit <<\EOF
+tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
+author Bugs Bunny 1234567890 +0000
+committer Bugs Bunny <bugs@bun.ni> 1234567890 +0000
+
+This commit object intentionally broken
+EOF
+
+test_expect_success 'push with receive.fsck.skipList' '
+       commit="$(git hash-object -t commit -w --stdin <bogus-commit)" &&
+       git push . $commit:refs/heads/bogus &&
+       rm -rf dst &&
+       git init dst &&
+       git --git-dir=dst/.git config receive.fsckObjects true &&
+       test_must_fail git push --porcelain dst bogus &&
+       git --git-dir=dst/.git config receive.fsck.skipList SKIP &&
+       echo $commit >dst/.git/SKIP &&
+       git push --porcelain dst bogus
+'
+
+test_expect_success 'push with receive.fsck.missingEmail=warn' '
+       commit="$(git hash-object -t commit -w --stdin <bogus-commit)" &&
+       git push . $commit:refs/heads/bogus &&
+       rm -rf dst &&
+       git init dst &&
+       git --git-dir=dst/.git config receive.fsckobjects true &&
+       test_must_fail git push --porcelain dst bogus &&
+       git --git-dir=dst/.git config \
+               receive.fsck.missingEmail warn &&
+       git push --porcelain dst bogus >act 2>&1 &&
+       grep "missingEmail" act &&
+       git --git-dir=dst/.git branch -D bogus &&
+       git --git-dir=dst/.git config --add \
+               receive.fsck.missingEmail ignore &&
+       git --git-dir=dst/.git config --add \
+               receive.fsck.badDate warn &&
+       git push --porcelain dst bogus >act 2>&1 &&
+       test_must_fail grep "missingEmail" act
+'
+
+test_expect_success \
+       'receive.fsck.unterminatedHeader=warn triggers error' '
+       rm -rf dst &&
+       git init dst &&
+       git --git-dir=dst/.git config receive.fsckobjects true &&
+       git --git-dir=dst/.git config \
+               receive.fsck.unterminatedheader warn &&
+       test_must_fail git push --porcelain dst HEAD >act 2>&1 &&
+       grep "Cannot demote unterminatedheader" act
+'
+
 test_done