(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'errors in upload-pack'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:D) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [16 18] ) } spids: [15] ) ] spids: [15] ) (FuncDef name: corrupt_repo body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:object_sha1) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(git)} {(rev-parse)} {(DQ ($ VSub_Number '$1'))})] ) left_token: <Left_CommandSub '$('> spids: [30 38] ) } spids: [29] ) ] spids: [29] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ob) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$object_sha1'))} {(Lit_Other ':')} {(DQ (Lit_Other '\\') ('(..') (Lit_Other '\\') (')'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [44 59] ) } spids: [43] ) ] spids: [43] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ject) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$object_sha1'))} {(Lit_Other ':')} {(DQ (..) (Lit_Other '\\') ('(..*') (Lit_Other '\\') (')'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [65 81] ) } spids: [64] ) ] spids: [64] ) (C {(rm)} {(-f)} {(DQ (.git/objects/) ($ VSub_Name '$ob') (/) ($ VSub_Name '$ject'))}) ] ) ] spids: [26] ) spids: [21 25] ) (C {(test_expect_success)} {(SQ <'setup and corrupt repository'>)} { (SQ <'\n'> <'\n'> <'\techo file >file &&\n'> <'\tgit add file &&\n'> <'\tgit rev-parse :file &&\n'> <'\tgit commit -a -m original &&\n'> <'\ttest_tick &&\n'> <'\techo changed >file &&\n'> <'\tgit commit -a -m changed &&\n'> <'\tcorrupt_repo HEAD:file\n'> <'\n'> ) } ) (C {(test_expect_success)} {(SQ <'fsck fails'>)} {(SQ <'\n'> <'\ttest_must_fail git fsck\n'>)}) (C {(test_expect_success)} {(SQ <'upload-pack fails due to error in pack-objects packing'>)} { (SQ <'\n'> <'\n'> <'\tprintf "0032want %s\\n00000009done\\n0000" \\\n'> <'\t\t$(git rev-parse HEAD) >input &&\n'> <'\ttest_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n'> <'\ttest_i18ngrep "unable to read" output.err &&\n'> <'\ttest_i18ngrep "pack-objects died" output.err\n'> ) } ) (C {(test_expect_success)} {(SQ <'corrupt repo differently'>)} { (SQ <'\n'> <'\n'> <'\tgit hash-object -w file &&\n'> <'\tcorrupt_repo HEAD^^{tree}\n'> <'\n'>) } ) (C {(test_expect_success)} {(SQ <'fsck fails'>)} {(SQ <'\n'> <'\ttest_must_fail git fsck\n'>)}) (C {(test_expect_success)} {(SQ <'upload-pack fails due to error in rev-list'>)} { (SQ <'\n'> <'\n'> <'\tprintf "0032want %s\\n0034shallow %s00000009done\\n0000" \\\n'> <'\t\t$(git rev-parse HEAD) $(git rev-parse HEAD^) >input &&\n'> <'\ttest_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n'> <'\tgrep "bad tree object" output.err\n'> ) } ) (C {(test_expect_success)} {(SQ <'upload-pack error message when bad ref requested'>)} { (SQ <'\n'> <'\n'> <'\tprintf "0045want %s multi_ack_detailed\\n00000009done\\n0000" \\\n'> <'\t\t"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef" >input &&\n'> <'\ttest_must_fail git upload-pack . <input >output 2>output.err &&\n'> <'\tgrep -q "not our ref" output.err &&\n'> <'\t! grep -q multi_ack_detailed output.err\n'> ) } ) (C {(test_expect_success)} {(SQ <'upload-pack fails due to error in pack-objects enumeration'>)} { (SQ <'\n'> <'\n'> <'\tprintf "0032want %s\\n00000009done\\n0000" \\\n'> <'\t\t$(git rev-parse HEAD) >input &&\n'> <'\ttest_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n'> <'\tgrep "bad tree object" output.err &&\n'> <'\tgrep "pack-objects died" output.err\n'> ) } ) (C {(test_expect_success)} {(SQ <'create empty repository'>)} {(SQ <'\n'> <'\n'> <'\tmkdir foo &&\n'> <'\tcd foo &&\n'> <'\tgit init\n'> <'\n'>)} ) (C {(test_expect_success)} {(SQ <'fetch fails'>)} {(SQ <'\n'> <'\n'> <'\ttest_must_fail git fetch .. master\n'> <'\n'>)} ) (C {(test_done)}) ] )