(command.CommandList children: [ (command.ShFunction name: create_lib_submodule_repo body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(git)} {(init)} {(submodule_update_repo)}) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [ Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp ] children: [ (C {(cd)} {(submodule_update_repo)}) (command.Simple words: [{(echo)} {(DQ (expect))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:132) fd: -1 arg_word: {(.gitignore)} ) ] ) (command.Simple words: [{(echo)} {(DQ (actual))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:144) fd: -1 arg_word: {(.gitignore)} ) ] ) (command.Simple words: [{(echo)} {(DQ (x))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:156) fd: -1 arg_word: {(file1)} ) ] ) (command.Simple words: [{(echo)} {(DQ (y))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:168) fd: -1 arg_word: {(file2)} ) ] ) (C {(git)} {(add)} {(.gitignore)} {(file1)} {(file2)}) (C {(git)} {(commit)} {(-m)} {(DQ (Base))}) (C {(git)} {(branch)} {(DQ (no_submodule))}) (C {(git)} {(checkout)} {(-b)} {(DQ (add_sub1))}) (C {(git)} {(submodule)} {(add)} {(./.)} {(sub1)}) (C {(git)} {(config)} {(-f)} {(.gitmodules)} {(submodule.sub1.ignore)} {(all)}) (C {(git)} {(config)} {(submodule.sub1.ignore)} {(all)}) (C {(git)} {(add)} {(.gitmodules)}) (C {(git)} {(commit)} {(-m)} {(DQ ('Add sub1'))}) (C {(git)} {(checkout)} {(-b)} {(remove_sub1)}) (C {(git)} {(revert)} {(HEAD)}) (C {(git)} {(checkout)} {(-b)} {(DQ (modify_sub1))} {(DQ (add_sub1))}) (C {(git)} {(submodule)} {(update)}) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [ Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp ] children: [ (C {(cd)} {(sub1)}) (C {(git)} {(fetch)}) (C {(git)} {(checkout)} {(-b)} {(DQ (modifications))}) (command.Simple words: [{(echo)} {(DQ (z))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:369) fd: -1 arg_word: {(file2)} ) ] ) (command.Simple words: [{(echo)} {(DQ (x))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:381) fd: -1 arg_word: {(file3)} ) ] ) (C {(git)} {(add)} {(file2)} {(file3)}) (C {(git)} {(commit)} {(-m)} {(DQ ('modified file2 and added file3'))} ) (C {(git)} {(push)} {(origin)} {(modifications)}) ] ) ] ) ) (C {(git)} {(add)} {(sub1)}) (C {(git)} {(commit)} {(-m)} {(DQ ('Modify sub1'))}) (C {(git)} {(checkout)} {(-b)} {(DQ (replace_sub1_with_directory))} {(DQ (add_sub1))} ) (C {(git)} {(submodule)} {(update)}) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(cd)} {(sub1)}) (C {(git)} {(checkout)} {(modifications)}) ] ) ] ) ) (C {(git)} {(rm)} {(--cached)} {(sub1)}) (C {(rm)} {(sub1/.git) (Id.Lit_Star '*')}) (C {(git)} {(config)} {(-f)} {(.gitmodules)} {(--remove-section)} {(DQ (submodule.sub1))} ) (C {(git)} {(add)} {(.gitmodules)} {(sub1/) (Id.Lit_Star '*')}) (C {(git)} {(commit)} {(-m)} {(DQ ('Replace sub1 with directory'))}) (C {(git)} {(checkout)} {(-b)} {(replace_directory_with_sub1)}) (C {(git)} {(revert)} {(HEAD)}) (C {(git)} {(checkout)} {(-b)} {(DQ (replace_sub1_with_file))} {(DQ (add_sub1))} ) (C {(git)} {(rm)} {(sub1)}) (command.Simple words: [{(echo)} {(DQ (content))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:610) fd: -1 arg_word: {(sub1)} ) ] ) (C {(git)} {(add)} {(sub1)}) (C {(git)} {(commit)} {(-m)} {(DQ ('Replace sub1 with file'))}) (C {(git)} {(checkout)} {(-b)} {(replace_file_with_sub1)}) (C {(git)} {(revert)} {(HEAD)}) (C {(git)} {(checkout)} {(-b)} {(DQ (invalid_sub1))} {(DQ (add_sub1))}) (C {(git)} {(update-index)} {(--cacheinfo)} {(160000)} {(0123456789012345678901234567890123456789)} {(sub1)} ) (C {(git)} {(commit)} {(-m)} {(DQ ('Invalid sub1 commit'))}) (C {(git)} {(checkout)} {(-b)} {(valid_sub1)}) (C {(git)} {(revert)} {(HEAD)}) (C {(git)} {(checkout)} {(master)}) ] ) ] ) ) ] ) ] ) ) (command.ShFunction name: replace_gitfile_with_git_dir body: (command.BraceGroup children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(cd)} {(DQ ($ Id.VSub_Number '$1'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git_dir) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:761) command_list: (command.CommandList children: [(C {(git)} {(rev-parse)} {(--git-dir)})] ) ) ) } spids: [759] ) ] ) (C {(rm)} {(-f)} {(.git)}) (C {(cp)} {(-R)} {(DQ ($ Id.VSub_DollarName '$git_dir'))} {(.git)}) (command.Simple words: [{(git)} {(config)} {(--unset)} {(core.worktree)}] more_env: [(env_pair name:GIT_WORK_TREE val:{(.)} spids:[795])] ) ] ) ] ) ) ] ) ) (command.ShFunction name: test_git_directory_is_unchanged body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(cd)} {(DQ (.git/modules/) ($ Id.VSub_Number '$1'))}) (C {(test)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:861) command_list: (command.CommandList children: [(C {(git)} {(config)} {(core.worktree)})] ) ) ) } {(Id.Lit_Equals '=')} {(DQ (../../../) ($ Id.VSub_Number '$1'))} ) (C {(git)} {(config)} {(--unset)} {(core.worktree)}) ] ) ] ) ) (C {(diff)} {(-r)} {(DQ (.git/modules/) ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$1') (/.git))} ) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(cd)} {(DQ (.git/modules/) ($ Id.VSub_Number '$1'))}) (C {(git)} {(config)} {(core.worktree)} {(DQ (../../../) ($ Id.VSub_Number '$1'))} ) ] ) ] ) ) ] ) ] ) ) (command.ShFunction name: prolog body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-d)} {(submodule_update_repo)}) (C {(create_lib_submodule_repo)}) ] ) ] ) ) (C {(test_config_global)} {(diff.ignoreSubmodules)} {(all)}) (C {(test_config)} {(diff.ignoreSubmodules)} {(all)}) ] ) ] ) ) (command.ShFunction name: reset_work_tree_to body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(rm)} {(-rf)} {(submodule_update)}) (C {(git)} {(clone)} {(submodule_update_repo)} {(submodule_update)}) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(cd)} {(submodule_update)}) (C {(rm)} {(-rf)} {(sub1)}) (C {(git)} {(checkout)} {(-f)} {(DQ ($ Id.VSub_Number '$1'))}) (command.Simple words: [{(git)} {(status)} {(-u)} {(-s)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1080) fd: -1 arg_word: {(actual)} ) ] ) (C {(test_must_be_empty)} {(actual)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 1094 ) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--revs-only)} {(HEAD) (Id.Lit_Other ':') (sub1)} ) ] ) ) } spids: [1093] ) ] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$sha1'))}) (C {(test)} { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 1124 ) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(cd)} {(DQ (sub1))}) (C {(git)} {(rev-parse)} {(--verify)} { (DQ ($ Id.VSub_DollarName '$sha1') ('^{commit}') ) } ) ] ) ] ) ) } ) ] ) ] action: [ (C {(git)} {(submodule)} {(update)} {(--init)} {(--recursive)} {(DQ (sub1))} ) ] spids: [1109 1146] ) ] ) ] ) ] ) ) ] ) ] ) ) (command.ShFunction name: test_superproject_content body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{(git)} {(diff-index)} {(--cached)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1199) fd: -1 arg_word: {(actual)} ) ] ) (C {(test_must_be_empty)} {(actual)}) (command.Simple words: [{(git)} {(diff-files)} {(--ignore-submodules)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1218) fd: -1 arg_word: {(actual)} ) ] ) (C {(test_must_be_empty)} {(actual)}) ] ) ] ) ) (command.ShFunction name: test_submodule_content body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.If arms: [ (if_arm cond: [ (C {(test)} {($ Id.VSub_Pound '$#')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(2)}) ] action: [ (C {(echo)} {(DQ ('test_submodule_content needs two arguments'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1267) arg_word: {(1)} ) ] spids: [1245 1257] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:submodule) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [1277] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:commit) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [1285] ) ] ) (C {(test)} {(-d)} {(DQ ($ Id.VSub_DollarName '$submodule')) (/)}) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Pipeline children: [ (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$submodule')) (/.git)}) ] negated: T ) (command.Pipeline children: [ (C {(test)} {(-d)} {(DQ ($ Id.VSub_DollarName '$submodule')) (/.git)}) ] negated: T ) ] ) ] action: [ (C {(echo)} { (DQ ('Submodule ') ($ Id.VSub_DollarName '$submodule') (' is not populated') ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1344) arg_word: {(1)} ) ] spids: [1305 1332] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1355) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--verify)} { (DQ ($ Id.VSub_DollarName '$commit') (':') ($ Id.VSub_DollarName '$submodule') ) } ) ] ) ) } spids: [1354] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$sha1'))})] action: [ (C {(echo)} { (DQ ("Couldn't retrieve SHA-1 of ") ($ Id.VSub_DollarName '$submodule') (' for ') ($ Id.VSub_DollarName '$commit') ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1396) arg_word: {(1)} ) ] spids: [1372 1383] ) ] ) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(cd)} {(DQ ($ Id.VSub_DollarName '$submodule'))}) (command.Simple words: [{(git)} {(status)} {(-u)} {(-s)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1426) fd: -1 arg_word: {(actual)} ) ] ) (C {(test_must_be_empty)} {(actual)}) (command.Simple words: [{(git)} {(diff)} {(DQ ($ Id.VSub_DollarName '$sha1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1447) fd: -1 arg_word: {(actual)} ) ] ) (C {(test_must_be_empty)} {(actual)}) ] ) ] ) ) ] ) ] ) ) (command.ShFunction name: test_submodule_switch body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:command) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [1526] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} { (DQ ($ Id.VSub_DollarName '$KNOWN_FAILURE_STASH_DOES_IGNORE_SUBMODULE_CHANGES') ) } {(Id.Lit_Equals '=')} {(1)} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (failure))} spids: [1560] ) ] ) ] spids: [1540 1553] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (success))} spids: [1569] ) ] ) ] ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} {(DQ ($ Id.VSub_DollarName '$command') (': added submodule creates empty directory'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1587) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1588) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to no_submodule &&\n' span_id:1589) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1590) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1591) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t add_sub1 origin/add_sub1 &&\n' span_id: 1592 ) (Token id:Id.Lit_Chars val:'\t\t\t$command add_sub1 &&\n' span_id:1593) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id: 1594 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_dir_is_empty sub1 &&\n' span_id:1595) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update --init --recursive &&\n' span_id: 1596 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:1597) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1598) (Token id:Id.Lit_Chars val:'\t' span_id:1599) ) } ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} { (DQ ($ Id.VSub_DollarName '$command') (': added submodule leaves existing empty directory alone') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1616) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1617) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to no_submodule &&\n' span_id:1618) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1619) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1620) (Token id:Id.Lit_Chars val:'\t\t\tmkdir sub1 &&\n' span_id:1621) (Token id:Id.Lit_Chars val:'\t\t\tgit branch -t add_sub1 origin/add_sub1 &&\n' span_id:1622) (Token id: Id.Lit_Chars val: '\t\t\t$command add_sub1 &&\n' span_id: 1623 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id:1624) (Token id: Id.Lit_Chars val: '\t\t\ttest_dir_is_empty sub1 &&\n' span_id: 1625 ) (Token id:Id.Lit_Chars val:'\t\t\tgit submodule update --init --recursive &&\n' span_id:1626) (Token id: Id.Lit_Chars val: '\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id: 1627 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1628) (Token id:Id.Lit_Chars val:'\t' span_id:1629) ) } ) (C {(test_expect_success)} { (DQ ($ Id.VSub_DollarName '$command') (": added submodule doesn't remove untracked unignored file with same name") ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1645) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1646) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to no_submodule &&\n' span_id:1647) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1648) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1649) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t add_sub1 origin/add_sub1 &&\n' span_id: 1650 ) (Token id:Id.Lit_Chars val:'\t\t\t>sub1 &&\n' span_id:1651) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail $command add_sub1 &&\n' span_id: 1652 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/no_submodule &&\n' span_id:1653) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_be_empty sub1\n' span_id: 1654 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1655) (Token id:Id.Lit_Chars val:'\t' span_id:1656) ) } ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} { (DQ ($ Id.VSub_DollarName '$command') (': replace tracked file with submodule creates empty directory') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1677) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1678) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to replace_sub1_with_file &&\n' span_id:1679) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1680) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1681) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&\n' span_id: 1682 ) (Token id:Id.Lit_Chars val:'\t\t\t$command replace_file_with_sub1 &&\n' span_id:1683) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/replace_file_with_sub1 &&\n' span_id: 1684 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_dir_is_empty sub1 &&\n' span_id:1685) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update --init --recursive &&\n' span_id: 1686 ) (Token id: Id.Lit_Chars val: '\t\t\ttest_submodule_content sub1 origin/replace_file_with_sub1\n' span_id: 1687 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1688) (Token id:Id.Lit_Chars val:'\t' span_id:1689) ) } ) (command.If arms: [ (if_arm cond: [ (C {(test)} { (DQ ($ Id.VSub_DollarName '$KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR' ) ) } {(Id.Lit_Equals '=')} {(1)} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (failure))} spids: [1729] ) ] ) ] spids: [1701 1714] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (success))} spids: [1738] ) ] ) ] ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} {(DQ ($ Id.VSub_DollarName '$command') (': replace directory with submodule'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1756) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1757) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to replace_sub1_with_directory &&\n' span_id:1758) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1759) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1760) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&\n' span_id: 1761 ) (Token id:Id.Lit_Chars val:'\t\t\t$command replace_directory_with_sub1 &&\n' span_id:1762) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/replace_directory_with_sub1 &&\n' span_id: 1763 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_dir_is_empty sub1 &&\n' span_id:1764) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update --init --recursive &&\n' span_id: 1765 ) (Token id: Id.Lit_Chars val: '\t\t\ttest_submodule_content sub1 origin/replace_directory_with_sub1\n' span_id: 1766 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1767) (Token id:Id.Lit_Chars val:'\t' span_id:1768) ) } ) (command.If arms: [ (if_arm cond: [ (C {(test)} { (DQ ($ Id.VSub_DollarName '$KNOWN_FAILURE_STASH_DOES_IGNORE_SUBMODULE_CHANGES') ) } {(Id.Lit_Equals '=')} {(1)} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (failure))} spids: [1797] ) ] ) ] spids: [1781 1794] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (success))} spids: [1806] ) ] ) ] ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} { (DQ ($ Id.VSub_DollarName '$command') (': removed submodule leaves submodule directory and its contents in place') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1824) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1825) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:1826) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1827) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1828) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t remove_sub1 origin/remove_sub1 &&\n' span_id: 1829 ) (Token id:Id.Lit_Chars val:'\t\t\t$command remove_sub1 &&\n' span_id:1830) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/remove_sub1 &&\n' span_id: 1831 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:1832) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1833) (Token id:Id.Lit_Chars val:'\t' span_id:1834) ) } ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} { (DQ ($ Id.VSub_DollarName '$command') (': removed submodule leaves submodule containing a .git directory alone') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1851) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1852) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:1853) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1854) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1855) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t remove_sub1 origin/remove_sub1 &&\n' span_id: 1856 ) (Token id:Id.Lit_Chars val:'\t\t\treplace_gitfile_with_git_dir sub1 &&\n' span_id:1857) (Token id: Id.Lit_Chars val: '\t\t\t$command remove_sub1 &&\n' span_id: 1858 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/remove_sub1 &&\n' span_id:1859) (Token id: Id.Lit_Chars val: '\t\t\ttest_git_directory_is_unchanged sub1 &&\n' span_id: 1860 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:1861) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1862) (Token id:Id.Lit_Chars val:'\t' span_id:1863) ) } ) (command.If arms: [ (if_arm cond: [ (C {(test)} { (DQ ($ Id.VSub_DollarName '$KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES' ) ) } {(Id.Lit_Equals '=')} {(1)} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (failure))} spids: [1903] ) ] ) ] spids: [1875 1888] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (success))} spids: [1912] ) ] ) ] ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} { (DQ ($ Id.VSub_DollarName '$command') (': replace submodule with a directory must fail') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1930) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1931) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:1932) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1933) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1934) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&\n' span_id: 1935 ) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail $command replace_sub1_with_directory &&\n' span_id: 1936 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id:1937) (Token id: Id.Lit_Chars val: '\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id: 1938 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1939) (Token id:Id.Lit_Chars val:'\t' span_id:1940) ) } ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} { (DQ ($ Id.VSub_DollarName '$command') (': replace submodule containing a .git directory with a directory must fail') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1957) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1958) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:1959) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1960) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1961) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&\n' span_id: 1962 ) (Token id:Id.Lit_Chars val:'\t\t\treplace_gitfile_with_git_dir sub1 &&\n' span_id:1963) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail $command replace_sub1_with_directory &&\n' span_id: 1964 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id:1965) (Token id: Id.Lit_Chars val: '\t\t\ttest_git_directory_is_unchanged sub1 &&\n' span_id: 1966 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:1967) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1968) (Token id:Id.Lit_Chars val:'\t' span_id:1969) ) } ) (C {(test_expect_failure)} {(DQ ($ Id.VSub_DollarName '$command') (': replace submodule with a file must fail'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1989) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:1990) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:1991) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1992) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:1993) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_sub1_with_file origin/replace_sub1_with_file &&\n' span_id: 1994 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_must_fail $command replace_sub1_with_file &&\n' span_id:1995) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id: 1996 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:1997) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:1998) (Token id:Id.Lit_Chars val:'\t' span_id:1999) ) } ) (C {(test_expect_failure)} { (DQ ($ Id.VSub_DollarName '$command') (': replace submodule containing a .git directory with a file must fail') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2019) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2020) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2021) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2022) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2023) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_sub1_with_file origin/replace_sub1_with_file &&\n' span_id: 2024 ) (Token id:Id.Lit_Chars val:'\t\t\treplace_gitfile_with_git_dir sub1 &&\n' span_id:2025) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail $command replace_sub1_with_file &&\n' span_id: 2026 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id:2027) (Token id: Id.Lit_Chars val: '\t\t\ttest_git_directory_is_unchanged sub1 &&\n' span_id: 2028 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:2029) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2030) (Token id:Id.Lit_Chars val:'\t' span_id:2031) ) } ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT'))} {(Id.Lit_Equals '=')} {(1)} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (failure))} spids: [2072] ) ] ) ] spids: [2044 2057] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (success))} spids: [2081] ) ] ) ] ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} { (DQ ($ Id.VSub_DollarName '$command') (': modified submodule does not update submodule work tree') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2099) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2100) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2101) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2102) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2103) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t modify_sub1 origin/modify_sub1 &&\n' span_id: 2104 ) (Token id:Id.Lit_Chars val:'\t\t\t$command modify_sub1 &&\n' span_id:2105) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/modify_sub1 &&\n' span_id: 2106 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1 &&\n' span_id:2107) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update &&\n' span_id: 2108 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/modify_sub1\n' span_id:2109) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2110) (Token id:Id.Lit_Chars val:'\t' span_id:2111) ) } ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} { (DQ ($ Id.VSub_DollarName '$command') (': modified submodule does not update submodule work tree to invalid commit') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2133) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2134) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2135) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2136) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2137) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t invalid_sub1 origin/invalid_sub1 &&\n' span_id: 2138 ) (Token id:Id.Lit_Chars val:'\t\t\t$command invalid_sub1 &&\n' span_id:2139) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/invalid_sub1 &&\n' span_id: 2140 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1 &&\n' span_id:2141) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail git submodule update &&\n' span_id: 2142 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:2143) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2144) (Token id:Id.Lit_Chars val:'\t' span_id:2145) ) } ) (C {(test_expect_) ($ Id.VSub_DollarName '$RESULT')} { (DQ ($ Id.VSub_DollarName '$command') (': modified submodule does not update submodule work tree from invalid commit') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2166) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2167) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to invalid_sub1 &&\n' span_id:2168) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2169) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2170) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t valid_sub1 origin/valid_sub1 &&\n' span_id: 2171 ) (Token id:Id.Lit_Chars val:'\t\t\t$command valid_sub1 &&\n' span_id:2172) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/valid_sub1 &&\n' span_id: 2173 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_dir_is_empty sub1 &&\n' span_id:2174) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update --init --recursive &&\n' span_id: 2175 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/valid_sub1\n' span_id:2176) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2177) (Token id:Id.Lit_Chars val:'\t' span_id:2178) ) } ) ] ) ) (command.ShFunction name: test_submodule_forced_switch body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:command) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [2201] ) ] ) (C {(test_expect_success)} {(DQ ($ Id.VSub_DollarName '$command') (': added submodule creates empty directory'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2223) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2224) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to no_submodule &&\n' span_id:2225) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2226) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2227) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t add_sub1 origin/add_sub1 &&\n' span_id: 2228 ) (Token id:Id.Lit_Chars val:'\t\t\t$command add_sub1 &&\n' span_id:2229) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id: 2230 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_dir_is_empty sub1 &&\n' span_id:2231) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update --init --recursive &&\n' span_id: 2232 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:2233) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2234) (Token id:Id.Lit_Chars val:'\t' span_id:2235) ) } ) (C {(test_expect_success)} { (DQ ($ Id.VSub_DollarName '$command') (': added submodule leaves existing empty directory alone') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2251) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2252) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to no_submodule &&\n' span_id:2253) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2254) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2255) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t add_sub1 origin/add_sub1 &&\n' span_id: 2256 ) (Token id:Id.Lit_Chars val:'\t\t\tmkdir sub1 &&\n' span_id:2257) (Token id: Id.Lit_Chars val: '\t\t\t$command add_sub1 &&\n' span_id: 2258 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id:2259) (Token id: Id.Lit_Chars val: '\t\t\ttest_dir_is_empty sub1 &&\n' span_id: 2260 ) (Token id:Id.Lit_Chars val:'\t\t\tgit submodule update --init --recursive &&\n' span_id:2261) (Token id: Id.Lit_Chars val: '\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id: 2262 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2263) (Token id:Id.Lit_Chars val:'\t' span_id:2264) ) } ) (C {(test_expect_success)} { (DQ ($ Id.VSub_DollarName '$command') ( ': added submodule does remove untracked unignored file with same name when forced' ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2280) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2281) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to no_submodule &&\n' span_id:2282) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2283) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2284) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t add_sub1 origin/add_sub1 &&\n' span_id: 2285 ) (Token id:Id.Lit_Chars val:'\t\t\t>sub1 &&\n' span_id:2286) (Token id: Id.Lit_Chars val: '\t\t\t$command add_sub1 &&\n' span_id: 2287 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id:2288) (Token id: Id.Lit_Chars val: '\t\t\ttest_dir_is_empty sub1\n' span_id: 2289 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2290) (Token id:Id.Lit_Chars val:'\t' span_id:2291) ) } ) (C {(test_expect_success)} { (DQ ($ Id.VSub_DollarName '$command') (': replace tracked file with submodule creates empty directory') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2311) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2312) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to replace_sub1_with_file &&\n' span_id:2313) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2314) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2315) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&\n' span_id: 2316 ) (Token id:Id.Lit_Chars val:'\t\t\t$command replace_file_with_sub1 &&\n' span_id:2317) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/replace_file_with_sub1 &&\n' span_id: 2318 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_dir_is_empty sub1 &&\n' span_id:2319) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update --init --recursive &&\n' span_id: 2320 ) (Token id: Id.Lit_Chars val: '\t\t\ttest_submodule_content sub1 origin/replace_file_with_sub1\n' span_id: 2321 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2322) (Token id:Id.Lit_Chars val:'\t' span_id:2323) ) } ) (C {(test_expect_success)} {(DQ ($ Id.VSub_DollarName '$command') (': replace directory with submodule'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2343) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2344) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to replace_sub1_with_directory &&\n' span_id:2345) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2346) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2347) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&\n' span_id: 2348 ) (Token id:Id.Lit_Chars val:'\t\t\t$command replace_directory_with_sub1 &&\n' span_id:2349) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/replace_directory_with_sub1 &&\n' span_id: 2350 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_dir_is_empty sub1 &&\n' span_id:2351) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update --init --recursive &&\n' span_id: 2352 ) (Token id: Id.Lit_Chars val: '\t\t\ttest_submodule_content sub1 origin/replace_directory_with_sub1\n' span_id: 2353 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2354) (Token id:Id.Lit_Chars val:'\t' span_id:2355) ) } ) (C {(test_expect_success)} { (DQ ($ Id.VSub_DollarName '$command') (': removed submodule leaves submodule directory and its contents in place') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2376) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2377) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2378) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2379) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2380) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t remove_sub1 origin/remove_sub1 &&\n' span_id: 2381 ) (Token id:Id.Lit_Chars val:'\t\t\t$command remove_sub1 &&\n' span_id:2382) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/remove_sub1 &&\n' span_id: 2383 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:2384) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2385) (Token id:Id.Lit_Chars val:'\t' span_id:2386) ) } ) (C {(test_expect_success)} { (DQ ($ Id.VSub_DollarName '$command') (': removed submodule leaves submodule containing a .git directory alone') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2402) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2403) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2404) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2405) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2406) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t remove_sub1 origin/remove_sub1 &&\n' span_id: 2407 ) (Token id:Id.Lit_Chars val:'\t\t\treplace_gitfile_with_git_dir sub1 &&\n' span_id:2408) (Token id: Id.Lit_Chars val: '\t\t\t$command remove_sub1 &&\n' span_id: 2409 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/remove_sub1 &&\n' span_id:2410) (Token id: Id.Lit_Chars val: '\t\t\ttest_git_directory_is_unchanged sub1 &&\n' span_id: 2411 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:2412) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2413) (Token id:Id.Lit_Chars val:'\t' span_id:2414) ) } ) (C {(test_expect_failure)} { (DQ ($ Id.VSub_DollarName '$command') (': replace submodule with a directory must fail') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2434) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2435) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2436) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2437) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2438) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&\n' span_id: 2439 ) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail $command replace_sub1_with_directory &&\n' span_id: 2440 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id:2441) (Token id: Id.Lit_Chars val: '\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id: 2442 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2443) (Token id:Id.Lit_Chars val:'\t' span_id:2444) ) } ) (C {(test_expect_failure)} { (DQ ($ Id.VSub_DollarName '$command') (': replace submodule containing a .git directory with a directory must fail') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2460) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2461) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2462) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2463) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2464) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&\n' span_id: 2465 ) (Token id:Id.Lit_Chars val:'\t\t\treplace_gitfile_with_git_dir sub1 &&\n' span_id:2466) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail $command replace_sub1_with_directory &&\n' span_id: 2467 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id:2468) (Token id: Id.Lit_Chars val: '\t\t\ttest_git_directory_is_unchanged sub1 &&\n' span_id: 2469 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:2470) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2471) (Token id:Id.Lit_Chars val:'\t' span_id:2472) ) } ) (C {(test_expect_failure)} {(DQ ($ Id.VSub_DollarName '$command') (': replace submodule with a file must fail'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2492) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2493) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2494) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2495) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2496) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_sub1_with_file origin/replace_sub1_with_file &&\n' span_id: 2497 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_must_fail $command replace_sub1_with_file &&\n' span_id:2498) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id: 2499 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:2500) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2501) (Token id:Id.Lit_Chars val:'\t' span_id:2502) ) } ) (C {(test_expect_failure)} { (DQ ($ Id.VSub_DollarName '$command') (': replace submodule containing a .git directory with a file must fail') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2522) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2523) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2524) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2525) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2526) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t replace_sub1_with_file origin/replace_sub1_with_file &&\n' span_id: 2527 ) (Token id:Id.Lit_Chars val:'\t\t\treplace_gitfile_with_git_dir sub1 &&\n' span_id:2528) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail $command replace_sub1_with_file &&\n' span_id: 2529 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_superproject_content origin/add_sub1 &&\n' span_id:2530) (Token id: Id.Lit_Chars val: '\t\t\ttest_git_directory_is_unchanged sub1 &&\n' span_id: 2531 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:2532) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2533) (Token id:Id.Lit_Chars val:'\t' span_id:2534) ) } ) (C {(test_expect_success)} { (DQ ($ Id.VSub_DollarName '$command') (': modified submodule does not update submodule work tree') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2555) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2556) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2557) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2558) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2559) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t modify_sub1 origin/modify_sub1 &&\n' span_id: 2560 ) (Token id:Id.Lit_Chars val:'\t\t\t$command modify_sub1 &&\n' span_id:2561) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/modify_sub1 &&\n' span_id: 2562 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1 &&\n' span_id:2563) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update &&\n' span_id: 2564 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/modify_sub1\n' span_id:2565) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2566) (Token id:Id.Lit_Chars val:'\t' span_id:2567) ) } ) (C {(test_expect_success)} { (DQ ($ Id.VSub_DollarName '$command') (': modified submodule does not update submodule work tree to invalid commit') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2587) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2588) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to add_sub1 &&\n' span_id:2589) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2590) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2591) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t invalid_sub1 origin/invalid_sub1 &&\n' span_id: 2592 ) (Token id:Id.Lit_Chars val:'\t\t\t$command invalid_sub1 &&\n' span_id:2593) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/invalid_sub1 &&\n' span_id: 2594 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1 &&\n' span_id:2595) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail git submodule update &&\n' span_id: 2596 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/add_sub1\n' span_id:2597) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2598) (Token id:Id.Lit_Chars val:'\t' span_id:2599) ) } ) (C {(test_expect_success)} { (DQ ($ Id.VSub_DollarName '$command') (': modified submodule does not update submodule work tree from invalid commit') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2619) (Token id:Id.Lit_Chars val:'\t\tprolog &&\n' span_id:2620) (Token id:Id.Lit_Chars val:'\t\treset_work_tree_to invalid_sub1 &&\n' span_id:2621) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:2622) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule_update &&\n' span_id:2623) (Token id: Id.Lit_Chars val: '\t\t\tgit branch -t valid_sub1 origin/valid_sub1 &&\n' span_id: 2624 ) (Token id:Id.Lit_Chars val:'\t\t\t$command valid_sub1 &&\n' span_id:2625) (Token id: Id.Lit_Chars val: '\t\t\ttest_superproject_content origin/valid_sub1 &&\n' span_id: 2626 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_dir_is_empty sub1 &&\n' span_id:2627) (Token id: Id.Lit_Chars val: '\t\t\tgit submodule update --init --recursive &&\n' span_id: 2628 ) (Token id:Id.Lit_Chars val:'\t\t\ttest_submodule_content sub1 origin/valid_sub1\n' span_id:2629) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:2630) (Token id:Id.Lit_Chars val:'\t' span_id:2631) ) } ) ] ) ) ] )