(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'sparse checkout scope tests'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_expect_success>} {(SQ <setup>)} { (SQ <'\n'> <'\techo "initial" >a &&\n'> <'\techo "initial" >b &&\n'> <'\techo "initial" >c &&\n'> <'\tgit add a b c &&\n'> <'\tgit commit -m "initial commit"\n'> ) } ) (C {<test_expect_success>} {(SQ <'create feature branch'>)} { (SQ <'\n'> <'\tgit checkout -b feature &&\n'> <'\techo "modified" >b &&\n'> <'\techo "modified" >c &&\n'> <'\tgit add b c &&\n'> <'\tgit commit -m "modification"\n'> ) } ) (C {<test_expect_success>} {(SQ <'perform sparse checkout of master'>)} { (SQ <'\n'> <'\tgit config --local --bool core.sparsecheckout true &&\n'> <'\techo "!/*" >.git/info/sparse-checkout &&\n'> <'\techo "/a" >>.git/info/sparse-checkout &&\n'> <'\techo "/c" >>.git/info/sparse-checkout &&\n'> <'\tgit checkout master &&\n'> <'\ttest_path_is_file a &&\n'> <'\ttest_path_is_missing b &&\n'> <'\ttest_path_is_file c\n'> ) } ) (C {<test_expect_success>} {(SQ <'merge feature branch into sparse checkout of master'>)} { (SQ <'\n'> <'\tgit merge feature &&\n'> <'\ttest_path_is_file a &&\n'> <'\ttest_path_is_missing b &&\n'> <'\ttest_path_is_file c &&\n'> <'\ttest "$(cat c)" = "modified"\n'> ) } ) (C {<test_expect_success>} {(SQ <'return to full checkout of master'>)} { (SQ <'\n'> <'\tgit checkout feature &&\n'> <'\techo "/*" >.git/info/sparse-checkout &&\n'> <'\tgit checkout master &&\n'> <'\ttest_path_is_file a &&\n'> <'\ttest_path_is_file b &&\n'> <'\ttest_path_is_file c &&\n'> <'\ttest "$(cat b)" = "modified"\n'> ) } ) (C {<test_done>}) ] )