(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:16777215 arg_word:{(expect.full)} spids:[26]) (HereDoc op_id: Redir_DLess fd: 16777215 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: T spids: [29] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect.skip)} spids:[41]) (HereDoc op_id: Redir_DLess fd: 16777215 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: T spids: [44] ) ] ) (FuncDef name: setup_absent body: (BraceGroup children: [ (AndOr ops:[Op_DAmp] children:[(C {(test)} {(-f)} {(1)}) (C {(rm)} {(1)})]) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(git)} {(update-index)} {(--remove)} {(1)}) (C {(git)} {(update-index)} {(--add)} {(--cacheinfo)} {(100644)} {($ VSub_Name '$EMPTY_BLOB')} {(1)} ) (C {(git)} {(update-index)} {(--skip-worktree)} {(1)}) ] ) ] spids: [58] ) spids: [54 57] ) (FuncDef name: test_absent body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (SimpleCommand words: [{(echo)} {(DQ ('100644 ') ($ VSub_Name '$EMPTY_BLOB') (' 0\t1'))}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(expected)} spids:[128])] ) (SimpleCommand words: [{(git)} {(ls-files)} {(--stage)} {(1)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(result)} spids:[143])] ) (C {(test_cmp)} {(expected)} {(result)}) (C {(test)} {(KW_Bang '!')} {(-f)} {(1)}) ] ) ] spids: [117] ) spids: [113 116] ) (FuncDef name: setup_dirty body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(git)} {(update-index)} {(--force-remove)} {(1)}) (SimpleCommand words: [{(echo)} {(dirty)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(1)} spids:[192])] ) (C {(git)} {(update-index)} {(--add)} {(--cacheinfo)} {(100644)} {($ VSub_Name '$EMPTY_BLOB')} {(1)} ) (C {(git)} {(update-index)} {(--skip-worktree)} {(1)}) ] ) ] spids: [174] ) spids: [170 173] ) (FuncDef name: test_dirty body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (SimpleCommand words: [{(echo)} {(DQ ('100644 ') ($ VSub_Name '$EMPTY_BLOB') (' 0\t1'))}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(expected)} spids:[242])] ) (SimpleCommand words: [{(git)} {(ls-files)} {(--stage)} {(1)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(result)} spids:[257])] ) (C {(test_cmp)} {(expected)} {(result)}) (SimpleCommand words: [{(echo)} {(dirty)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(expected)} spids:[277])] ) ] ) (C {(test_cmp)} {(expected)} {(1)}) ] spids: [231] ) spids: [227 230] ) (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:16777215 arg_word:{(expected)} spids:[447])] ) (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)}) ] )