(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:'check problems with relative GIT_DIR\n' span_id:6) 
                (Token id:Id.Lit_Chars val:'\n' span_id:7) 
                (Token
                  id: Id.Lit_Chars
                  val: 'This test creates a working tree state with a file and subdir:\n'
                  span_id: 8
                ) (Token id:Id.Lit_Chars val:'\n' span_id:9) 
                (Token
                  id: Id.Lit_Chars
                  val: '  top (committed several times)\n'
                  span_id: 10
                ) (Token id:Id.Lit_Chars val:'  subdir (a subdirectory)\n' span_id:11) 
                (Token id:Id.Lit_Chars val:'\n' span_id:12) (Token id:Id.Lit_Chars val:'It creates a commit-hook and tests it, then moves .git\n' span_id:13) 
                (Token
                  id: Id.Lit_Chars
                  val: 'into the subdir while keeping the worktree location,\n'
                  span_id: 14
                ) (Token id:Id.Lit_Chars val:'and tries commits from the top and the subdir, checking\n' span_id:15) 
                (Token
                  id: Id.Lit_Chars
                  val: 'that the commit-hook still gets called.'
                  span_id: 16
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:COMMIT_FILE)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:27)
                  command_list: (command.CommandList children:[(C {(pwd)})])
                ) (/output)
              )
            }
          spids: [25]
        )
      ]
    )
    (C {(export)} {(COMMIT_FILE)})
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'Setting up post-commit hook' span_id:41))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'mkdir -p .git/hooks &&\n' span_id:46) (Token id:Id.Lit_Chars val:'echo >.git/hooks/post-commit "#!/bin/sh\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'touch \\"\\${COMMIT_FILE}\\"\n' span_id:48) (Token id:Id.Lit_Chars val:'echo Post commit hook was called." &&\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'chmod +x .git/hooks/post-commit' span_id:50)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'post-commit hook used ordinarily' span_id:57))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'echo initial >top &&\n' span_id:62) (Token id:Id.Lit_Chars val:'git add top &&\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'git commit -m initial &&\n' span_id:64) (Token id:Id.Lit_Chars val:'test -r "${COMMIT_FILE}"\n' span_id:65)
        )
      }
    )
    (C {(rm)} {(-rf)} {(DQ (${ Id.VSub_Name COMMIT_FILE))})
    (C {(mkdir)} {(subdir)})
    (C {(mv)} {(.git)} {(subdir)})
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'post-commit-hook created and used from top dir' span_id:93))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:97) 
          (Token id:Id.Lit_Chars val:'echo changed >top &&\n' span_id:98) (Token id:Id.Lit_Chars val:'git --git-dir subdir/.git add top &&\n' span_id:99) 
          (Token
            id: Id.Lit_Chars
            val: 'git --git-dir subdir/.git commit -m topcommit &&\n'
            span_id: 100
          ) (Token id:Id.Lit_Chars val:'test -r "${COMMIT_FILE}"\n' span_id:101)
        )
      }
    )
    (C {(rm)} {(-rf)} {(DQ (${ Id.VSub_Name COMMIT_FILE))})
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'post-commit-hook from sub dir' span_id:119))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:123) 
          (Token id:Id.Lit_Chars val:'echo changed again >top &&\n' span_id:124) (Token id:Id.Lit_Chars val:'cd subdir &&\n' span_id:125) 
          (Token
            id: Id.Lit_Chars
            val: 'git --git-dir .git --work-tree .. add ../top &&\n'
            span_id: 126
          ) (Token id:Id.Lit_Chars val:'git --git-dir .git --work-tree .. commit -m subcommit &&\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'test -r "${COMMIT_FILE}"\n' span_id:128)
        )
      }
    )
    (C {(test_done)})
  ]
)