(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"fetch/receive strict mode">)} spids: [4] ) ] spids: [4] ) (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"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(exp)} spids:[109]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("To dst\n") ( "!\trefs/heads/master:refs/heads/test\t[remote rejected] (missing necessary objects)\n" ) ) } do_expansion: True here_end: EOF was_filled: True spids: [112] ) ] ) (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"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(exp)} spids:[160]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("To dst\n") ("!\trefs/heads/master:refs/heads/test\t[remote rejected] (unpacker error)\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [163] ) ] ) (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"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(bogus-commit)} spids:[210]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("tree ") ($ VSub_Name "$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") ) } do_expansion: True here_end: EOF was_filled: True spids: [213] ) ] ) (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)}) ] )