(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'fetch/receive strict mode' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:19) (Token id:Id.Lit_Chars val:'\techo hello >greetings &&\n' span_id:20) (Token id:Id.Lit_Chars val:'\tgit add greetings &&\n' span_id:21) (Token id:Id.Lit_Chars val:'\tgit commit -m greetings &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\n' span_id:23) (Token id: Id.Lit_Chars val: '\tS=$(git rev-parse :greetings | sed -e "s|^..|&/|") &&\n' span_id: 24 ) (Token id: Id.Lit_Chars val: '\tX=$(echo bye | git hash-object -w --stdin | sed -e "s|^..|&/|") &&\n' span_id: 25 ) (Token id:Id.Lit_Chars val:'\tmv -f .git/objects/$X .git/objects/$S &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\n' span_id:27) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fsck\n' span_id:28) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch without strict' span_id:35))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\t(\n' span_id:42) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:43) (Token id: Id.Lit_Chars val: '\t\tgit config fetch.fsckobjects false &&\n' span_id: 44 ) (Token id:Id.Lit_Chars val:'\t\tgit config transfer.fsckobjects false &&\n' span_id:45) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git fetch ../.git master\n' span_id: 46 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:47) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch with !fetch.fsckobjects' span_id:54))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:58) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t(\n' span_id:61) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:62) (Token id: Id.Lit_Chars val: '\t\tgit config fetch.fsckobjects false &&\n' span_id: 63 ) (Token id:Id.Lit_Chars val:'\t\tgit config transfer.fsckobjects true &&\n' span_id:64) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git fetch ../.git master\n' span_id: 65 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:66) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch with fetch.fsckobjects' span_id:73))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:77) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\t(\n' span_id:80) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:81) (Token id: Id.Lit_Chars val: '\t\tgit config fetch.fsckobjects true &&\n' span_id: 82 ) (Token id:Id.Lit_Chars val:'\t\tgit config transfer.fsckobjects false &&\n' span_id:83) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git fetch ../.git master\n' span_id: 84 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:85) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch with transfer.fsckobjects' span_id:92))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:96) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\t(\n' span_id:99) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:100) (Token id: Id.Lit_Chars val: '\t\tgit config transfer.fsckobjects true &&\n' span_id: 101 ) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git fetch ../.git master\n' span_id:102) (Token id:Id.Lit_Chars val:'\t)\n' span_id:103) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:109) fd:-1 arg_word:{(exp)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:112) fd: -1 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' ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push without strict' span_id:123))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:127) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\t(\n' span_id:130) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:131) (Token id: Id.Lit_Chars val: '\t\tgit config fetch.fsckobjects false &&\n' span_id: 132 ) (Token id:Id.Lit_Chars val:'\t\tgit config transfer.fsckobjects false\n' span_id:133) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:134) (Token id: Id.Lit_Chars val: '\ttest_must_fail git push --porcelain dst master:refs/heads/test >act &&\n' span_id: 135 ) (Token id:Id.Lit_Chars val:'\ttest_cmp exp act\n' span_id:136) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push with !receive.fsckobjects' span_id:143))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:147) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\t(\n' span_id:150) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:151) (Token id: Id.Lit_Chars val: '\t\tgit config receive.fsckobjects false &&\n' span_id: 152 ) (Token id:Id.Lit_Chars val:'\t\tgit config transfer.fsckobjects true\n' span_id:153) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:154) (Token id: Id.Lit_Chars val: '\ttest_must_fail git push --porcelain dst master:refs/heads/test >act &&\n' span_id: 155 ) (Token id:Id.Lit_Chars val:'\ttest_cmp exp act\n' span_id:156) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:162) fd:-1 arg_word:{(exp)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:165) fd: -1 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') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push with receive.fsckobjects' span_id:176))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:181) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:182) (Token id:Id.Lit_Chars val:'\t(\n' span_id:183) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:184) (Token id: Id.Lit_Chars val: '\t\tgit config receive.fsckobjects true &&\n' span_id: 185 ) (Token id:Id.Lit_Chars val:'\t\tgit config transfer.fsckobjects false\n' span_id:186) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:187) (Token id: Id.Lit_Chars val: '\ttest_must_fail git push --porcelain dst master:refs/heads/test >act &&\n' span_id: 188 ) (Token id:Id.Lit_Chars val:'\ttest_cmp exp act\n' span_id:189) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push with transfer.fsckobjects' span_id:196))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:200) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\t(\n' span_id:203) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:204) (Token id: Id.Lit_Chars val: '\t\tgit config transfer.fsckobjects true\n' span_id: 205 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:206) (Token id: Id.Lit_Chars val: '\ttest_must_fail git push --porcelain dst master:refs/heads/test >act &&\n' span_id: 207 ) (Token id:Id.Lit_Chars val:'\ttest_cmp exp act\n' span_id:208) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:214) fd: -1 arg_word: {(bogus-commit)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:217) fd: -1 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') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push with receive.fsck.skipList' span_id:233))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:237) (Token id: Id.Lit_Chars val: '\tcommit="$(git hash-object -t commit -w --stdin <bogus-commit)" &&\n' span_id: 238 ) (Token id:Id.Lit_Chars val:'\tgit push . $commit:refs/heads/bogus &&\n' span_id:239) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:240) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:241) (Token id: Id.Lit_Chars val: '\tgit --git-dir=dst/.git config receive.fsckObjects true &&\n' span_id: 242 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git push --porcelain dst bogus &&\n' span_id:243) (Token id: Id.Lit_Chars val: '\tgit --git-dir=dst/.git config receive.fsck.skipList SKIP &&\n' span_id: 244 ) (Token id:Id.Lit_Chars val:'\techo $commit >dst/.git/SKIP &&\n' span_id:245) (Token id:Id.Lit_Chars val:'\tgit push --porcelain dst bogus\n' span_id:246) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push with receive.fsck.missingEmail=warn' span_id:253))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:257) (Token id: Id.Lit_Chars val: '\tcommit="$(git hash-object -t commit -w --stdin <bogus-commit)" &&\n' span_id: 258 ) (Token id:Id.Lit_Chars val:'\tgit push . $commit:refs/heads/bogus &&\n' span_id:259) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:260) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:261) (Token id: Id.Lit_Chars val: '\tgit --git-dir=dst/.git config receive.fsckobjects true &&\n' span_id: 262 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git push --porcelain dst bogus &&\n' span_id:263) (Token id:Id.Lit_Chars val:'\tgit --git-dir=dst/.git config \\\n' span_id:264) (Token id:Id.Lit_Chars val:'\t\treceive.fsck.missingEmail warn &&\n' span_id:265) (Token id: Id.Lit_Chars val: '\tgit push --porcelain dst bogus >act 2>&1 &&\n' span_id: 266 ) (Token id:Id.Lit_Chars val:'\tgrep "missingEmail" act &&\n' span_id:267) (Token id: Id.Lit_Chars val: '\tgit --git-dir=dst/.git branch -D bogus &&\n' span_id: 268 ) (Token id:Id.Lit_Chars val:'\tgit --git-dir=dst/.git config --add \\\n' span_id:269) (Token id: Id.Lit_Chars val: '\t\treceive.fsck.missingEmail ignore &&\n' span_id: 270 ) (Token id:Id.Lit_Chars val:'\tgit --git-dir=dst/.git config --add \\\n' span_id:271) (Token id:Id.Lit_Chars val:'\t\treceive.fsck.badDate warn &&\n' span_id:272) (Token id:Id.Lit_Chars val:'\tgit push --porcelain dst bogus >act 2>&1 &&\n' span_id:273) (Token id: Id.Lit_Chars val: '\ttest_must_fail grep "missingEmail" act\n' span_id: 274 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'receive.fsck.unterminatedHeader=warn triggers error' span_id: 283 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:287) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:288) (Token id:Id.Lit_Chars val:'\tgit init dst &&\n' span_id:289) (Token id: Id.Lit_Chars val: '\tgit --git-dir=dst/.git config receive.fsckobjects true &&\n' span_id: 290 ) (Token id:Id.Lit_Chars val:'\tgit --git-dir=dst/.git config \\\n' span_id:291) (Token id: Id.Lit_Chars val: '\t\treceive.fsck.unterminatedheader warn &&\n' span_id: 292 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git push --porcelain dst HEAD >act 2>&1 &&\n' span_id: 293 ) (Token id:Id.Lit_Chars val:'\tgrep "Cannot demote unterminatedheader" act\n' span_id:294) ) } ) (C {(test_done)}) ] )