(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: 'detect unwritable repository and fail correctly'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:20) (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\t>file &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\techo >file &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit add file\n' span_id:27) (Token id:Id.Lit_Chars val:'\n' span_id:28)
        )
      }
    )
    (C {(test_expect_success)} {(POSIXPERM) (Id.Lit_Comma ',') (SANITY)} 
      {(SQ (Token id:Id.Lit_Chars val:'write-tree should notice unwritable repository' span_id:39))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:43) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "chmod 775 .git/objects .git/objects/??" &&\n'
            span_id: 44
          ) (Token id:Id.Lit_Chars val:'\tchmod a-w .git/objects .git/objects/?? &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git write-tree\n' span_id:46)
        )
      }
    )
    (C {(test_expect_success)} {(POSIXPERM) (Id.Lit_Comma ',') (SANITY)} 
      {(SQ (Token id:Id.Lit_Chars val:'commit should notice unwritable repository' span_id:57))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "chmod 775 .git/objects .git/objects/??" &&\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\tchmod a-w .git/objects .git/objects/?? &&\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -m second\n' span_id:64)
        )
      }
    )
    (C {(test_expect_success)} {(POSIXPERM) (Id.Lit_Comma ',') (SANITY)} 
      {(SQ (Token id:Id.Lit_Chars val:'update-index should notice unwritable repository' span_id:75))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:79) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "chmod 775 .git/objects .git/objects/??" &&\n'
            span_id: 80
          ) (Token id:Id.Lit_Chars val:'\techo 6O >file &&\n' span_id:81) 
          (Token
            id: Id.Lit_Chars
            val: '\tchmod a-w .git/objects .git/objects/?? &&\n'
            span_id: 82
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git update-index file\n' span_id:83)
        )
      }
    )
    (C {(test_expect_success)} {(POSIXPERM) (Id.Lit_Comma ',') (SANITY)} 
      {(SQ (Token id:Id.Lit_Chars val:'add should notice unwritable repository' span_id:94))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:98) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "chmod 775 .git/objects .git/objects/??" &&\n'
            span_id: 99
          ) (Token id:Id.Lit_Chars val:'\techo b >file &&\n' span_id:100) 
          (Token
            id: Id.Lit_Chars
            val: '\tchmod a-w .git/objects .git/objects/?? &&\n'
            span_id: 101
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git add file\n' span_id:102)
        )
      }
    )
    (C {(test_done)})
  ]
)