(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"Compatibility with $XDG_CONFIG_HOME/git/ files">)}
          spids: [19]
        )
      ]
      spids: [19]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} 
      {(SQ <"read config: xdg file exists and ~/.gitconfig doesn">) 
        (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <t>)
      } 
      {
        (SQ <"\n"> <"\tmkdir -p .config/git &&\n"> <"\techo \"[alias]\" >.config/git/config &&\n"> 
          <"\techo \"\tmyalias = !echo in_config\" >>.config/git/config &&\n"> <"\techo in_config >expected &&\n"> <"\tgit myalias >actual &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"read config: xdg file exists and ~/.gitconfig exists">)} 
      {
        (SQ <"\n"> <"\t>.gitconfig &&\n"> <"\techo \"[alias]\" >.gitconfig &&\n"> 
          <"\techo \"\tmyalias = !echo in_gitconfig\" >>.gitconfig &&\n"> <"\techo in_gitconfig >expected &&\n"> <"\tgit myalias >actual &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ <"read with --get: xdg file exists and ~/.gitconfig doesn">) 
        (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <t>)
      } 
      {
        (SQ <"\n"> <"\trm .gitconfig &&\n"> <"\techo \"[user]\" >.config/git/config &&\n"> 
          <"\techo \"\tname = read_config\" >>.config/git/config &&\n"> <"\techo read_config >expected &&\n"> <"\tgit config --get user.name >actual &&\n"> 
          <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"\"$XDG_CONFIG_HOME overrides $HOME/.config/git">)} 
      {
        (SQ <"\n"> <"\tmkdir -p \"$HOME\"/xdg/git &&\n"> 
          <"\techo \"[user]name = in_xdg\" >\"$HOME\"/xdg/git/config &&\n"> <"\techo in_xdg >expected &&\n"> 
          <"\tXDG_CONFIG_HOME=\"$HOME\"/xdg git config --get-all user.name >actual &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"read with --get: xdg file exists and ~/.gitconfig exists">)} 
      {
        (SQ <"\n"> <"\t>.gitconfig &&\n"> <"\techo \"[user]\" >.gitconfig &&\n"> 
          <"\techo \"\tname = read_gitconfig\" >>.gitconfig &&\n"> <"\techo read_gitconfig >expected &&\n"> <"\tgit config --get user.name >actual &&\n"> 
          <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ <"read with --list: xdg file exists and ~/.gitconfig doesn">) 
        (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <t>)
      } 
      {
        (SQ <"\n"> <"\trm .gitconfig &&\n"> <"\techo user.name=read_config >expected &&\n"> 
          <"\tgit config --global --list >actual &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"read with --list: xdg file exists and ~/.gitconfig exists">)} 
      {
        (SQ <"\n"> <"\t>.gitconfig &&\n"> <"\techo \"[user]\" >.gitconfig &&\n"> 
          <"\techo \"\tname = read_gitconfig\" >>.gitconfig &&\n"> <"\techo user.name=read_gitconfig >expected &&\n"> <"\tgit config --global --list >actual &&\n"> 
          <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <Setup>)} 
      {(SQ <"\n"> <"\tgit init git &&\n"> <"\tcd git &&\n"> <"\techo foo >to_be_excluded\n">)}
    )
    (C {(test_expect_success)} {(SQ <"Exclusion of a file in the XDG ignore file">)} 
      {
        (SQ <"\n"> <"\tmkdir -p \"$HOME\"/.config/git/ &&\n"> 
          <"\techo to_be_excluded >\"$HOME\"/.config/git/ignore &&\n"> <"\ttest_must_fail git add to_be_excluded\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"$XDG_CONFIG_HOME overrides $HOME/.config/git/ignore">)} 
      {
        (SQ <"\n"> <"\tmkdir -p \"$HOME\"/xdg/git &&\n"> <"\techo content >excluded_by_xdg_only &&\n"> 
          <"\techo excluded_by_xdg_only >\"$HOME\"/xdg/git/ignore &&\n"> <"\ttest_when_finished \"git read-tree --empty\" &&\n"> <"\t(XDG_CONFIG_HOME=\"$HOME/xdg\" &&\n"> 
          <"\t export XDG_CONFIG_HOME &&\n"> <"\t git add to_be_excluded &&\n"> <"\t test_must_fail git add excluded_by_xdg_only\n"> <"\t)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"Exclusion in both XDG and local ignore files">)} 
      {
        (SQ <"\n"> <"\techo to_be_excluded >.gitignore &&\n"> 
          <"\ttest_must_fail git add to_be_excluded\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"Exclusion in a non-XDG global ignore file">)} 
      {
        (SQ <"\n"> <"\trm .gitignore &&\n"> <"\techo >\"$HOME\"/.config/git/ignore &&\n"> 
          <"\techo to_be_excluded >\"$HOME\"/my_gitignore &&\n"> <"\tgit config core.excludesfile \"$HOME\"/my_gitignore &&\n"> 
          <"\ttest_must_fail git add to_be_excluded\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"Checking XDG ignore file when HOME is unset">)} 
      {
        (SQ <"\n"> <"\t>expected &&\n"> <"\t(sane_unset HOME &&\n"> 
          <"\t git config --unset core.excludesfile &&\n"> <"\t git ls-files --exclude-standard --ignored >actual) &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"Checking attributes in the XDG attributes file">)} 
      {
        (SQ <"\n"> <"\techo foo >f &&\n"> <"\tgit check-attr -a f >actual &&\n"> 
          <"\ttest_line_count -eq 0 actual &&\n"> <"\techo \"f attr_f\" >\"$HOME\"/.config/git/attributes &&\n"> 
          <"\techo \"f: attr_f: set\" >expected &&\n"> <"\tgit check-attr -a f >actual &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"Checking XDG attributes when HOME is unset">)} 
      {
        (SQ <"\n"> <"\t>expected &&\n"> <"\t(sane_unset HOME &&\n"> 
          <"\t git check-attr -a f >actual) &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"$XDG_CONFIG_HOME overrides $HOME/.config/git/attributes">)} 
      {
        (SQ <"\n"> <"\tmkdir -p \"$HOME\"/xdg/git &&\n"> 
          <"\techo \"f attr_f=xdg\" >\"$HOME\"/xdg/git/attributes &&\n"> <"\techo \"f: attr_f: xdg\" >expected &&\n"> 
          <"\tXDG_CONFIG_HOME=\"$HOME/xdg\" git check-attr -a f >actual &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"Checking attributes in both XDG and local attributes files">)} 
      {
        (SQ <"\n"> <"\techo \"f -attr_f\" >.gitattributes &&\n"> 
          <"\techo \"f: attr_f: unset\" >expected &&\n"> <"\tgit check-attr -a f >actual &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"Checking attributes in a non-XDG global attributes file">)} 
      {
        (SQ <"\n"> <"\ttest_might_fail rm .gitattributes &&\n"> 
          <"\techo \"f attr_f=test\" >\"$HOME\"/my_gitattributes &&\n"> <"\tgit config core.attributesfile \"$HOME\"/my_gitattributes &&\n"> 
          <"\techo \"f: attr_f: test\" >expected &&\n"> <"\tgit check-attr -a f >actual &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ <"write: xdg file exists and ~/.gitconfig doesn">) 
        (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <t>)
      } 
      {
        (SQ <"\n"> <"\tmkdir -p \"$HOME\"/.config/git &&\n"> <"\t>\"$HOME\"/.config/git/config &&\n"> 
          <"\ttest_might_fail rm \"$HOME\"/.gitconfig &&\n"> <"\tgit config --global user.name \"write_config\" &&\n"> <"\techo \"[user]\" >expected &&\n"> 
          <"\techo \"\tname = write_config\" >>expected &&\n"> <"\ttest_cmp expected \"$HOME\"/.config/git/config\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"write: xdg file exists and ~/.gitconfig exists">)} 
      {
        (SQ <"\n"> <"\t>\"$HOME\"/.gitconfig &&\n"> 
          <"\tgit config --global user.name \"write_gitconfig\" &&\n"> <"\techo \"[user]\" >expected &&\n"> <"\techo \"\tname = write_gitconfig\" >>expected &&\n"> 
          <"\ttest_cmp expected \"$HOME\"/.gitconfig\n">
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ <"write: ~/.config/git/ exists and config file doesn">) 
        (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <t>)
      } 
      {
        (SQ <"\n"> <"\ttest_might_fail rm \"$HOME\"/.gitconfig &&\n"> 
          <"\ttest_might_fail rm \"$HOME\"/.config/git/config &&\n"> <"\tgit config --global user.name \"write_gitconfig\" &&\n"> <"\techo \"[user]\" >expected &&\n"> 
          <"\techo \"\tname = write_gitconfig\" >>expected &&\n"> <"\ttest_cmp expected \"$HOME\"/.gitconfig\n">
        )
      }
    )
    (C {(test_done)})
  ]
)