(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description) op: assign_op.Equal rhs: {(SQ <'fetch/receive strict mode'>)} spids: [4] ) ] redirects: [] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_expect_success>} {<setup>} { (SQ <'\n'> <'\techo hello >greetings &&\n'> <'\tgit add greetings &&\n'> <'\tgit commit -m greetings &&\n'> <'\n'> <'\tS=$(git rev-parse :greetings | sed -e "s|^..|&/|") &&\n'> <'\tX=$(echo bye | git hash-object -w --stdin | sed -e "s|^..|&/|") &&\n'> <'\tmv -f .git/objects/$X .git/objects/$S &&\n'> <'\n'> <'\ttest_must_fail git fsck\n'> ) } ) (C {<test_expect_success>} {(SQ <'fetch without strict'>)} { (SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit config fetch.fsckobjects false &&\n'> <'\t\tgit config transfer.fsckobjects false &&\n'> <'\t\ttest_must_fail git fetch ../.git master\n'> <'\t)\n'> ) } ) (C {<test_expect_success>} {(SQ <'fetch with !fetch.fsckobjects'>)} { (SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit config fetch.fsckobjects false &&\n'> <'\t\tgit config transfer.fsckobjects true &&\n'> <'\t\ttest_must_fail git fetch ../.git master\n'> <'\t)\n'> ) } ) (C {<test_expect_success>} {(SQ <'fetch with fetch.fsckobjects'>)} { (SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit config fetch.fsckobjects true &&\n'> <'\t\tgit config transfer.fsckobjects false &&\n'> <'\t\ttest_must_fail git fetch ../.git master\n'> <'\t)\n'> ) } ) (C {<test_expect_success>} {(SQ <'fetch with transfer.fsckobjects'>)} { (SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit config transfer.fsckobjects true &&\n'> <'\t\ttest_must_fail git fetch ../.git master\n'> <'\t)\n'> ) } ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 118 stdin_parts: [ <'To dst\n'> < '!\trefs/heads/master:refs/heads/test\t[remote rejected] (missing necessary objects)\n' > ] ) ) ] more_env: [] do_fork: T ) (C {<test_expect_success>} {(SQ <'push without strict'>)} { (SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit config fetch.fsckobjects false &&\n'> <'\t\tgit config transfer.fsckobjects false\n'> <'\t) &&\n'> <'\ttest_must_fail git push --porcelain dst master:refs/heads/test >act &&\n'> <'\ttest_cmp exp act\n'> ) } ) (C {<test_expect_success>} {(SQ <'push with !receive.fsckobjects'>)} { (SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit config receive.fsckobjects false &&\n'> <'\t\tgit config transfer.fsckobjects true\n'> <'\t) &&\n'> <'\ttest_must_fail git push --porcelain dst master:refs/heads/test >act &&\n'> <'\ttest_cmp exp act\n'> ) } ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 171 stdin_parts: [ <'To dst\n'> <'!\trefs/heads/master:refs/heads/test\t[remote rejected] (unpacker error)\n'> ] ) ) ] more_env: [] do_fork: T ) (C {<test_expect_success>} {(SQ <'push with receive.fsckobjects'>)} { (SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit config receive.fsckobjects true &&\n'> <'\t\tgit config transfer.fsckobjects false\n'> <'\t) &&\n'> <'\ttest_must_fail git push --porcelain dst master:refs/heads/test >act &&\n'> <'\ttest_cmp exp act\n'> ) } ) (C {<test_expect_success>} {(SQ <'push with transfer.fsckobjects'>)} { (SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit config transfer.fsckobjects true\n'> <'\t) &&\n'> <'\ttest_must_fail git push --porcelain dst master:refs/heads/test >act &&\n'> <'\ttest_cmp exp act\n'> ) } ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<bogus-commit>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 228 stdin_parts: [ <'tree '> ($ Id.VSub_DollarName EMPTY_TREE) <'\n'> <'author Bugs Bunny 1234567890 +0000\n'> <'committer Bugs Bunny <bugs@bun.ni> 1234567890 +0000\n'> <'\n'> <'This commit object intentionally broken\n'> ] ) ) ] more_env: [] do_fork: T ) (C {<test_expect_success>} {(SQ <'push with receive.fsck.skipList'>)} { (SQ <'\n'> <'\tcommit="$(git hash-object -t commit -w --stdin <bogus-commit)" &&\n'> <'\tgit push . $commit:refs/heads/bogus &&\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\tgit --git-dir=dst/.git config receive.fsckObjects true &&\n'> <'\ttest_must_fail git push --porcelain dst bogus &&\n'> <'\tgit --git-dir=dst/.git config receive.fsck.skipList SKIP &&\n'> <'\techo $commit >dst/.git/SKIP &&\n'> <'\tgit push --porcelain dst bogus\n'> ) } ) (C {<test_expect_success>} {(SQ <'push with receive.fsck.missingEmail=warn'>)} { (SQ <'\n'> <'\tcommit="$(git hash-object -t commit -w --stdin <bogus-commit)" &&\n'> <'\tgit push . $commit:refs/heads/bogus &&\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\tgit --git-dir=dst/.git config receive.fsckobjects true &&\n'> <'\ttest_must_fail git push --porcelain dst bogus &&\n'> <'\tgit --git-dir=dst/.git config \\\n'> <'\t\treceive.fsck.missingEmail warn &&\n'> <'\tgit push --porcelain dst bogus >act 2>&1 &&\n'> <'\tgrep "missingEmail" act &&\n'> <'\tgit --git-dir=dst/.git branch -D bogus &&\n'> <'\tgit --git-dir=dst/.git config --add \\\n'> <'\t\treceive.fsck.missingEmail ignore &&\n'> <'\tgit --git-dir=dst/.git config --add \\\n'> <'\t\treceive.fsck.badDate warn &&\n'> <'\tgit push --porcelain dst bogus >act 2>&1 &&\n'> <'\ttest_must_fail grep "missingEmail" act\n'> ) } ) (C {<test_expect_success>} {(SQ <'receive.fsck.unterminatedHeader=warn triggers error'>)} { (SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit init dst &&\n'> <'\tgit --git-dir=dst/.git config receive.fsckobjects true &&\n'> <'\tgit --git-dir=dst/.git config \\\n'> <'\t\treceive.fsck.unterminatedheader warn &&\n'> <'\ttest_must_fail git push --porcelain dst HEAD >act 2>&1 &&\n'> <'\tgrep "Cannot demote unterminatedheader" act\n'> ) } ) (C {<test_done>}) ] )