(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:'test untracked cache' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: sync_mtime body: (command.BraceGroup children: [ (command.Simple words: [{(find)} {(.)} {(-type)} {(d)} {(-ls)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:61) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) ) (command.ShFunction name:avoid_racy body:(command.BraceGroup children:[(C {(sleep)} {(1)})])) (C {(test_lazy_prereq)} {(UNTRACKED_CACHE)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:86) (Token id: Id.Lit_Chars val: '\t{ git update-index --test-untracked-cache; ret=$?; } &&\n' span_id: 87 ) (Token id:Id.Lit_Chars val:'\ttest $ret -ne 1\n' span_id:88) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [(C {(test_have_prereq)} {(UNTRACKED_CACHE)})] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:99) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'This system does not support untracked cache' span_id: 106 ) ) } spids: [104] ) ] ) (C {(test_done)}) ] spids: [92 101] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'core.untrackedCache is unset' span_id:118))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:122) (Token id: Id.Lit_Chars val: '\ttest_must_fail git config --get core.untrackedCache\n' span_id: 123 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:130))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) (Token id:Id.Lit_Chars val:'\tgit init worktree &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\tcd worktree &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\tmkdir done dtwo dthree &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\ttouch one two three done/one dtwo/two dthree/three &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\tgit add one two done/one &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\t: >.git/info/exclude &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\tgit update-index --untracked-cache\n' span_id:141) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'untracked cache is empty' span_id:148))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:152) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 153 ) (Token id:Id.Lit_Chars val:'\tcat >../expect-empty <<EOF &&\n' span_id:154) (Token id: Id.Lit_Chars val: 'info/exclude 0000000000000000000000000000000000000000\n' span_id: 155 ) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 156 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:157) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:158) (Token id:Id.Lit_Chars val:'EOF\n' span_id:159) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-empty ../actual\n' span_id:160) ) } ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:166) fd: -1 arg_word: {(../status.expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:169) fd: -1 here_begin: {(EOF)} here_end_span_id: 181 stdin_parts: [ ('A done/one\n') ('A one\n') ('A two\n') ('?? dthree/\n') ('?? dtwo/\n') ('?? three\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:185) fd: -1 arg_word: {(../dump.expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:188) fd: -1 here_begin: {(EOF)} here_end_span_id: 209 stdin_parts: [ ('info/exclude ') ($ Id.VSub_DollarName '$EMPTY_BLOB') ('\n') ('core.excludesfile 0000000000000000000000000000000000000000\n') ('exclude_per_dir .gitignore\n') ('flags 00000006\n') ('/ 0000000000000000000000000000000000000000 recurse valid\n') ('dthree/\n') ('dtwo/\n') ('three\n') ('/done/ 0000000000000000000000000000000000000000 recurse valid\n') ('/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n') ('three\n') ('/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n') ('two\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status first time (empty cache)' span_id:214))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:218) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:220) (Token id: Id.Lit_Chars val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id: 221 ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../actual &&\n' span_id:222) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../actual &&\n' span_id: 223 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:224) (Token id:Id.Lit_Chars val:'node creation: 3\n' span_id:225) (Token id:Id.Lit_Chars val:'gitignore invalidation: 1\n' span_id:226) (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:227) (Token id:Id.Lit_Chars val:'opendir: 4\n' span_id:228) (Token id:Id.Lit_Chars val:'EOF\n' span_id:229) (Token id: Id.Lit_Chars val: '\ttest_cmp ../trace.expect ../trace\n' span_id: 230 ) ) } ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'untracked cache after first status' span_id:237))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:241) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 242 ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../dump.expect ../actual\n' span_id:243) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status second time (fully populated cache)' span_id:250))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:254) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:255) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:256) (Token id: Id.Lit_Chars val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id: 257 ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../actual &&\n' span_id:258) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../actual &&\n' span_id: 259 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:260) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:261) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:262) (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:263) (Token id:Id.Lit_Chars val:'opendir: 0\n' span_id:264) (Token id:Id.Lit_Chars val:'EOF\n' span_id:265) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:266) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'untracked cache after second status' span_id:273))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:277) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 278 ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../dump.expect ../actual\n' span_id:279) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modify in root directory, one dir invalidation' span_id:286))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:290) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:291) (Token id:Id.Lit_Chars val:'\t: >four &&\n' span_id:292) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:293) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:294) (Token id: Id.Lit_Chars val: '\tgit status --porcelain >../actual &&\n' span_id: 295 ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:296) (Token id:Id.Lit_Chars val:'A done/one\n' span_id:297) (Token id:Id.Lit_Chars val:'A one\n' span_id:298) (Token id:Id.Lit_Chars val:'A two\n' span_id:299) (Token id:Id.Lit_Chars val:'?? dthree/\n' span_id:300) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:301) (Token id:Id.Lit_Chars val:'?? four\n' span_id:302) (Token id:Id.Lit_Chars val:'?? three\n' span_id:303) (Token id:Id.Lit_Chars val:'EOF\n' span_id:304) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../actual &&\n' span_id: 305 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:306) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:307) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:308) (Token id:Id.Lit_Chars val:'directory invalidation: 1\n' span_id:309) (Token id:Id.Lit_Chars val:'opendir: 1\n' span_id:310) (Token id:Id.Lit_Chars val:'EOF\n' span_id:311) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:312) (Token id:Id.Lit_Chars val:'\n' span_id:313) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:320))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:324) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 325 ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:326) (Token id:Id.Lit_Chars val:'info/exclude $EMPTY_BLOB\n' span_id:327) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 328 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:329) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:330) (Token id:Id.Lit_Chars val:'/ 0000000000000000000000000000000000000000 recurse valid\n' span_id:331) (Token id:Id.Lit_Chars val:'dthree/\n' span_id:332) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:333) (Token id:Id.Lit_Chars val:'four\n' span_id:334) (Token id:Id.Lit_Chars val:'three\n' span_id:335) (Token id: Id.Lit_Chars val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n' span_id: 336 ) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 337 ) (Token id:Id.Lit_Chars val:'three\n' span_id:338) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 339 ) (Token id:Id.Lit_Chars val:'two\n' span_id:340) (Token id:Id.Lit_Chars val:'EOF\n' span_id:341) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:342) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'new .gitignore invalidates recursively' span_id:349))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:353) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:354) (Token id:Id.Lit_Chars val:'\techo four >.gitignore &&\n' span_id:355) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:356) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:357) (Token id: Id.Lit_Chars val: '\tgit status --porcelain >../actual &&\n' span_id: 358 ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:359) (Token id:Id.Lit_Chars val:'A done/one\n' span_id:360) (Token id:Id.Lit_Chars val:'A one\n' span_id:361) (Token id:Id.Lit_Chars val:'A two\n' span_id:362) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:363) (Token id:Id.Lit_Chars val:'?? dthree/\n' span_id:364) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:365) (Token id:Id.Lit_Chars val:'?? three\n' span_id:366) (Token id:Id.Lit_Chars val:'EOF\n' span_id:367) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../actual &&\n' span_id: 368 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:369) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:370) (Token id:Id.Lit_Chars val:'gitignore invalidation: 1\n' span_id:371) (Token id:Id.Lit_Chars val:'directory invalidation: 1\n' span_id:372) (Token id:Id.Lit_Chars val:'opendir: 4\n' span_id:373) (Token id:Id.Lit_Chars val:'EOF\n' span_id:374) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:375) (Token id:Id.Lit_Chars val:'\n' span_id:376) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:383))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:387) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 388 ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:389) (Token id:Id.Lit_Chars val:'info/exclude $EMPTY_BLOB\n' span_id:390) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 391 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:392) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:393) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:394) (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:395) (Token id:Id.Lit_Chars val:'dthree/\n' span_id:396) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:397) (Token id:Id.Lit_Chars val:'three\n' span_id:398) (Token id: Id.Lit_Chars val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n' span_id: 399 ) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 400 ) (Token id:Id.Lit_Chars val:'three\n' span_id:401) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 402 ) (Token id:Id.Lit_Chars val:'two\n' span_id:403) (Token id:Id.Lit_Chars val:'EOF\n' span_id:404) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:405) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'new info/exclude invalidates everything' span_id:412))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:416) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:417) (Token id:Id.Lit_Chars val:'\techo three >>.git/info/exclude &&\n' span_id:418) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:419) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:420) (Token id: Id.Lit_Chars val: '\tgit status --porcelain >../actual &&\n' span_id: 421 ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:422) (Token id:Id.Lit_Chars val:'A done/one\n' span_id:423) (Token id:Id.Lit_Chars val:'A one\n' span_id:424) (Token id:Id.Lit_Chars val:'A two\n' span_id:425) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:426) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:427) (Token id:Id.Lit_Chars val:'EOF\n' span_id:428) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../actual &&\n' span_id: 429 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:430) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:431) (Token id:Id.Lit_Chars val:'gitignore invalidation: 1\n' span_id:432) (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:433) (Token id:Id.Lit_Chars val:'opendir: 4\n' span_id:434) (Token id:Id.Lit_Chars val:'EOF\n' span_id:435) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:436) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:443))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:447) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 448 ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:449) (Token id: Id.Lit_Chars val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id: 450 ) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 451 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:452) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:453) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:454) (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:455) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:456) (Token id: Id.Lit_Chars val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n' span_id: 457 ) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 458 ) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 459 ) (Token id:Id.Lit_Chars val:'two\n' span_id:460) (Token id:Id.Lit_Chars val:'EOF\n' span_id:461) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:462) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'move two from tracked to untracked' span_id:469))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:473) (Token id:Id.Lit_Chars val:'\tgit rm --cached two &&\n' span_id:474) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:475) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:476) (Token id:Id.Lit_Chars val:'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id:477) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 478 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:479) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:480) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse\n' span_id:481) (Token id: Id.Lit_Chars val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n' span_id: 482 ) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 483 ) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 484 ) (Token id:Id.Lit_Chars val:'two\n' span_id:485) (Token id:Id.Lit_Chars val:'EOF\n' span_id:486) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:487) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status after the move' span_id:494))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:498) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:499) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:500) (Token id: Id.Lit_Chars val: '\tgit status --porcelain >../actual &&\n' span_id: 501 ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:502) (Token id:Id.Lit_Chars val:'A done/one\n' span_id:503) (Token id:Id.Lit_Chars val:'A one\n' span_id:504) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:505) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:506) (Token id:Id.Lit_Chars val:'?? two\n' span_id:507) (Token id:Id.Lit_Chars val:'EOF\n' span_id:508) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../actual &&\n' span_id: 509 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:510) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:511) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:512) (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:513) (Token id:Id.Lit_Chars val:'opendir: 1\n' span_id:514) (Token id:Id.Lit_Chars val:'EOF\n' span_id:515) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:516) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:523))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:527) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 528 ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:529) (Token id: Id.Lit_Chars val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id: 530 ) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 531 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:532) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:533) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:534) (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:535) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:536) (Token id:Id.Lit_Chars val:'two\n' span_id:537) (Token id: Id.Lit_Chars val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n' span_id: 538 ) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 539 ) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 540 ) (Token id:Id.Lit_Chars val:'two\n' span_id:541) (Token id:Id.Lit_Chars val:'EOF\n' span_id:542) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:543) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'move two from untracked to tracked' span_id:550))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:554) (Token id:Id.Lit_Chars val:'\tgit add two &&\n' span_id:555) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:556) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:557) (Token id:Id.Lit_Chars val:'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id:558) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 559 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:560) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:561) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse\n' span_id:562) (Token id: Id.Lit_Chars val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n' span_id: 563 ) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 564 ) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 565 ) (Token id:Id.Lit_Chars val:'two\n' span_id:566) (Token id:Id.Lit_Chars val:'EOF\n' span_id:567) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:568) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status after the move' span_id:575))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:579) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:580) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:581) (Token id: Id.Lit_Chars val: '\tgit status --porcelain >../actual &&\n' span_id: 582 ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:583) (Token id:Id.Lit_Chars val:'A done/one\n' span_id:584) (Token id:Id.Lit_Chars val:'A one\n' span_id:585) (Token id:Id.Lit_Chars val:'A two\n' span_id:586) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:587) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:588) (Token id:Id.Lit_Chars val:'EOF\n' span_id:589) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../actual &&\n' span_id: 590 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:591) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:592) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:593) (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:594) (Token id:Id.Lit_Chars val:'opendir: 1\n' span_id:595) (Token id:Id.Lit_Chars val:'EOF\n' span_id:596) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:597) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:604))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:608) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 609 ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:610) (Token id: Id.Lit_Chars val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id: 611 ) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 612 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:613) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:614) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:615) (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:616) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:617) (Token id: Id.Lit_Chars val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n' span_id: 618 ) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 619 ) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 620 ) (Token id:Id.Lit_Chars val:'two\n' span_id:621) (Token id:Id.Lit_Chars val:'EOF\n' span_id:622) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:623) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up for sparse checkout testing' span_id:630))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:634) (Token id:Id.Lit_Chars val:'\techo two >done/.gitignore &&\n' span_id:635) (Token id:Id.Lit_Chars val:'\techo three >>done/.gitignore &&\n' span_id:636) (Token id:Id.Lit_Chars val:'\techo two >done/two &&\n' span_id:637) (Token id:Id.Lit_Chars val:'\tgit add -f done/two done/.gitignore &&\n' span_id:638) (Token id:Id.Lit_Chars val:'\tgit commit -m "first commit"\n' span_id:639) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status after commit' span_id:646))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:650) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:651) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:652) (Token id: Id.Lit_Chars val: '\tgit status --porcelain >../actual &&\n' span_id: 653 ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:654) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:655) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:656) (Token id:Id.Lit_Chars val:'EOF\n' span_id:657) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../actual &&\n' span_id: 658 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:659) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:660) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:661) (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:662) (Token id:Id.Lit_Chars val:'opendir: 2\n' span_id:663) (Token id:Id.Lit_Chars val:'EOF\n' span_id:664) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:665) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'untracked cache correct after commit' span_id:672))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:676) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 677 ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:678) (Token id: Id.Lit_Chars val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id: 679 ) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 680 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:681) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:682) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:683) (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:684) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:685) (Token id: Id.Lit_Chars val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n' span_id: 686 ) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 687 ) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 688 ) (Token id:Id.Lit_Chars val:'two\n' span_id:689) (Token id:Id.Lit_Chars val:'EOF\n' span_id:690) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:691) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up sparse checkout' span_id:698))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:702) (Token id: Id.Lit_Chars val: '\techo "done/[a-z]*" >.git/info/sparse-checkout &&\n' span_id: 703 ) (Token id:Id.Lit_Chars val:'\ttest_config core.sparsecheckout true &&\n' span_id:704) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:705) (Token id:Id.Lit_Chars val:'\tgit update-index --force-untracked-cache &&\n' span_id:706) (Token id: Id.Lit_Chars val: '\tgit status --porcelain >/dev/null && # prime the cache\n' span_id: 707 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing done/.gitignore &&\n' span_id:708) (Token id:Id.Lit_Chars val:'\ttest_path_is_file done/one\n' span_id:709) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'create/modify files, some of which are gitignored' span_id: 716 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:720) (Token id:Id.Lit_Chars val:'\techo two bis >done/two &&\n' span_id:721) (Token id:Id.Lit_Chars val:'\techo three >done/three && # three is gitignored\n' span_id:722) (Token id: Id.Lit_Chars val: '\techo four >done/four && # four is gitignored at a higher level\n' span_id: 723 ) (Token id:Id.Lit_Chars val:'\techo five >done/five && # five is not gitignored\n' span_id:724) (Token id: Id.Lit_Chars val: '\techo test >base && #we need to ensure that the root dir is touched\n' span_id: 725 ) (Token id:Id.Lit_Chars val:'\trm base &&\n' span_id:726) (Token id:Id.Lit_Chars val:'\tsync_mtime\n' span_id:727) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test sparse status with untracked cache' span_id:734))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:738) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:739) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:740) (Token id: Id.Lit_Chars val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id: 741 ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:742) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:743) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:744) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:745) (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:746) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:747) (Token id:Id.Lit_Chars val:'EOF\n' span_id:748) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../status.actual &&\n' span_id: 749 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:750) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:751) (Token id:Id.Lit_Chars val:'gitignore invalidation: 1\n' span_id:752) (Token id:Id.Lit_Chars val:'directory invalidation: 2\n' span_id:753) (Token id:Id.Lit_Chars val:'opendir: 2\n' span_id:754) (Token id:Id.Lit_Chars val:'EOF\n' span_id:755) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:756) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'untracked cache correct after status' span_id:763))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:767) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 768 ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:769) (Token id: Id.Lit_Chars val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id: 770 ) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 771 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:772) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:773) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:774) (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:775) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:776) (Token id: Id.Lit_Chars val: '/done/ 1946f0437f90c5005533cbe1736a6451ca301714 recurse valid\n' span_id: 777 ) (Token id:Id.Lit_Chars val:'five\n' span_id:778) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 779 ) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 780 ) (Token id:Id.Lit_Chars val:'two\n' span_id:781) (Token id:Id.Lit_Chars val:'EOF\n' span_id:782) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:783) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test sparse status again with untracked cache' span_id:790))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:794) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:795) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:796) (Token id: Id.Lit_Chars val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id: 797 ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:798) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:799) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:800) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:801) (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:802) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:803) (Token id:Id.Lit_Chars val:'EOF\n' span_id:804) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../status.actual &&\n' span_id: 805 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:806) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:807) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:808) (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:809) (Token id:Id.Lit_Chars val:'opendir: 0\n' span_id:810) (Token id:Id.Lit_Chars val:'EOF\n' span_id:811) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:812) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up for test of subdir and sparse checkouts' span_id:819))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:823) (Token id:Id.Lit_Chars val:'\tmkdir done/sub &&\n' span_id:824) (Token id:Id.Lit_Chars val:'\tmkdir done/sub/sub &&\n' span_id:825) (Token id:Id.Lit_Chars val:'\techo "sub" > done/sub/sub/file\n' span_id:826) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'test sparse status with untracked cache and subdir' span_id: 833 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:837) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:838) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:839) (Token id: Id.Lit_Chars val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id: 840 ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:841) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:842) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:843) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:844) (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:845) (Token id:Id.Lit_Chars val:'?? done/sub/\n' span_id:846) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:847) (Token id:Id.Lit_Chars val:'EOF\n' span_id:848) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../status.actual &&\n' span_id: 849 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:850) (Token id:Id.Lit_Chars val:'node creation: 2\n' span_id:851) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:852) (Token id:Id.Lit_Chars val:'directory invalidation: 1\n' span_id:853) (Token id:Id.Lit_Chars val:'opendir: 3\n' span_id:854) (Token id:Id.Lit_Chars val:'EOF\n' span_id:855) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:856) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump (sparse/subdirs)' span_id:863))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:867) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 868 ) (Token id:Id.Lit_Chars val:'\tcat >../expect-from-test-dump <<EOF &&\n' span_id:869) (Token id: Id.Lit_Chars val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id: 870 ) (Token id: Id.Lit_Chars val: 'core.excludesfile 0000000000000000000000000000000000000000\n' span_id: 871 ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:872) (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:873) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:874) (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:875) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:876) (Token id: Id.Lit_Chars val: '/done/ 1946f0437f90c5005533cbe1736a6451ca301714 recurse valid\n' span_id: 877 ) (Token id:Id.Lit_Chars val:'five\n' span_id:878) (Token id:Id.Lit_Chars val:'sub/\n' span_id:879) (Token id: Id.Lit_Chars val: '/done/sub/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 880 ) (Token id:Id.Lit_Chars val:'sub/\n' span_id:881) (Token id: Id.Lit_Chars val: '/done/sub/sub/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 882 ) (Token id:Id.Lit_Chars val:'file\n' span_id:883) (Token id: Id.Lit_Chars val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 884 ) (Token id: Id.Lit_Chars val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n' span_id: 885 ) (Token id:Id.Lit_Chars val:'two\n' span_id:886) (Token id:Id.Lit_Chars val:'EOF\n' span_id:887) (Token id: Id.Lit_Chars val: '\ttest_cmp ../expect-from-test-dump ../actual\n' span_id: 888 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'test sparse status again with untracked cache and subdir' span_id: 895 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:899) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:900) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:901) (Token id: Id.Lit_Chars val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id: 902 ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:903) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../status.actual &&\n' span_id: 904 ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:905) (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:906) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:907) (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:908) (Token id:Id.Lit_Chars val:'opendir: 0\n' span_id:909) (Token id:Id.Lit_Chars val:'EOF\n' span_id:910) (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:911) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'move entry in subdir from untracked to cached' span_id:918))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:922) (Token id:Id.Lit_Chars val:'\tgit add dtwo/two &&\n' span_id:923) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:924) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:925) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:926) (Token id:Id.Lit_Chars val:'A dtwo/two\n' span_id:927) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:928) (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:929) (Token id:Id.Lit_Chars val:'?? done/sub/\n' span_id:930) (Token id:Id.Lit_Chars val:'EOF\n' span_id:931) (Token id:Id.Lit_Chars val:'\ttest_cmp ../status.expect ../status.actual\n' span_id:932) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'move entry in subdir from cached to untracked' span_id:939))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:943) (Token id:Id.Lit_Chars val:'\tgit rm --cached dtwo/two &&\n' span_id:944) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:945) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:946) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:947) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:948) (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:949) (Token id:Id.Lit_Chars val:'?? done/sub/\n' span_id:950) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:951) (Token id:Id.Lit_Chars val:'EOF\n' span_id:952) (Token id: Id.Lit_Chars val: '\ttest_cmp ../status.expect ../status.actual\n' span_id: 953 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--no-untracked-cache removes the cache' span_id:960))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:964) (Token id: Id.Lit_Chars val: '\tgit update-index --no-untracked-cache &&\n' span_id: 965 ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:966) (Token id: Id.Lit_Chars val: '\techo "no untracked cache" >../expect-no-uc &&\n' span_id: 967 ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-no-uc ../actual\n' span_id:968) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git status does not change anything' span_id:975))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:979) (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:980) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:981) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-no-uc ../actual\n' span_id:982) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setting core.untrackedCache to true and using git status creates the cache' span_id: 989 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:993) (Token id: Id.Lit_Chars val: '\tgit config core.untrackedCache true &&\n' span_id: 994 ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:995) (Token id: Id.Lit_Chars val: '\ttest_cmp ../expect-no-uc ../actual &&\n' span_id: 996 ) (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:997) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 998 ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-from-test-dump ../actual\n' span_id:999) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'using --no-untracked-cache does not fail when core.untrackedCache is true' span_id: 1006 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1010) (Token id: Id.Lit_Chars val: '\tgit update-index --no-untracked-cache &&\n' span_id: 1011 ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1012) (Token id: Id.Lit_Chars val: '\ttest_cmp ../expect-no-uc ../actual &&\n' span_id: 1013 ) (Token id:Id.Lit_Chars val:'\tgit update-index --untracked-cache &&\n' span_id:1014) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 1015 ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-empty ../actual\n' span_id:1016) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setting core.untrackedCache to false and using git status removes the cache' span_id: 1023 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1027) (Token id: Id.Lit_Chars val: '\tgit config core.untrackedCache false &&\n' span_id: 1028 ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1029) (Token id: Id.Lit_Chars val: '\ttest_cmp ../expect-empty ../actual &&\n' span_id: 1030 ) (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:1031) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 1032 ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-no-uc ../actual\n' span_id:1033) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'using --untracked-cache does not fail when core.untrackedCache is false' span_id: 1040 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1044) (Token id: Id.Lit_Chars val: '\tgit update-index --untracked-cache &&\n' span_id: 1045 ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1046) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-empty ../actual\n' span_id:1047) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setting core.untrackedCache to keep' span_id:1054))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1058) (Token id: Id.Lit_Chars val: '\tgit config core.untrackedCache keep &&\n' span_id: 1059 ) (Token id:Id.Lit_Chars val:'\tgit update-index --untracked-cache &&\n' span_id:1060) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 1061 ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-empty ../actual &&\n' span_id:1062) (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:1063) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1064) (Token id: Id.Lit_Chars val: '\ttest_cmp ../expect-from-test-dump ../actual &&\n' span_id: 1065 ) (Token id:Id.Lit_Chars val:'\tgit update-index --no-untracked-cache &&\n' span_id:1066) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 1067 ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-no-uc ../actual &&\n' span_id:1068) (Token id: Id.Lit_Chars val: '\tgit update-index --force-untracked-cache &&\n' span_id: 1069 ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1070) (Token id: Id.Lit_Chars val: '\ttest_cmp ../expect-empty ../actual &&\n' span_id: 1071 ) (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:1072) (Token id: Id.Lit_Chars val: '\ttest-dump-untracked-cache >../actual &&\n' span_id: 1073 ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-from-test-dump ../actual\n' span_id:1074) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test ident field is working' span_id:1081))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1085) (Token id:Id.Lit_Chars val:'\tmkdir ../other_worktree &&\n' span_id:1086) (Token id:Id.Lit_Chars val:'\tcp -R done dthree dtwo four three ../other_worktree &&\n' span_id:1087) (Token id: Id.Lit_Chars val: '\tGIT_WORK_TREE=../other_worktree git status 2>../err &&\n' span_id: 1088 ) (Token id: Id.Lit_Chars val: '\techo "warning: Untracked cache is disabled on this system or location." >../expect &&\n' span_id: 1089 ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp ../expect ../err\n' span_id:1090) ) } ) (C {(test_done)}) ] )