(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description spids:[13]) 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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 49 stdin_parts: [('[core]\n') ('\tpenguin = little blue\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 77 stdin_parts: [('[core]\n') ('\tpenguin = little blue\n') ('\tMovie = BadPhysics\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 107 stdin_parts: [ ('[core]\n') ('\tpenguin = little blue\n') ('\tMovie = BadPhysics\n') ('[Cores]\n') ('\tWhatEver = Second\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 138 stdin_parts: [ ('[core]\n') ('\tpenguin = little blue\n') ('\tMovie = BadPhysics\n') ('\tUPPERCASE = true\n') ('[Cores]\n') ('\tWhatEver = Second\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 194 stdin_parts: [ ('[core]\n') ('\tpenguin = very blue\n') ('\tMovie = BadPhysics\n') ('\tUPPERCASE = true\n') ('\tpenguin = kingpin\n') ('[Cores]\n') ('\tWhatEver = Second\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(.git/config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 273 stdin_parts: [('[alpha]\n') ('bar = foo\n') ('[beta]\n') ('baz = multiple \\\n') ('lines\n')] ) ] ) (C {(test_expect_success)} {(SQ <'unset with cont. lines'>)} {(SQ <'\n'> <'\tgit config --unset beta.baz\n'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 300 stdin_parts: [('[alpha]\n') ('bar = foo\n') ('[beta]\n')] ) ] ) (C {(test_expect_success)} {(SQ <'unset with cont. lines is correct'>)} {(SQ <'test_cmp expect .git/config'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(.git/config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 337 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 375 stdin_parts: [ ('[beta] ; silly comment # another comment\n') ("noIndent= sillyValue ; 'nother silly comment\n") ('\n') ('# empty line\n') ('\t\t; comment\n') ('[nextSection] noNewline = ouch\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 444 stdin_parts: [ ('[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') ] ) ] ) (C {(test_expect_success)} {(SQ <'all replaced'>)} {(SQ <'\n'> <'\ttest_cmp expect .git/config\n'>)}) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 476 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 509 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 555 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 588 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 678 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 734 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 809 stdin_parts: [ ('[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') ] ) ] ) (C {(test_expect_success)} {(SQ <'hierarchical section value'>)} {(SQ <'\n'> <'\ttest_cmp expect .git/config\n'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 838 stdin_parts: [ ('beta.noindent=sillyValue\n') ('nextsection.nonewline=wow2 for me\n') ('123456.a123=987\n') ('version.1.2.3eX.alpha=beta\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op:<Redir_DLess '<<'> fd:16777215 here_begin:{(EOF)} here_end_span_id:863) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 893 stdin_parts: [ ('beta.noindent\n') ('nextsection.nonewline\n') ('123456.a123\n') ('version.1.2.3eX.alpha\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 921 stdin_parts: [('beta.noindent sillyValue\n') ('nextsection.nonewline wow2 for me\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 949 stdin_parts: [('beta.noindent\n') ('nextsection.nonewline\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 977 stdin_parts: [('wow2 for me\n') ('wow4 for you\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(.git/config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1008 stdin_parts: [('[novalue]\n') ('\tvariable\n') ('[emptyvalue]\n') ('\tvariable =\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(.git/config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1174 stdin_parts: [('[a.b]\n') ('\tc = d\n')] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1191 stdin_parts: [('[a.b]\n') ('\tc = d\n') ('[a]\n') ('\tx = y\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1224 stdin_parts: [ ('[a.b]\n') ('\tc = d\n') ('[a]\n') ('\tx = y\n') ('\tb = c\n') ('[b]\n') ('\tx = y\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(other-config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1265 stdin_parts: [('[ein]\n') ('\tbahn = strasse\n')] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1279 stdin_parts: [('ein.bahn=strasse\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1394 stdin_parts: [('[ein]\n') ('\tbahn = strasse\n') ('[anwohner]\n') ('\tpark = ausweis\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(.git/config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1436 stdin_parts: [ ('# 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') ] ) ] ) (C {(test_expect_success)} {(SQ <'rename section'>)} {(SQ <'\n'> <'\tgit config --rename-section branch.eins branch.zwei\n'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1481 stdin_parts: [ ('# 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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1563 stdin_parts: [ ('# 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') ] ) ] ) (C {(test_expect_success)} {(SQ <'rename succeeded'>)} {(SQ <'\n'> <'\ttest_cmp expect .git/config\n'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(.git/config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1593 stdin_parts: [('[branch ') (Right_DoubleQuote '"') (vier) (Right_DoubleQuote '"') ('] z = 1\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1644 stdin_parts: [ ('# 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') ] ) ] ) (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:<Redir_DGreat '>>'> fd:16777215 arg_word:{(.git/config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1702 stdin_parts: [ (' [branch ') (Right_DoubleQuote '"') (zwei) (Right_DoubleQuote '"') ('] a = 1 [branch ') (Right_DoubleQuote '"') (vier) (Right_DoubleQuote '"') (']\n') ] ) ] ) (C {(test_expect_success)} {(SQ <'remove section'>)} {(SQ <'\n'> <'\tgit config --remove-section branch.zwei\n'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1735 stdin_parts: [ ('# Hallo\n') ('\t#Bello\n') ('[branch ') (Right_DoubleQuote '"') (drei) (Right_DoubleQuote '"') (']\n') ('weird\n') ] ) ] ) (C {(test_expect_success)} {(SQ <'section was removed properly'>)} {(SQ <'\n'> <'\ttest_cmp expect .git/config\n'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1769 stdin_parts: [ ('[gitcvs]\n') ('\tenabled = true\n') ('\tdbname = %Ggitcvs2.%a.%m.sqlite\n') ('[gitcvs ') (Right_DoubleQuote '"') (ext) (Right_DoubleQuote '"') (']\n') ('\tdbname = %Ggitcvs1.%a.%m.sqlite\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1868 stdin_parts: [ ('true\n') ('false\n') ('true\n') ('false\n') ('true\n') ('false\n') ('true\n') ('false\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 1941 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 1979 stdin_parts: [('[int]\n') ('\tval1 = 1\n') ('\tval2 = -1\n') ('\tval3 = 5242880\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 2054 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 2089 stdin_parts: [ ('[path]\n') ('\thome = ~/\n') ('\tnormal = /dev/null\n') ('\ttrailingtilde = foo~\n') ] ) ] ) (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 ops: [Op_DAmp] 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: [2122 2126] ) ) } ) ] ) ] action: [(C {(test_set_prereq)} {(HOMEVAR)})] spids: [16777215 2129] ) ] spids: [16777215 2136] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 2152 stdin_parts: [($ VSub_Name '$HOME') ('/\n') ('/dev/null\n') ('foo~\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 2182 stdin_parts: [('/dev/null\n') ('foo~\n')] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 2252 stdin_parts: [ ('[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') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(.git/config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 2312 stdin_parts: [ ('[section]\n') ('\t; comment \\\n') ('\tcontinued = cont\\\n') ('inued\n') ('\tnoncont = not continued ; \\\n') ('\tquotecont = "cont;\\\n') ('inued"\n') ] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 2327 stdin_parts: [ ('section.continued=continued\n') ('section.noncont=not continued\n') ('section.quotecont=cont;inued\n') ] ) ] ) (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:<Redir_Great '>'> fd:16777215 arg_word:{(.git/config)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 2358 stdin_parts: [ ('[section "sub=section"]\n') ('\tval1 = foo=bar\n') ('\tval2 = foo\\nbar\n') ('\tval3 = \\n\\n\n') ('\tval4 =\n') ('\tval5\n') ] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)} here_end_span_id: 2378 stdin_parts: [ ('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') ] ) ] ) (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 ops: [Op_DPipe] children: [ (Pipeline children:[(C {(test_have_prereq)} {(MINGW)})] negated:T) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:HOME spids:[2885]) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [2887 2889] ) ) } spids: [2885] ) ] spids: [2885] ) ] ) (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)}) ] )