(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"skip-worktree bit test">)} spids: [13] ) ] spids: [13] ) (C {(.)} {(./test-lib.sh)}) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect.full)} spids:[26]) (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("H 1\n") ("H 2\n") ("H init.t\n") ("H sub/1\n") ("H sub/2\n"))} do_expansion: True here_end: EOF was_filled: True spids: [29] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect.skip)} spids:[40]) (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("S 1\n") ("H 2\n") ("H init.t\n") ("S sub/1\n") ("H sub/2\n"))} do_expansion: True here_end: EOF was_filled: True spids: [43] ) ] ) (FuncDef name: setup_absent body: (BraceGroup children: [ (AndOr children:[(C {(test)} {(-f)} {(1)})(C {(rm)} {(1)})] op_id:Op_DAmp) (AndOr children: [ (C {(git)} {(update-index)} {(--remove)} {(1)}) (AndOr children: [ (C {(git)} {(update-index)} {(--add)} {(--cacheinfo)} {(100644)} {($ VSub_Name "$EMPTY_BLOB")} {(1)} ) (C {(git)} {(update-index)} {(--skip-worktree)} {(1)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [56] ) spids: [52 55] ) (FuncDef name: test_absent body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [{(echo)} {(DQ ("100644 ") ($ VSub_Name "$EMPTY_BLOB") (" 0\t1"))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expected)} spids:[126])] ) (AndOr children: [ (SimpleCommand words: [{(git)} {(ls-files)} {(--stage)} {(1)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(result)} spids:[141])] ) (AndOr children: [ (C {(test_cmp)} {(expected)} {(result)}) (C {(test)} {(KW_Bang "!")} {(-f)} {(1)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [115] ) spids: [111 114] ) (FuncDef name: setup_dirty body: (BraceGroup children: [ (AndOr children: [ (C {(git)} {(update-index)} {(--force-remove)} {(1)}) (AndOr children: [ (SimpleCommand words: [{(echo)} {(dirty)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(1)} spids:[190])] ) (AndOr children: [ (C {(git)} {(update-index)} {(--add)} {(--cacheinfo)} {(100644)} {($ VSub_Name "$EMPTY_BLOB")} {(1)} ) (C {(git)} {(update-index)} {(--skip-worktree)} {(1)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [172] ) spids: [168 171] ) (FuncDef name: test_dirty body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [{(echo)} {(DQ ("100644 ") ($ VSub_Name "$EMPTY_BLOB") (" 0\t1"))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expected)} spids:[240])] ) (AndOr children: [ (SimpleCommand words: [{(git)} {(ls-files)} {(--stage)} {(1)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(result)} spids:[255])] ) (AndOr children: [ (C {(test_cmp)} {(expected)} {(result)}) (SimpleCommand words: [{(echo)} {(dirty)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(expected)} spids: [275] ) ] ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) (C {(test_cmp)} {(expected)} {(1)}) ] spids: [229] ) spids: [225 228] ) (C {(test_expect_success)} {(SQ <setup>)} { (SQ <"\n"> <"\ttest_commit init &&\n"> <"\tmkdir sub &&\n"> <"\ttouch ./1 ./2 sub/1 sub/2 &&\n"> <"\tgit add 1 2 sub/1 sub/2 &&\n"> <"\tgit update-index --skip-worktree 1 sub/1 &&\n"> <"\tgit ls-files -t > result &&\n"> <"\ttest_cmp expect.skip result\n"> ) } ) (C {(test_expect_success)} {(SQ <update-index>)} {(SQ <"\n"> <"\tsetup_absent &&\n"> <"\tgit update-index 1 &&\n"> <"\ttest_absent\n">)} ) (C {(test_expect_success)} {(SQ <update-index>)} {(SQ <"\n"> <"\tsetup_dirty &&\n"> <"\tgit update-index 1 &&\n"> <"\ttest_dirty\n">)} ) (C {(test_expect_success)} {(SQ <"update-index --remove">)} { (SQ <"\n"> <"\tsetup_absent &&\n"> <"\tgit update-index --remove 1 &&\n"> <"\ttest -z \"$(git ls-files 1)\" &&\n"> <"\ttest ! -f 1\n"> ) } ) (C {(test_expect_success)} {(SQ <"update-index --remove">)} { (SQ <"\n"> <"\tsetup_dirty &&\n"> <"\tgit update-index --remove 1 &&\n"> <"\ttest -z \"$(git ls-files 1)\" &&\n"> <"\techo dirty > expected &&\n"> <"\ttest_cmp expected 1\n"> ) } ) (C {(test_expect_success)} {(SQ <"ls-files --deleted">)} {(SQ <"\n"> <"\tsetup_absent &&\n"> <"\ttest -z \"$(git ls-files -d)\"\n">)} ) (C {(test_expect_success)} {(SQ <"ls-files --deleted">)} {(SQ <"\n"> <"\tsetup_dirty &&\n"> <"\ttest -z \"$(git ls-files -d)\"\n">)} ) (C {(test_expect_success)} {(SQ <"ls-files --modified">)} {(SQ <"\n"> <"\tsetup_absent &&\n"> <"\ttest -z \"$(git ls-files -m)\"\n">)} ) (C {(test_expect_success)} {(SQ <"ls-files --modified">)} {(SQ <"\n"> <"\tsetup_dirty &&\n"> <"\ttest -z \"$(git ls-files -m)\"\n">)} ) (C {(test_expect_success)} {(SQ <"grep with skip-worktree file">)} { (SQ <"\n"> <"\tgit update-index --no-skip-worktree 1 &&\n"> <"\techo test > 1 &&\n"> <"\tgit update-index 1 &&\n"> <"\tgit update-index --skip-worktree 1 &&\n"> <"\trm 1 &&\n"> <"\ttest \"$(git grep --no-ext-grep test)\" = \"1:test\"\n"> ) } ) (SimpleCommand words: [ {(echo)} {(DQ (":000000 100644 ") ($ VSub_Name "$_z40") (" ") ($ VSub_Name "$EMPTY_BLOB") (" A\t1"))} ] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expected)} spids:[445])] ) (C {(test_expect_success)} {(SQ <"diff-index does not examine skip-worktree absent entries">)} { (SQ <"\n"> <"\tsetup_absent &&\n"> <"\tgit diff-index HEAD -- 1 > result &&\n"> <"\ttest_cmp expected result\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff-index does not examine skip-worktree dirty entries">)} { (SQ <"\n"> <"\tsetup_dirty &&\n"> <"\tgit diff-index HEAD -- 1 > result &&\n"> <"\ttest_cmp expected result\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff-files does not examine skip-worktree absent entries">)} {(SQ <"\n"> <"\tsetup_absent &&\n"> <"\ttest -z \"$(git diff-files -- one)\"\n">)} ) (C {(test_expect_success)} {(SQ <"diff-files does not examine skip-worktree dirty entries">)} {(SQ <"\n"> <"\tsetup_dirty &&\n"> <"\ttest -z \"$(git diff-files -- one)\"\n">)} ) (C {(test_expect_success)} {(SQ <"git-rm succeeds on skip-worktree absent entries">)} {(SQ <"\n"> <"\tsetup_absent &&\n"> <"\tgit rm 1\n">)} ) (C {(test_expect_success)} {(SQ <"commit on skip-worktree absent entries">)} { (SQ <"\n"> <"\tgit reset &&\n"> <"\tsetup_absent &&\n"> <"\ttest_must_fail git commit -m null 1\n"> ) } ) (C {(test_expect_success)} {(SQ <"commit on skip-worktree dirty entries">)} { (SQ <"\n"> <"\tgit reset &&\n"> <"\tsetup_dirty &&\n"> <"\ttest_must_fail git commit -m null 1\n"> ) } ) (C {(test_done)}) ] )