(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'giving ignored paths to git add' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:20) (Token id:Id.Lit_Chars val:'\tmkdir sub dir dir/sub &&\n' span_id:21) (Token id:Id.Lit_Chars val:'\techo sub >.gitignore &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\techo ign >>.gitignore &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tfor p in . sub dir dir/sub\n' span_id:24) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:25) (Token id:Id.Lit_Chars val:'\t\t>"$p/ign" &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\t\t>"$p/file" || exit 1\n' span_id:27) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:28) ) } ) (command.ForEach iter_name: i iter_words: [{(file)} {(dir/file)} {(dir)} {(SQ (Token id:Id.Lit_Chars val:'d*' span_id:45))}] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} {(DQ ('no complaints for unignored ') ($ Id.VSub_DollarName '$i'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id: Id.Lit_Chars val: '\t\trm -f .git/index &&\n' span_id: 60 ) (Token id:Id.Lit_Chars val:'\t\tgit add "$i" &&\n' span_id:61) (Token id: Id.Lit_Chars val: '\t\tgit ls-files "$i" >out &&\n' span_id: 62 ) (Token id:Id.Lit_Chars val:'\t\ttest -s out\n' span_id:63) (Token id:Id.Lit_Chars val:'\t' span_id:64) ) } ) ] ) ) (command.ForEach iter_name: i iter_words: [ {(ign)} {(dir/ign)} {(dir/sub)} {(dir/sub/) (Id.Lit_Star '*') (ign)} {(sub/file)} {(sub)} {(sub/) (Id.Lit_Star '*')} ] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} {(DQ ('complaints for ignored ') ($ Id.VSub_DollarName '$i'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) (Token id: Id.Lit_Chars val: '\t\trm -f .git/index &&\n' span_id: 105 ) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git add "$i" 2>err &&\n' span_id:106) (Token id: Id.Lit_Chars val: '\t\tgit ls-files "$i" >out &&\n' span_id: 107 ) (Token id:Id.Lit_Chars val:'\t\t! test -s out\n' span_id:108) (Token id:Id.Lit_Chars val:'\t' span_id:109) ) } ) (C {(test_expect_success)} {(DQ ('complaints for ignored ') ($ Id.VSub_DollarName '$i') (' output'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:123) (Token id: Id.Lit_Chars val: '\t\ttest_i18ngrep -e "Use -f if" err\n' span_id: 124 ) (Token id:Id.Lit_Chars val:'\t' span_id:125) ) } ) (C {(test_expect_success)} {(DQ ('complaints for ignored ') ($ Id.VSub_DollarName '$i') (' with unignored file'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id: Id.Lit_Chars val: '\t\trm -f .git/index &&\n' span_id: 140 ) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git add "$i" file 2>err &&\n' span_id:141) (Token id: Id.Lit_Chars val: '\t\tgit ls-files "$i" >out &&\n' span_id: 142 ) (Token id:Id.Lit_Chars val:'\t\t! test -s out\n' span_id:143) (Token id:Id.Lit_Chars val:'\t' span_id:144) ) } ) (C {(test_expect_success)} { (DQ ('complaints for ignored ') ($ Id.VSub_DollarName '$i') (' with unignored file output') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:157) (Token id: Id.Lit_Chars val: '\t\ttest_i18ngrep -e "Use -f if" err\n' span_id: 158 ) (Token id:Id.Lit_Chars val:'\t' span_id:159) ) } ) ] ) ) (command.ForEach iter_name: i iter_words: [{(sub)} {(sub/) (Id.Lit_Star '*')}] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} {(DQ ('complaints for ignored ') ($ Id.VSub_DollarName '$i') (' in dir'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:188) (Token id: Id.Lit_Chars val: '\t\trm -f .git/index &&\n' span_id: 189 ) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:190) (Token id:Id.Lit_Chars val:'\t\t\tcd dir &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\t\t\ttest_must_fail git add "$i" 2>err &&\n' span_id:192) (Token id: Id.Lit_Chars val: '\t\t\tgit ls-files "$i" >out &&\n' span_id: 193 ) (Token id:Id.Lit_Chars val:'\t\t\t! test -s out\n' span_id:194) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:195) (Token id:Id.Lit_Chars val:'\t' span_id:196) ) } ) (C {(test_expect_success)} {(DQ ('complaints for ignored ') ($ Id.VSub_DollarName '$i') (' in dir output'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:210) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:211) (Token id:Id.Lit_Chars val:'\t\t\tcd dir &&\n' span_id:212) (Token id: Id.Lit_Chars val: '\t\t\ttest_i18ngrep -e "Use -f if" err\n' span_id: 213 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:214) (Token id:Id.Lit_Chars val:'\t' span_id:215) ) } ) ] ) ) (command.ForEach iter_name: i iter_words: [{(ign)} {(file)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} {(DQ ('complaints for ignored ') ($ Id.VSub_DollarName '$i') (' in sub'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:243) (Token id: Id.Lit_Chars val: '\t\trm -f .git/index &&\n' span_id: 244 ) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:245) (Token id:Id.Lit_Chars val:'\t\t\tcd sub &&\n' span_id:246) (Token id:Id.Lit_Chars val:'\t\t\ttest_must_fail git add "$i" 2>err &&\n' span_id:247) (Token id: Id.Lit_Chars val: '\t\t\tgit ls-files "$i" >out &&\n' span_id: 248 ) (Token id:Id.Lit_Chars val:'\t\t\t! test -s out\n' span_id:249) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:250) (Token id:Id.Lit_Chars val:'\t' span_id:251) ) } ) (C {(test_expect_success)} {(DQ ('complaints for ignored ') ($ Id.VSub_DollarName '$i') (' in sub output'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:265) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:266) (Token id:Id.Lit_Chars val:'\t\t\tcd sub &&\n' span_id:267) (Token id: Id.Lit_Chars val: '\t\t\ttest_i18ngrep -e "Use -f if" err\n' span_id: 268 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:269) (Token id:Id.Lit_Chars val:'\t' span_id:270) ) } ) ] ) ) (C {(test_done)}) ] )