(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 <'detect unwritable repository and fail correctly'>)} spids: [4] ) ] redirects: [] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_expect_success>} {<setup>} { (SQ <'\n'> <'\n'> <'\t>file &&\n'> <'\tgit add file &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m initial &&\n'> <'\techo >file &&\n'> <'\tgit add file\n'> <'\n'> ) } ) (C {<test_expect_success>} {<POSIXPERM> <Id.Lit_Comma ','> <SANITY>} {(SQ <'write-tree should notice unwritable repository'>)} { (SQ <'\n'> <'\ttest_when_finished "chmod 775 .git/objects .git/objects/??" &&\n'> <'\tchmod a-w .git/objects .git/objects/?? &&\n'> <'\ttest_must_fail git write-tree\n'> ) } ) (C {<test_expect_success>} {<POSIXPERM> <Id.Lit_Comma ','> <SANITY>} {(SQ <'commit should notice unwritable repository'>)} { (SQ <'\n'> <'\ttest_when_finished "chmod 775 .git/objects .git/objects/??" &&\n'> <'\tchmod a-w .git/objects .git/objects/?? &&\n'> <'\ttest_must_fail git commit -m second\n'> ) } ) (C {<test_expect_success>} {<POSIXPERM> <Id.Lit_Comma ','> <SANITY>} {(SQ <'update-index should notice unwritable repository'>)} { (SQ <'\n'> <'\ttest_when_finished "chmod 775 .git/objects .git/objects/??" &&\n'> <'\techo 6O >file &&\n'> <'\tchmod a-w .git/objects .git/objects/?? &&\n'> <'\ttest_must_fail git update-index file\n'> ) } ) (C {<test_expect_success>} {<POSIXPERM> <Id.Lit_Comma ','> <SANITY>} {(SQ <'add should notice unwritable repository'>)} { (SQ <'\n'> <'\ttest_when_finished "chmod 775 .git/objects .git/objects/??" &&\n'> <'\techo b >file &&\n'> <'\tchmod a-w .git/objects .git/objects/?? &&\n'> <'\ttest_must_fail git add file\n'> ) } ) (C {<test_done>}) ] )