(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"Test git config in different settings">)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <"clear default config">)} {(SQ <"\n"> <"\trm -f .git/config\n">)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[38])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("[core]\n") ("\tpenguin = little blue\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [42]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <initial>)} 
      {
        (SQ <"\n"> <"\tgit config core.penguin \"little blue\" &&\n"> 
          <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[63])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("[core]\n") ("\tpenguin = little blue\n") ("\tMovie = BadPhysics\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [67]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"mixed case">)} 
      {(SQ <"\n"> <"\tgit config Core.Movie BadPhysics &&\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[89])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[core]\n") ("\tpenguin = little blue\n") ("\tMovie = BadPhysics\n") ("[Cores]\n") 
                ("\tWhatEver = Second\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [93]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"similar section">)} 
      {(SQ <"\n"> <"\tgit config Cores.WhatEver Second &&\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[117])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[core]\n") ("\tpenguin = little blue\n") ("\tMovie = BadPhysics\n") 
                ("\tUPPERCASE = true\n") ("[Cores]\n") ("\tWhatEver = Second\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [121]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"uppercase section">)} 
      {(SQ <"\n"> <"\tgit config CORE.UPPERCASE true &&\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (C {(test_expect_success)} {(SQ <"replace with non-match">)} 
      {(SQ <"\n"> <"\tgit config core.penguin kingpin !blue\n">)}
    )
    (C {(test_expect_success)} {(SQ <"replace with non-match (actually matching)">)} 
      {(SQ <"\n"> <"\tgit config core.penguin \"very blue\" !kingpin\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[170])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[core]\n") ("\tpenguin = very blue\n") ("\tMovie = BadPhysics\n") 
                ("\tUPPERCASE = true\n") ("\tpenguin = kingpin\n") ("[Cores]\n") ("\tWhatEver = Second\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [174]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"non-match result">)} {(SQ <"test_cmp expect .git/config">)})
    (C {(test_expect_success)} {(SQ <"find mixed-case key by canonical name">)} 
      {
        (SQ <"\n"> <"\techo Second >expect &&\n"> <"\tgit config cores.whatever >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"find mixed-case key by non-canonical name">)} 
      {
        (SQ <"\n"> <"\techo Second >expect &&\n"> <"\tgit config CoReS.WhAtEvEr >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"subsections are not canonicalized by git-config">)} 
      {
        (SQ <"\n"> <"\tcat >>.git/config <<-\\EOF &&\n"> <"\t[section.SubSection]\n"> <"\tkey = one\n"> 
          <"\t[section \"SubSection\"]\n"> <"\tkey = two\n"> <"\tEOF\n"> <"\techo one >expect &&\n"> 
          <"\tgit config section.subsection.key >actual &&\n"> <"\ttest_cmp expect actual &&\n"> <"\techo two >expect &&\n"> 
          <"\tgit config section.SubSection.key >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(.git/config)} spids:[250])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {("[alpha]\n") ("bar = foo\n") ("[beta]\n") ("baz = multiple \\\n") ("lines\n")}
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [254]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"unset with cont. lines">)} 
      {(SQ <"\n"> <"\tgit config --unset beta.baz\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[273])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {("[alpha]\n") ("bar = foo\n") ("[beta]\n")}
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [277]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"unset with cont. lines is correct">)} 
      {(SQ <"test_cmp expect .git/config">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(.git/config)} spids:[295])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("\t\thaha   =") (Right_DoubleQuote "\"") (beta) 
                (Right_DoubleQuote "\"") (" # last silly comment\n") ("haha = hello\n") ("\thaha = bello\n") ("[nextSection] noNewline = ouch\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [299]
        )
      ]
    )
    (C {(cp)} {(.git/config)} {(.git/config2)})
    (C {(test_expect_success)} {(SQ <"multiple unset">)} 
      {(SQ <"\n"> <"\tgit config --unset-all beta.haha\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[338])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("[nextSection] noNewline = ouch\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [342]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"multiple unset is correct">)} 
      {(SQ <"\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (C {(cp)} {(.git/config2)} {(.git/config)})
    (C {(test_expect_success)} {(SQ <"--replace-all missing value">)} 
      {
        (SQ <"\n"> <"\ttest_must_fail git config --replace-all beta.haha &&\n"> 
          <"\ttest_cmp .git/config2 .git/config\n">
        )
      }
    )
    (C {(rm)} {(.git/config2)})
    (C {(test_expect_success)} {(SQ <--replace-all>)} 
      {(SQ <"\n"> <"\tgit config --replace-all beta.haha gamma\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[404])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("\thaha = gamma\n") ("[nextSection] noNewline = ouch\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [408]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"all replaced">)} {(SQ <"\n"> <"\ttest_cmp expect .git/config\n">)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[434])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("\thaha = alpha\n") ("[nextSection] noNewline = ouch\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [438]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"really mean test">)} 
      {(SQ <"\n"> <"\tgit config beta.haha alpha &&\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[464])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("\thaha = alpha\n") ("[nextSection]\n") 
                ("\tnonewline = wow\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [468]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"really really mean test">)} 
      {
        (SQ <"\n"> <"\tgit config nextsection.nonewline wow &&\n"> <"\ttest_cmp expect .git/config\n">)
      }
    )
    (C {(test_expect_success)} {(SQ <"get value">)} 
      {
        (SQ <"\n"> <"\techo alpha >expect &&\n"> <"\tgit config beta.haha >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[509])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("[nextSection]\n") ("\tnonewline = wow\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [513]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <unset>)} 
      {(SQ <"\n"> <"\tgit config --unset beta.haha &&\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[539])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("[nextSection]\n") ("\tnonewline = wow\n") 
                ("\tNoNewLine = wow2 for me\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [543]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <multivar>)} 
      {
        (SQ <"\n"> <"\tgit config nextsection.NoNewLine \"wow2 for me\" \"for me$\" &&\n"> 
          <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <non-match>)} 
      {(SQ <"\n"> <"\tgit config --get nextsection.nonewline !for\n">)}
    )
    (C {(test_expect_success)} {(SQ <"non-match value">)} 
      {
        (SQ <"\n"> <"\techo wow >expect &&\n"> 
          <"\tgit config --get nextsection.nonewline !for >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"multi-valued get returns final one">)} 
      {
        (SQ <"\n"> <"\techo \"wow2 for me\" >expect &&\n"> 
          <"\tgit config --get nextsection.nonewline >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"multi-valued get-all returns all">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\twow\n"> <"\twow2 for me\n"> <"\tEOF\n"> 
          <"\tgit config --get-all nextsection.nonewline >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[627])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("[nextSection]\n") ("\tnonewline = wow3\n") 
                ("\tNoNewLine = wow2 for me\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [631]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"multivar replace">)} 
      {
        (SQ <"\n"> <"\tgit config nextsection.nonewline \"wow3\" \"wow$\" &&\n"> 
          <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"ambiguous unset">)} 
      {(SQ <"\n"> <"\ttest_must_fail git config --unset nextsection.nonewline\n">)}
    )
    (C {(test_expect_success)} {(SQ <"invalid unset">)} 
      {(SQ <"\n"> <"\ttest_must_fail git config --unset somesection.nonewline\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[682])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("[nextSection]\n") ("\tNoNewLine = wow2 for me\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [686]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"multivar unset">)} 
      {
        (SQ <"\n"> <"\tgit config --unset nextsection.nonewline \"wow3$\" &&\n"> 
          <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"invalid key">)} 
      {(SQ <"test_must_fail git config inval.2key blabla">)}
    )
    (C {(test_expect_success)} {(SQ <"correct key">)} {(SQ <"git config 123456.a123 987">)})
    (C {(test_expect_success)} {(SQ <"hierarchical section">)} 
      {(SQ <"\n"> <"\tgit config Version.1.2.3eX.Alpha beta\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[747])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[beta] ; silly comment # another comment\n") 
                ("noIndent= sillyValue ; 'nother silly comment\n") ("\n") ("# empty line\n") ("\t\t; comment\n") ("[nextSection]\n") ("\tNoNewLine = wow2 for me\n") 
                ("[123456]\n") ("\ta123 = 987\n") ("[Version ") (Right_DoubleQuote "\"") (1.2.3eX) (Right_DoubleQuote "\"") ("]\n") 
                ("\tAlpha = beta\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [751]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"hierarchical section value">)} 
      {(SQ <"\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[785])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("beta.noindent=sillyValue\n") ("nextsection.nonewline=wow2 for me\n") 
                ("123456.a123=987\n") ("version.1.2.3eX.alpha=beta\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [789]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"working --list">)} 
      {(SQ <"\n"> <"\tgit config --list > output &&\n"> <"\ttest_cmp expect output\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[812])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ )}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [816]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"--list without repo produces empty output">)} 
      {
        (SQ <"\n"> <"\tgit --git-dir=nonexistent config --list >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[836])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("beta.noindent\n") ("nextsection.nonewline\n") ("123456.a123\n") 
                ("version.1.2.3eX.alpha\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [840]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"--name-only --list">)} 
      {(SQ <"\n"> <"\tgit config --name-only --list >output &&\n"> <"\ttest_cmp expect output\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[864])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("beta.noindent sillyValue\n") ("nextsection.nonewline wow2 for me\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [868]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <--get-regexp>)} 
      {(SQ <"\n"> <"\tgit config --get-regexp in >output &&\n"> <"\ttest_cmp expect output\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[890])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("beta.noindent\n") ("nextsection.nonewline\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [894]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"--name-only --get-regexp">)} 
      {
        (SQ <"\n"> <"\tgit config --name-only --get-regexp in >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[916])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("wow2 for me\n") ("wow4 for you\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [920]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <--add>)} 
      {
        (SQ <"\n"> <"\tgit config --add nextsection.nonewline \"wow4 for you\" &&\n"> 
          <"\tgit config --get-all nextsection.nonewline > output &&\n"> <"\ttest_cmp expect output\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(.git/config)} spids:[943])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("[novalue]\n") ("\tvariable\n") ("[emptyvalue]\n") ("\tvariable =\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [947]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"get variable with no value">)} 
      {(SQ <"\n"> <"\tgit config --get novalue.variable ^$\n">)}
    )
    (C {(test_expect_success)} {(SQ <"get variable with empty value">)} 
      {(SQ <"\n"> <"\tgit config --get emptyvalue.variable ^$\n">)}
    )
    (SimpleCommand
      words: [{(echo)} {(novalue.variable)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[984])]
    )
    (C {(test_expect_success)} {(SQ <"get-regexp variable with no value">)} 
      {
        (SQ <"\n"> <"\tgit config --get-regexp novalue > output &&\n"> <"\ttest_cmp expect output\n">)
      }
    )
    (SimpleCommand
      words: [{(echo)} {(SQ <"novalue.variable true">)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1008])]
    )
    (C {(test_expect_success)} {(SQ <"get-regexp --bool variable with no value">)} 
      {
        (SQ <"\n"> <"\tgit config --bool --get-regexp novalue > output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (SimpleCommand
      words: [{(echo)} {(SQ <"emptyvalue.variable ">)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1032])]
    )
    (C {(test_expect_success)} {(SQ <"get-regexp variable with empty value">)} 
      {
        (SQ <"\n"> <"\tgit config --get-regexp emptyvalue > output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (SimpleCommand
      words: [{(echo)} {(true)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1054])]
    )
    (C {(test_expect_success)} {(SQ <"get bool variable with no value">)} 
      {
        (SQ <"\n"> <"\tgit config --bool novalue.variable > output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (SimpleCommand
      words: [{(echo)} {(false)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1076])]
    )
    (C {(test_expect_success)} {(SQ <"get bool variable with empty value">)} 
      {
        (SQ <"\n"> <"\tgit config --bool emptyvalue.variable > output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"no arguments, but no crash">)} 
      {
        (SQ <"\n"> <"\ttest_must_fail git config >output 2>&1 &&\n"> <"\ttest_i18ngrep usage output\n">)
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(.git/config)} spids:[1109])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("[a.b]\n") ("\tc = d\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1113]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1122])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("[a.b]\n") ("\tc = d\n") ("[a]\n") ("\tx = y\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1126]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"new section is partial match of another">)} 
      {(SQ <"\n"> <"\tgit config a.x y &&\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1150])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[a.b]\n") ("\tc = d\n") ("[a]\n") ("\tx = y\n") ("\tb = c\n") ("[b]\n") ("\tx = y\n"))
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1154]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"new variable inserts into proper section">)} 
      {
        (SQ <"\n"> <"\tgit config b.x y &&\n"> <"\tgit config a.b c &&\n"> 
          <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"alternative --file (non-existing file should fail)">)} 
      {(SQ <"\n"> <"\ttest_must_fail git config --file non-existing-config -l\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(other-config)} spids:[1194])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("[ein]\n") ("\tbahn = strasse\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1198]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1207])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("ein.bahn=strasse\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1211]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"alternative GIT_CONFIG">)} 
      {
        (SQ <"\n"> <"\tGIT_CONFIG=other-config git config --list >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"alternative GIT_CONFIG (--file)">)} 
      {
        (SQ <"\n"> <"\tgit config --file other-config --list >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"alternative GIT_CONFIG (--file=-)">)} 
      {
        (SQ <"\n"> <"\tgit config --file - --list <other-config >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"setting a value in stdin is an error">)} 
      {(SQ <"\n"> <"\ttest_must_fail git config --file - some.value foo\n">)}
    )
    (C {(test_expect_success)} {(SQ <"editing stdin is an error">)} 
      {(SQ <"\n"> <"\ttest_must_fail git config --file - --edit\n">)}
    )
    (C {(test_expect_success)} {(SQ <"refer config from subdirectory">)} 
      {
        (SQ <"\n"> <"\tmkdir x &&\n"> <"\t(\n"> <"\t\tcd x &&\n"> <"\t\techo strasse >expect &&\n"> 
          <"\t\tgit config --get --file ../other-config ein.bahn >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n"> <"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"refer config from subdirectory via --file">)} 
      {
        (SQ <"\n"> <"\t(\n"> <"\t\tcd x &&\n"> 
          <"\t\tgit config --file=../other-config --get ein.bahn >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1317])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("[ein]\n") ("\tbahn = strasse\n") ("[anwohner]\n") ("\tpark = ausweis\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1321]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"--set in alternative file">)} 
      {
        (SQ <"\n"> <"\tgit config --file=other-config anwohner.park ausweis &&\n"> 
          <"\ttest_cmp expect other-config\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(.git/config)} spids:[1345])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("# Hallo\n") ("\t#Bello\n") ("[branch ") (Right_DoubleQuote "\"") (eins) 
                (Right_DoubleQuote "\"") ("]\n") ("\tx = 1\n") ("[branch.eins]\n") ("\ty = 1\n") ("\t[branch ") (Right_DoubleQuote "\"") 
                ("1 234 blabl/a") (Right_DoubleQuote "\"") ("]\n") ("weird\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1349]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"rename section">)} 
      {(SQ <"\n"> <"\tgit config --rename-section branch.eins branch.zwei\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1384])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("# Hallo\n") ("\t#Bello\n") ("[branch ") (Right_DoubleQuote "\"") (zwei) 
                (Right_DoubleQuote "\"") ("]\n") ("\tx = 1\n") ("[branch ") (Right_DoubleQuote "\"") (zwei) (Right_DoubleQuote "\"") ("]\n") 
                ("\ty = 1\n") ("\t[branch ") (Right_DoubleQuote "\"") ("1 234 blabl/a") (Right_DoubleQuote "\"") ("]\n") ("weird\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1388]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"rename succeeded">)} 
      {(SQ <"\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (C {(test_expect_success)} {(SQ <"rename non-existing section">)} 
      {
        (SQ <"\n"> <"\ttest_must_fail git config --rename-section \\\n"> 
          <"\t\tbranch.\"world domination\" branch.drei\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"rename succeeded">)} 
      {(SQ <"\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (C {(test_expect_success)} {(SQ <"rename another section">)} 
      {(SQ <"\n"> <"\tgit config --rename-section branch.\"1 234 blabl/a\" branch.drei\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1464])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("# Hallo\n") ("\t#Bello\n") ("[branch ") (Right_DoubleQuote "\"") (zwei) 
                (Right_DoubleQuote "\"") ("]\n") ("\tx = 1\n") ("[branch ") (Right_DoubleQuote "\"") (zwei) (Right_DoubleQuote "\"") ("]\n") 
                ("\ty = 1\n") ("[branch ") (Right_DoubleQuote "\"") (drei) (Right_DoubleQuote "\"") ("]\n") ("weird\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1468]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"rename succeeded">)} 
      {(SQ <"\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_DGreat fd:-1 arg_word:{(.git/config)} spids:[1507])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[branch ") (Right_DoubleQuote "\"") (vier) (Right_DoubleQuote "\"") ("] z = 1\n"))
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1511]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"rename a section with a var on the same line">)} 
      {(SQ <"\n"> <"\tgit config --rename-section branch.vier branch.zwei\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1535])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("# Hallo\n") ("\t#Bello\n") ("[branch ") (Right_DoubleQuote "\"") (zwei) 
                (Right_DoubleQuote "\"") ("]\n") ("\tx = 1\n") ("[branch ") (Right_DoubleQuote "\"") (zwei) (Right_DoubleQuote "\"") ("]\n") 
                ("\ty = 1\n") ("[branch ") (Right_DoubleQuote "\"") (drei) (Right_DoubleQuote "\"") ("]\n") ("weird\n") ("[branch ") 
                (Right_DoubleQuote "\"") (zwei) (Right_DoubleQuote "\"") ("]\n") ("\tz = 1\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1539]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"rename succeeded">)} 
      {(SQ <"\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (C {(test_expect_success)} {(SQ <"renaming empty section name is rejected">)} 
      {(SQ <"\n"> <"\ttest_must_fail git config --rename-section branch.zwei \"\"\n">)}
    )
    (C {(test_expect_success)} {(SQ <"renaming to bogus section is rejected">)} 
      {(SQ <"\n"> <"\ttest_must_fail git config --rename-section branch.zwei \"bogus name\"\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_DGreat fd:-1 arg_word:{(.git/config)} spids:[1608])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("  [branch ") (Right_DoubleQuote "\"") (zwei) (Right_DoubleQuote "\"") 
                ("] a = 1 [branch ") (Right_DoubleQuote "\"") (vier) (Right_DoubleQuote "\"") ("]\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1612]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"remove section">)} 
      {(SQ <"\n"> <"\tgit config --remove-section branch.zwei\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1640])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("# Hallo\n") ("\t#Bello\n") ("[branch ") (Right_DoubleQuote "\"") (drei) 
                (Right_DoubleQuote "\"") ("]\n") ("weird\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1644]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"section was removed properly">)} 
      {(SQ <"\n"> <"\ttest_cmp expect .git/config\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1671])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[gitcvs]\n") ("\tenabled = true\n") ("\tdbname = %Ggitcvs2.%a.%m.sqlite\n") 
                ("[gitcvs ") (Right_DoubleQuote "\"") (ext) (Right_DoubleQuote "\"") ("]\n") ("\tdbname = %Ggitcvs1.%a.%m.sqlite\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1675]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"section ending">)} 
      {
        (SQ <"\n"> <"\trm -f .git/config &&\n"> <"\tgit config gitcvs.enabled true &&\n"> 
          <"\tgit config gitcvs.ext.dbname %Ggitcvs1.%a.%m.sqlite &&\n"> <"\tgit config gitcvs.dbname %Ggitcvs2.%a.%m.sqlite &&\n"> <"\ttest_cmp expect .git/config\n"> <"\n">
        )
      }
    )
    (C {(test_expect_success)} {(numbers)} 
      {
        (SQ <"\n"> <"\tgit config kilo.gram 1k &&\n"> <"\tgit config mega.ton 1m &&\n"> 
          <"\techo 1024 >expect &&\n"> <"\techo 1048576 >>expect &&\n"> <"\tgit config --int --get kilo.gram >actual &&\n"> 
          <"\tgit config --int --get mega.ton >>actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--int is at least 64 bits">)} 
      {
        (SQ <"\n"> <"\tgit config giga.watts 121g &&\n"> <"\techo 129922760704 >expect &&\n"> 
          <"\tgit config --int --get giga.watts >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"invalid unit">)} 
      {
        (SQ <"\n"> <"\tgit config aninvalid.unit \"1auto\" &&\n"> <"\techo 1auto >expect &&\n"> 
          <"\tgit config aninvalid.unit >actual &&\n"> <"\ttest_cmp expect actual &&\n"> 
          <"\ttest_must_fail git config --int --get aninvalid.unit 2>actual &&\n"> 
          <
"\ttest_i18ngrep \"bad numeric config value .1auto. for .aninvalid.unit. in file .git/config: invalid unit\" actual\n"
          >
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"invalid stdin config">)} 
      {
        (SQ <"\n"> 
          <"\techo \"[broken\" | test_must_fail git config --list --file - >output 2>&1 &&\n"> <"\ttest_i18ngrep \"bad config line 1 in standard input\" output\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1769])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("true\n") ("false\n") ("true\n") ("false\n") ("true\n") ("false\n") ("true\n") 
                ("false\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1773]
        )
      ]
    )
    (C {(test_expect_success)} {(bool)} 
      {
        (SQ <"\n"> <"\n"> <"\tgit config bool.true1 01 &&\n"> <"\tgit config bool.true2 -1 &&\n"> 
          <"\tgit config bool.true3 YeS &&\n"> <"\tgit config bool.true4 true &&\n"> <"\tgit config bool.false1 000 &&\n"> 
          <"\tgit config bool.false2 \"\" &&\n"> <"\tgit config bool.false3 nO &&\n"> <"\tgit config bool.false4 FALSE &&\n"> <"\trm -f result &&\n"> 
          <"\tfor i in 1 2 3 4\n"> <"\tdo\n"> <"\t    git config --bool --get bool.true$i >>result\n"> 
          <"\t    git config --bool --get bool.false$i >>result\n"> <"        done &&\n"> <"\ttest_cmp expect result">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"invalid bool (--get)">)} 
      {
        (SQ <"\n"> <"\n"> <"\tgit config bool.nobool foobar &&\n"> 
          <"\ttest_must_fail git config --bool --get bool.nobool">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"invalid bool (set)">)} 
      {(SQ <"\n"> <"\n"> <"\ttest_must_fail git config --bool bool.nobool foobar">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1840])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("[bool]\n") ("\ttrue1 = true\n") ("\ttrue2 = true\n") ("\ttrue3 = true\n") 
              ("\ttrue4 = true\n") ("\tfalse1 = false\n") ("\tfalse2 = false\n") ("\tfalse3 = false\n") ("\tfalse4 = false\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [1844]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"set --bool">)} 
      {
        (SQ <"\n"> <"\n"> <"\trm -f .git/config &&\n"> <"\tgit config --bool bool.true1 01 &&\n"> 
          <"\tgit config --bool bool.true2 -1 &&\n"> <"\tgit config --bool bool.true3 YeS &&\n"> <"\tgit config --bool bool.true4 true &&\n"> 
          <"\tgit config --bool bool.false1 000 &&\n"> <"\tgit config --bool bool.false2 \"\" &&\n"> <"\tgit config --bool bool.false3 nO &&\n"> 
          <"\tgit config --bool bool.false4 FALSE &&\n"> <"\ttest_cmp expect .git/config">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1873])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {("[int]\n") ("\tval1 = 1\n") ("\tval2 = -1\n") ("\tval3 = 5242880\n")}
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [1877]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"set --int">)} 
      {
        (SQ <"\n"> <"\n"> <"\trm -f .git/config &&\n"> <"\tgit config --int int.val1 01 &&\n"> 
          <"\tgit config --int int.val2 -1 &&\n"> <"\tgit config --int int.val3 5m &&\n"> <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"get --bool-or-int">)} 
      {
        (SQ <"\n"> <"\tcat >.git/config <<-\\EOF &&\n"> <"\t[bool]\n"> <"\ttrue1\n"> <"\ttrue2 = true\n"> 
          <"\tfalse = false\n"> <"\t[int]\n"> <"\tint1 = 0\n"> <"\tint2 = 1\n"> <"\tint3 = -1\n"> <"\tEOF\n"> 
          <"\tcat >expect <<-\\EOF &&\n"> <"\ttrue\n"> <"\ttrue\n"> <"\tfalse\n"> <"\t0\n"> <"\t1\n"> <"\t-1\n"> <"\tEOF\n"> <"\t{\n"> 
          <"\t\tgit config --bool-or-int bool.true1 &&\n"> <"\t\tgit config --bool-or-int bool.true2 &&\n"> <"\t\tgit config --bool-or-int bool.false &&\n"> 
          <"\t\tgit config --bool-or-int int.int1 &&\n"> <"\t\tgit config --bool-or-int int.int2 &&\n"> <"\t\tgit config --bool-or-int int.int3\n"> 
          <"\t} >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1939])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("[bool]\n") ("\ttrue1 = true\n") ("\tfalse1 = false\n") ("\ttrue2 = true\n") 
              ("\tfalse2 = false\n") ("[int]\n") ("\tint1 = 0\n") ("\tint2 = 1\n") ("\tint3 = -1\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [1942]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"set --bool-or-int">)} 
      {
        (SQ <"\n"> <"\trm -f .git/config &&\n"> <"\tgit config --bool-or-int bool.true1 true &&\n"> 
          <"\tgit config --bool-or-int bool.false1 false &&\n"> <"\tgit config --bool-or-int bool.true2 yes &&\n"> <"\tgit config --bool-or-int bool.false2 no &&\n"> 
          <"\tgit config --bool-or-int int.int1 0 &&\n"> <"\tgit config --bool-or-int int.int2 1 &&\n"> <"\tgit config --bool-or-int int.int3 -1 &&\n"> 
          <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1969])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("[path]\n") ("\thome = ~/\n") ("\tnormal = /dev/null\n") ("\ttrailingtilde = foo~\n")}
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [1972]
        )
      ]
    )
    (C {(test_expect_success)} {(KW_Bang "!") (MINGW)} {(SQ <"set --path">)} 
      {
        (SQ <"\n"> <"\trm -f .git/config &&\n"> <"\tgit config --path path.home \"~/\" &&\n"> 
          <"\tgit config --path path.normal \"/dev/null\" &&\n"> <"\tgit config --path path.trailingtilde \"foo~\" &&\n"> <"\ttest_cmp expect .git/config">
        )
      }
    )
    (If
      arms: [
        (if_arm
          cond: [
            (AndOr
              children: [
                (C {(test_have_prereq)} {(KW_Bang "!") (MINGW)})
                (C {(test)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name HOME>
                        suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(set)})
                        spids: [2008 2012]
                      )
                    )
                  }
                )
              ]
              op_id: Op_DAmp
            )
          ]
          action: [(C {(test_set_prereq)} {(HOMEVAR)})]
          spids: [-1 2015]
        )
      ]
      spids: [-1 2022]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[2027])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ($ VSub_Name "$HOME") ("/\n") ("/dev/null\n") ("foo~\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2030]
        )
      ]
    )
    (C {(test_expect_success)} {(HOMEVAR)} {(SQ <"get --path">)} 
      {
        (SQ <"\n"> <"\tgit config --get --path path.home > result &&\n"> 
          <"\tgit config --get --path path.normal >> result &&\n"> <"\tgit config --get --path path.trailingtilde >> result &&\n"> <"\ttest_cmp expect result\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[2057])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {("/dev/null\n") ("foo~\n")}
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [2060]
        )
      ]
    )
    (C {(test_expect_success)} {(KW_Bang "!") (MINGW)} {(SQ <"get --path copes with unset $HOME">)} 
      {
        (SQ <"\n"> <"\t(\n"> <"\t\tunset HOME;\n"> 
          <"\t\ttest_must_fail git config --get --path path.home \\\n"> <"\t\t\t>result 2>msg &&\n"> <"\t\tgit config --get --path path.normal >>result &&\n"> 
          <"\t\tgit config --get --path path.trailingtilde >>result\n"> <"\t) &&\n"> <"\ttest_i18ngrep \"[Ff]ailed to expand.*~/\" msg &&\n"> <"\ttest_cmp expect result\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"get --path barfs on boolean variable">)} 
      {
        (SQ <"\n"> <"\techo \"[path]bool\" >.git/config &&\n"> 
          <"\ttest_must_fail git config --get --path path.bool\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[2103])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("[quote]\n") ("\tleading = ") (Right_DoubleQuote "\"") (" test") 
                (Right_DoubleQuote "\"") ("\n") ("\tending = ") (Right_DoubleQuote "\"") ("test ") (Right_DoubleQuote "\"") ("\n") 
                ("\tsemicolon = ") (Right_DoubleQuote "\"") ("test;test") (Right_DoubleQuote "\"") ("\n") ("\thash = ") 
                (Right_DoubleQuote "\"") ("test#test") (Right_DoubleQuote "\"") ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2107]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <quoting>)} 
      {
        (SQ <"\n"> <"\trm -f .git/config &&\n"> <"\tgit config quote.leading \" test\" &&\n"> 
          <"\tgit config quote.ending \"test \" &&\n"> <"\tgit config quote.semicolon \"test;test\" &&\n"> <"\tgit config quote.hash \"test#test\" &&\n"> 
          <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"key with newline">)} 
      {(SQ <"\n"> <"\ttest_must_fail git config \"key.with\n"> <"newline\" 123">)}
    )
    (C {(test_expect_success)} {(SQ <"value with newline">)} 
      {(SQ <"git config key.sub value.with\\\\\\\n"> <newline>)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(.git/config)} spids:[2176])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("[section]\n") ("\t; comment \\\n") ("\tcontinued = cont\\\n") ("inued\n") 
              ("\tnoncont   = not continued ; \\\n") ("\tquotecont = \"cont;\\\n") ("inued\"\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [2180]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[2187])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("section.continued=continued\n") ("section.noncont=not continued\n") 
              ("section.quotecont=cont;inued\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [2191]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"value continued on next line">)} 
      {(SQ <"\n"> <"\tgit config --list > result &&\n"> <"\ttest_cmp result expect\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(.git/config)} spids:[2211])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("[section \"sub=section\"]\n") ("\tval1 = foo=bar\n") ("\tval2 = foo\\nbar\n") 
              ("\tval3 = \\n\\n\n") ("\tval4 =\n") ("\tval5\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [2215]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[2222])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("section.sub=section.val1\n") ("foo=barQsection.sub=section.val2\n") ("foo\n") 
              ("barQsection.sub=section.val3\n") ("\n") ("\n") ("Qsection.sub=section.val4\n") ("Qsection.sub=section.val5Q\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [2226]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"--null --list">)} 
      {
        (SQ <"\n"> <"\tgit config --null --list >result.raw &&\n"> 
          <"\tnul_to_q <result.raw >result &&\n"> <"\techo >>result &&\n"> <"\ttest_cmp expect result\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--null --get-regexp">)} 
      {
        (SQ <"\n"> <"\tgit config --null --get-regexp \"val[0-9]\" >result.raw &&\n"> 
          <"\tnul_to_q <result.raw >result &&\n"> <"\techo >>result &&\n"> <"\ttest_cmp expect result\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"inner whitespace kept verbatim">)} 
      {
        (SQ <"\n"> <"\tgit config section.val \"foo \t  bar\" &&\n"> 
          <"\techo \"foo \t  bar\" >expect &&\n"> <"\tgit config section.val >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} {(SQ <"symlinked configuration">)} 
      {
        (SQ <"\n"> <"\tln -s notyet myconfig &&\n"> 
          <"\tgit config --file=myconfig test.frotz nitfol &&\n"> <"\ttest -h myconfig &&\n"> <"\ttest -f notyet &&\n"> 
          <"\ttest \"z$(git config --file=notyet test.frotz)\" = znitfol &&\n"> <"\tgit config --file=myconfig test.xyzzy rezrov &&\n"> <"\ttest -h myconfig &&\n"> 
          <"\ttest -f notyet &&\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tnitfol\n"> <"\trezrov\n"> <"\tEOF\n"> <"\t{\n"> 
          <"\t\tgit config --file=notyet test.frotz &&\n"> <"\t\tgit config --file=notyet test.xyzzy\n"> <"\t} >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"nonexistent configuration">)} 
      {
        (SQ <"\n"> <"\ttest_must_fail git config --file=doesnotexist --list &&\n"> 
          <"\ttest_must_fail git config --file=doesnotexist test.xyzzy\n">
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} {(SQ <"symlink to nonexistent configuration">)} 
      {
        (SQ <"\n"> <"\tln -s doesnotexist linktonada &&\n"> 
          <"\tln -s linktonada linktolinktonada &&\n"> <"\ttest_must_fail git config --file=linktonada --list &&\n"> 
          <"\ttest_must_fail git config --file=linktolinktonada --list\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"check split_cmdline return">)} 
      {
        (DQ ("\n") ("\tgit config alias.split-cmdline-fix 'echo ") 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("' &&\n") ("\ttest_must_fail git split-cmdline-fix &&\n") ("\techo foo > foo &&\n") 
          ("\tgit add foo &&\n") ("\tgit commit -m 'initial commit' &&\n") ("\tgit config branch.master.mergeoptions 'echo ") 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("' &&\n") ("\ttest_must_fail git merge master\n")
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"git -c \"key=value\" support">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tvalue\n"> <"\tvalue\n"> <"\ttrue\n"> <"\tEOF\n"> 
          <"\t{\n"> <"\t\tgit -c core.name=value config core.name &&\n"> 
          <"\t\tgit -c foo.CamelCase=value config foo.camelcase &&\n"> <"\t\tgit -c foo.flag config --bool foo.flag\n"> <"\t} >actual &&\n"> <"\ttest_cmp expect actual &&\n"> 
          <"\ttest_must_fail git -c name=value config core.name\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"git -c can represent empty string">)} 
      {
        (SQ <"\n"> <"\techo >expect &&\n"> <"\tgit -c foo.empty= config --path foo.empty >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"key sanity-checking">)} 
      {
        (SQ <"\n"> <"\ttest_must_fail git config foo=bar &&\n"> 
          <"\ttest_must_fail git config foo=.bar &&\n"> <"\ttest_must_fail git config foo.ba=r &&\n"> <"\ttest_must_fail git config foo.1bar &&\n"> 
          <"\ttest_must_fail git config foo.\"ba\n"> <"\t\t\t\tz\".bar &&\n"> <"\ttest_must_fail git config . false &&\n"> 
          <"\ttest_must_fail git config .foo false &&\n"> <"\ttest_must_fail git config foo. false &&\n"> <"\ttest_must_fail git config .foo. false &&\n"> 
          <"\tgit config foo.bar true &&\n"> <"\tgit config foo.\"ba =z\".bar false\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"git -c works with aliases of builtins">)} 
      {
        (SQ <"\n"> <"\tgit config alias.checkconfig \"-c foo.check=bar config foo.check\" &&\n"> 
          <"\techo bar >expect &&\n"> <"\tgit checkconfig >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"git -c does not split values on equals">)} 
      {
        (SQ <"\n"> <"\techo \"value with = in it\" >expect &&\n"> 
          <"\tgit -c core.foo=\"value with = in it\" config core.foo >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"git -c dies on bogus config">)} 
      {(SQ <"\n"> <"\ttest_must_fail git -c core.bare=foo rev-parse\n">)}
    )
    (C {(test_expect_success)} {(SQ <"git -c complains about empty key">)} 
      {(SQ <"\n"> <"\ttest_must_fail git -c \"=foo\" rev-parse\n">)}
    )
    (C {(test_expect_success)} {(SQ <"git -c complains about empty key and value">)} 
      {(SQ <"\n"> <"\ttest_must_fail git -c \"\" rev-parse\n">)}
    )
    (C {(test_expect_success)} {(SQ <"multiple git -c appends config">)} 
      {
        (SQ <"\n"> <"\ttest_config alias.x \"!git -c x.two=2 config --get-regexp ^x\\.*\" &&\n"> 
          <"\tcat >expect <<-\\EOF &&\n"> <"\tx.one 1\n"> <"\tx.two 2\n"> <"\tEOF\n"> <"\tgit -c x.one=1 x >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"git -c is not confused by empty environment">)} 
      {(SQ <"\n"> <"\tGIT_CONFIG_PARAMETERS=\"\" git -c x.one=1 config --list\n">)}
    )
    (C {(test_expect_success)} {(SQ <"git config --edit works">)} 
      {
        (SQ <"\n"> <"\tgit config -f tmp test.value no &&\n"> <"\techo test.value=yes >expect &&\n"> 
          <"\tGIT_EDITOR=\"echo [test]value=yes >\" git config -f tmp --edit &&\n"> <"\tgit config -f tmp --list >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"git config --edit respects core.editor">)} 
      {
        (SQ <"\n"> <"\tgit config -f tmp test.value no &&\n"> <"\techo test.value=yes >expect &&\n"> 
          <"\ttest_config core.editor \"echo [test]value=yes >\" &&\n"> <"\tgit config -f tmp --edit &&\n"> <"\tgit config -f tmp --list >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"barf on syntax error">)} 
      {
        (SQ <"\n"> <"\tcat >.git/config <<-\\EOF &&\n"> <"\t# broken section line\n"> <"\t[section]\n"> 
          <"\tkey garbage\n"> <"\tEOF\n"> <"\ttest_must_fail git config --get section.key >actual 2>error &&\n"> 
          <"\ttest_i18ngrep \" line 3 \" error\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"barf on incomplete section header">)} 
      {
        (SQ <"\n"> <"\tcat >.git/config <<-\\EOF &&\n"> <"\t# broken section line\n"> <"\t[section\n"> 
          <"\tkey = value\n"> <"\tEOF\n"> <"\ttest_must_fail git config --get section.key >actual 2>error &&\n"> 
          <"\ttest_i18ngrep \" line 2 \" error\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"barf on incomplete string">)} 
      {
        (SQ <"\n"> <"\tcat >.git/config <<-\\EOF &&\n"> <"\t# broken section line\n"> <"\t[section]\n"> 
          <"\tkey = \"value string\n"> <"\tEOF\n"> <"\ttest_must_fail git config --get section.key >actual 2>error &&\n"> 
          <"\ttest_i18ngrep \" line 3 \" error\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <urlmatch>)} 
      {
        (SQ <"\n"> <"\tcat >.git/config <<-\\EOF &&\n"> <"\t[http]\n"> <"\t\tsslVerify\n"> 
          <"\t[http \"https://weak.example.com\"]\n"> <"\t\tsslVerify = false\n"> <"\t\tcookieFile = /tmp/cookie.txt\n"> <"\tEOF\n"> <"\n"> 
          <
"\ttest_expect_code 1 git config --bool --get-urlmatch doesnt.exist https://good.example.com >actual &&\n"
          > <"\ttest_must_be_empty actual &&\n"> <"\n"> <"\techo true >expect &&\n"> 
          <
"\tgit config --bool --get-urlmatch http.SSLverify https://good.example.com >actual &&\n"
          > <"\ttest_cmp expect actual &&\n"> <"\n"> <"\techo false >expect &&\n"> 
          <
"\tgit config --bool --get-urlmatch http.sslverify https://weak.example.com >actual &&\n"
          > <"\ttest_cmp expect actual &&\n"> <"\n"> <"\t{\n"> <"\t\techo http.cookiefile /tmp/cookie.txt &&\n"> 
          <"\t\techo http.sslverify false\n"> <"\t} >expect &&\n"> <"\tgit config --get-urlmatch HTTP https://weak.example.com >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_failure)} {(SQ <"unsetting the last key in a section removes header">)} 
      {
        (SQ <"\n"> <"\tcat >.git/config <<-\\EOF &&\n"> 
          <"\t# some generic comment on the configuration file itself\n"> <"\t# a comment specific to this \"section\" section.\n"> <"\t[section]\n"> 
          <"\t# some intervening lines\n"> <"\t# that should also be dropped\n"> <"\n"> <"\tkey = value\n"> 
          <"\t# please be careful when you update the above variable\n"> <"\tEOF\n"> <"\n"> <"\tcat >expect <<-\\EOF &&\n"> 
          <"\t# some generic comment on the configuration file itself\n"> <"\tEOF\n"> <"\n"> <"\tgit config --unset section.key &&\n"> <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (C {(test_expect_failure)} {(SQ <"adding a key into an empty section reuses header">)} 
      {
        (SQ <"\n"> <"\tcat >.git/config <<-\\EOF &&\n"> <"\t[section]\n"> <"\tEOF\n"> <"\n"> 
          <"\tq_to_tab >expect <<-\\EOF &&\n"> <"\t[section]\n"> <"\tQkey = value\n"> <"\tEOF\n"> <"\n"> <"\tgit config section.key value &&\n"> 
          <"\ttest_cmp expect .git/config\n">
        )
      }
    )
    (C {(test_expect_success)} {(POSIXPERM) (Lit_Comma ",") (PERL)} 
      {(SQ <"preserves existing permissions">)} 
      {
        (SQ <"\n"> <"\tchmod 0600 .git/config &&\n"> <"\tgit config imap.pass Hunter2 &&\n"> 
          <"\tperl -e \\\n"> <"\t  \"die q(badset) if ((stat(q(.git/config)))[2] & 07777) != 0600\" &&\n"> 
          <"\tgit config --rename-section imap pop &&\n"> <"\tperl -e \\\n"> <"\t  \"die q(badrename) if ((stat(q(.git/config)))[2] & 07777) != 0600\"\n">
        )
      }
    )
    (AndOr
      children: [
        (Pipeline children:[(C {(test_have_prereq)} {(MINGW)})] negated:True)
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:HOME)
              op: Equal
              rhs: 
                {
                  (DQ 
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(pwd)})])
                      left_token: <Left_CommandSub "$(">
                      spids: [2738 2740]
                    )
                  )
                }
              spids: [2736]
            )
          ]
          spids: [2736]
        )
      ]
      op_id: Op_DPipe
    )
    (C {(test_expect_success)} {(SQ <"set up --show-origin tests">)} 
      {
        (SQ <"\n"> <"\tINCLUDE_DIR=\"$HOME/include\" &&\n"> <"\tmkdir -p \"$INCLUDE_DIR\" &&\n"> 
          <"\tcat >\"$INCLUDE_DIR\"/absolute.include <<-\\EOF &&\n"> <"\t\t[user]\n"> <"\t\t\tabsolute = include\n"> <"\tEOF\n"> 
          <"\tcat >\"$INCLUDE_DIR\"/relative.include <<-\\EOF &&\n"> <"\t\t[user]\n"> <"\t\t\trelative = include\n"> <"\tEOF\n"> <"\tcat >\"$HOME\"/.gitconfig <<-EOF &&\n"> 
          <"\t\t[user]\n"> <"\t\t\tglobal = true\n"> <"\t\t\toverride = global\n"> <"\t\t[include]\n"> 
          <"\t\t\tpath = \"$INCLUDE_DIR/absolute.include\"\n"> <"\tEOF\n"> <"\tcat >.git/config <<-\\EOF\n"> <"\t\t[user]\n"> <"\t\t\tlocal = true\n"> 
          <"\t\t\toverride = local\n"> <"\t\t[include]\n"> <"\t\t\tpath = ../include/relative.include\n"> <"\tEOF\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--show-origin with --list">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\t\tfile:$HOME/.gitconfig\tuser.global=true\n"> 
          <"\t\tfile:$HOME/.gitconfig\tuser.override=global\n"> <"\t\tfile:$HOME/.gitconfig\tinclude.path=$INCLUDE_DIR/absolute.include\n"> 
          <"\t\tfile:$INCLUDE_DIR/absolute.include\tuser.absolute=include\n"> <"\t\tfile:.git/config\tuser.local=true\n"> <"\t\tfile:.git/config\tuser.override=local\n"> 
          <"\t\tfile:.git/config\tinclude.path=../include/relative.include\n"> <"\t\tfile:.git/../include/relative.include\tuser.relative=include\n"> 
          <"\t\tcommand line:\tuser.cmdline=true\n"> <"\tEOF\n"> <"\tgit -c user.cmdline=true config --list --show-origin >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--show-origin with --list --null">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\t\tfile:$HOME/.gitconfigQuser.global\n"> 
          <"\t\ttrueQfile:$HOME/.gitconfigQuser.override\n"> <"\t\tglobalQfile:$HOME/.gitconfigQinclude.path\n"> 
          <"\t\t$INCLUDE_DIR/absolute.includeQfile:$INCLUDE_DIR/absolute.includeQuser.absolute\n"> <"\t\tincludeQfile:.git/configQuser.local\n"> <"\t\ttrueQfile:.git/configQuser.override\n"> 
          <"\t\tlocalQfile:.git/configQinclude.path\n"> <"\t\t../include/relative.includeQfile:.git/../include/relative.includeQuser.relative\n"> 
          <"\t\tincludeQcommand line:Quser.cmdline\n"> <"\t\ttrueQ\n"> <"\tEOF\n"> 
          <"\tgit -c user.cmdline=true config --null --list --show-origin >output.raw &&\n"> <"\tnul_to_q <output.raw >output &&\n"> 
          <"\t# The here-doc above adds a newline that the --null output would not\n"> <"\t# include. Add it here to make the two comparable.\n"> <"\techo >>output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--show-origin with single file">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\t\tfile:.git/config\tuser.local=true\n"> 
          <"\t\tfile:.git/config\tuser.override=local\n"> <"\t\tfile:.git/config\tinclude.path=../include/relative.include\n"> <"\tEOF\n"> 
          <"\tgit config --local --list --show-origin >output &&\n"> <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--show-origin with --get-regexp">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\t\tfile:$HOME/.gitconfig\tuser.global true\n"> 
          <"\t\tfile:.git/config\tuser.local true\n"> <"\tEOF\n"> <"\tgit config --show-origin --get-regexp \"user\\.[g|l].*\" >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--show-origin getting a single key">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\t\tfile:.git/config\tlocal\n"> <"\tEOF\n"> 
          <"\tgit config --show-origin user.override >output &&\n"> <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"set up custom config file">)} 
      {
        (SQ <"\n"> <"\tCUSTOM_CONFIG_FILE=\"file\\\" (dq) and spaces.conf\" &&\n"> 
          <"\tcat >\"$CUSTOM_CONFIG_FILE\" <<-\\EOF\n"> <"\t\t[user]\n"> <"\t\t\tcustom = true\n"> <"\tEOF\n">
        )
      }
    )
    (C {(test_expect_success)} {(KW_Bang "!") (MINGW)} 
      {(SQ <"--show-origin escape special file name characters">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> 
          <"\t\tfile:\"file\\\" (dq) and spaces.conf\"\tuser.custom=true\n"> <"\tEOF\n"> <"\tgit config --file \"$CUSTOM_CONFIG_FILE\" --show-origin --list >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--show-origin stdin">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\t\tstandard input:\tuser.custom=true\n"> 
          <"\tEOF\n"> <"\tgit config --file - --show-origin --list <\"$CUSTOM_CONFIG_FILE\" >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--show-origin stdin with file include">)} 
      {
        (SQ <"\n"> <"\tcat >\"$INCLUDE_DIR\"/stdin.include <<-EOF &&\n"> <"\t\t[user]\n"> 
          <"\t\t\tstdin = include\n"> <"\tEOF\n"> <"\tcat >expect <<-EOF &&\n"> <"\t\tfile:$INCLUDE_DIR/stdin.include\tinclude\n"> <"\tEOF\n"> 
          <"\techo \"[include]path=\\\"$INCLUDE_DIR\\\"/stdin.include\" \\\n"> <"\t\t| git config --show-origin --includes --file - user.stdin >output &&\n"> 
          <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(KW_Bang "!") (MINGW)} {(SQ <"--show-origin blob">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> 
          <"\t\tblob:a9d9f9e555b5c6f07cbe09d3f06fe3df11e09c08\tuser.custom=true\n"> <"\tEOF\n"> <"\tblob=$(git hash-object -w \"$CUSTOM_CONFIG_FILE\") &&\n"> 
          <"\tgit config --blob=$blob --show-origin --list >output &&\n"> <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_expect_success)} {(KW_Bang "!") (MINGW)} {(SQ <"--show-origin blob ref">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> 
          <"\t\tblob:\"master:file\\\" (dq) and spaces.conf\"\tuser.custom=true\n"> <"\tEOF\n"> <"\tgit add \"$CUSTOM_CONFIG_FILE\" &&\n"> <"\tgit commit -m \"new config file\" &&\n"> 
          <"\tgit config --blob=master:\"$CUSTOM_CONFIG_FILE\" --show-origin --list >output &&\n"> <"\ttest_cmp expect output\n">
        )
      }
    )
    (C {(test_done)})
  ]
)