(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:'git p4 client view' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./lib-git-p4.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'start p4d' span_id:18))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\tstart_p4d\n' span_id:23) ) } ) (command.ShFunction name: check_files_exist body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ok) op: assign_op.Equal rhs: {(0)} spids: [46] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:num) op: assign_op.Equal rhs: {($ Id.VSub_Pound '$#')} spids: [52] ) ] ) (command.ForEach iter_name: arg do_arg_iter: T body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test_path_is_file)} {(DQ ($ Id.VSub_DollarName '$arg'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ok) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$ok')} ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [76] ) ] ) ] ) ] ) ) (C {(test)} {($ Id.VSub_DollarName '$ok')} {(-eq)} {($ Id.VSub_DollarName '$num')}) (C {(test_line_count)} {(Id.Lit_Equals '=')} {($ Id.VSub_DollarName '$num')} {(files)}) ] ) ] ) ) (command.ShFunction name: client_verify body: (command.BraceGroup children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(cd)} {(DQ ($ Id.VSub_DollarName '$cli'))}) (C {(p4)} {(sync)}) (command.Simple words: [{(find)} {(.)} {(-type)} {(f)} {(Id.KW_Bang '!')} {(-name)} {(files)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:166) fd: -1 arg_word: {(files)} ) ] ) (C {(check_files_exist)} {(DQ ($ Id.VSub_At '$@'))}) ] ) ] ) ) ] ) ) (command.ShFunction name: git_verify body: (command.BraceGroup children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(cd)} {(DQ ($ Id.VSub_DollarName '$git'))}) (command.Simple words: [{(git)} {(ls-files)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:216) fd: -1 arg_word: {(files)} ) ] ) (C {(check_files_exist)} {(DQ ($ Id.VSub_At '$@'))}) ] ) ] ) ) ] ) ) (command.ShFunction name: init_depot body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.ForEach iter_name: d iter_words: [{(1)} {(2)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(mkdir)} {(-p)} {(dir) ($ Id.VSub_DollarName '$d')}) (command.ForEach iter_name: f iter_words: [{(1)} {(2)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [ {(echo)} {(dir) ($ Id.VSub_DollarName '$d') (/file) ($ Id.VSub_DollarName '$d') ($ Id.VSub_DollarName '$f') } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:310) fd: -1 arg_word: {(dir) ($ Id.VSub_DollarName '$d') (/file) ($ Id.VSub_DollarName '$d') ($ Id.VSub_DollarName '$f') } ) ] ) (C {(p4)} {(add)} {(dir) ($ Id.VSub_DollarName '$d') (/file) ($ Id.VSub_DollarName '$d') ($ Id.VSub_DollarName '$f') } ) (C {(p4)} {(submit)} {(-d)} { (DQ (dir) ($ Id.VSub_DollarName '$d') (/file) ($ Id.VSub_DollarName '$d') ($ Id.VSub_DollarName '$f') ) } ) ] ) ] ) ) ] ) ] ) ) (command.Simple words: [{(find)} {(.)} {(-type)} {(f)} {(Id.KW_Bang '!')} {(-name)} {(files)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:370) fd: -1 arg_word: {(files)} ) ] ) (C {(check_files_exist)} {(dir1/file11)} {(dir1/file12)} {(dir2/file21)} {(dir2/file22)}) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'init depot' span_id:394))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:398) (Token id:Id.Lit_Chars val:'\t(\n' span_id:399) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:400) (Token id:Id.Lit_Chars val:'\t\tinit_depot\n' span_id:401) (Token id:Id.Lit_Chars val:'\t)\n' span_id:402) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'view wildcard %%n' span_id:412))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:416) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/%%%%1/sub/... //client/sub/%%%%1/..." &&\n' span_id: 417 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:418) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot\n' span_id: 419 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'view wildcard *' span_id:426))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:430) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/*/bar/... //client/*/bar/..." &&\n' span_id: 431 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:432) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot\n' span_id: 433 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'wildcard ... in the middle' span_id:440))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:444) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/.../file11 //client/.../file11" &&\n' span_id: 445 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:446) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot\n' span_id: 447 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'wildcard ... in the middle and at the end' span_id:454))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:458) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/.../a/... //client/.../a/..." &&\n' span_id: 459 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:460) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot\n' span_id: 461 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'basic map' span_id:468))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:472) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/cli1/..." &&\n' span_id: 473 ) (Token id:Id.Lit_Chars val:'\tfiles="cli1/file11 cli1/file12" &&\n' span_id:474) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:475) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:476) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 477 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:478) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'client view with no mappings' span_id:485))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:489) (Token id:Id.Lit_Chars val:'\tclient_view &&\n' span_id:490) (Token id:Id.Lit_Chars val:'\tclient_verify &&\n' span_id:491) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:492) (Token id:Id.Lit_Chars val:'\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id:493) (Token id:Id.Lit_Chars val:'\tgit_verify\n' span_id:494) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'single file map' span_id:501))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:505) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/file11 //client/file11" &&\n' span_id: 506 ) (Token id:Id.Lit_Chars val:'\tfiles="file11" &&\n' span_id:507) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:508) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:509) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 510 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:511) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'later mapping takes precedence (entire repo)' span_id:518))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:522) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/cli1/..." \\\n' span_id: 523 ) (Token id:Id.Lit_Chars val:'\t\t "//depot/... //client/cli2/..." &&\n' span_id:524) (Token id: Id.Lit_Chars val: '\tfiles="cli2/dir1/file11 cli2/dir1/file12\n' span_id: 525 ) (Token id:Id.Lit_Chars val:'\t cli2/dir2/file21 cli2/dir2/file22" &&\n' span_id:526) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:527) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:528) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 529 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:530) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'later mapping takes precedence (partial repo)' span_id:537))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:541) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/..." \\\n' span_id: 542 ) (Token id:Id.Lit_Chars val:'\t\t "//depot/dir2/... //client/..." &&\n' span_id:543) (Token id:Id.Lit_Chars val:'\tfiles="file21 file22" &&\n' span_id:544) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:545) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:546) (Token id:Id.Lit_Chars val:'\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id:547) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:548) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'depot path matching rejected client path' span_id:570))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:574) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/cli3/..." \\\n' span_id: 575 ) (Token id:Id.Lit_Chars val:'\t\t "//depot/dir1/... //client/cli12/..." \\\n' span_id:576) (Token id: Id.Lit_Chars val: '\t\t "//depot/dir2/... //client/cli12/..." &&\n' span_id: 577 ) (Token id:Id.Lit_Chars val:'\tfiles="cli12/file21 cli12/file22" &&\n' span_id:578) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:579) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:580) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 581 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:582) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'exclusion wildcard, client rhs same (odd)' span_id:595))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:599) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." \\\n' span_id: 600 ) (Token id:Id.Lit_Chars val:'\t\t "-//depot/dir2/... //client/..." &&\n' span_id:601) (Token id:Id.Lit_Chars val:'\tclient_verify &&\n' span_id:602) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:603) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 604 ) (Token id:Id.Lit_Chars val:'\tgit_verify\n' span_id:605) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'exclusion wildcard, client rhs different (normal)' span_id: 612 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:616) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." \\\n' span_id: 617 ) (Token id:Id.Lit_Chars val:'\t\t "-//depot/dir2/... //client/dir2/..." &&\n' span_id:618) (Token id:Id.Lit_Chars val:'\tfiles="dir1/file11 dir1/file12" &&\n' span_id:619) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:620) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:621) (Token id:Id.Lit_Chars val:'\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id:622) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:623) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'exclusion single file' span_id:630))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:634) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." \\\n' span_id: 635 ) (Token id:Id.Lit_Chars val:'\t\t "-//depot/dir2/file22 //client/file22" &&\n' span_id:636) (Token id: Id.Lit_Chars val: '\tfiles="dir1/file11 dir1/file12 dir2/file21" &&\n' span_id: 637 ) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:638) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:639) (Token id:Id.Lit_Chars val:'\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id:640) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:641) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay wildcard' span_id:648))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:652) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/cli/..." \\\n' span_id: 653 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir2/... //client/cli/..." &&\n' span_id:654) (Token id: Id.Lit_Chars val: '\tfiles="cli/file11 cli/file12 cli/file21 cli/file22" &&\n' span_id: 655 ) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:656) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:657) (Token id:Id.Lit_Chars val:'\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id:658) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:659) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay single file' span_id:666))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:670) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/cli/..." \\\n' span_id: 671 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir2/file21 //client/cli/file21" &&\n' span_id:672) (Token id: Id.Lit_Chars val: '\tfiles="cli/file11 cli/file12 cli/file21" &&\n' span_id: 673 ) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:674) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:675) (Token id:Id.Lit_Chars val:'\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id:676) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:677) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'exclusion with later inclusion' span_id:684))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:688) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." \\\n' span_id: 689 ) (Token id:Id.Lit_Chars val:'\t\t "-//depot/dir2/... //client/dir2/..." \\\n' span_id:690) (Token id: Id.Lit_Chars val: '\t\t "//depot/dir2/... //client/dir2incl/..." &&\n' span_id: 691 ) (Token id: Id.Lit_Chars val: '\tfiles="dir1/file11 dir1/file12 dir2incl/file21 dir2incl/file22" &&\n' span_id: 692 ) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:693) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:694) (Token id:Id.Lit_Chars val:'\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id:695) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:696) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'quotes on rhs only' span_id:703))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:707) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... \\"//client/cdir 1/...\\"" &&\n' span_id: 708 ) (Token id:Id.Lit_Chars val:'\tclient_verify "cdir 1/file11" "cdir 1/file12" &&\n' span_id:709) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:710) (Token id:Id.Lit_Chars val:'\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id:711) (Token id: Id.Lit_Chars val: '\tgit_verify "cdir 1/file11" "cdir 1/file12"\n' span_id: 712 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone --use-client-spec sets useClientSpec' span_id:732))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:736) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 737 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:738) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 739 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:740) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:741) (Token id:Id.Lit_Chars val:'\t\tgit config --bool git-p4.useClientSpec >actual &&\n' span_id:742) (Token id:Id.Lit_Chars val:'\t\techo true >true &&\n' span_id:743) (Token id:Id.Lit_Chars val:'\t\ttest_cmp actual true\n' span_id:744) (Token id:Id.Lit_Chars val:'\t)\n' span_id:745) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'subdir clone' span_id:755))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:759) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 760 ) (Token id: Id.Lit_Chars val: '\tfiles="dir1/file11 dir1/file12 dir2/file21 dir2/file22" &&\n' span_id: 761 ) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:762) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:763) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot/dir1 &&\n' span_id: 764 ) (Token id:Id.Lit_Chars val:'\tgit_verify dir1/file11 dir1/file12\n' span_id:765) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'subdir clone, submit modify' span_id:781))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:785) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 786 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:787) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot/dir1 &&\n' span_id: 788 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:789) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:790) (Token id:Id.Lit_Chars val:'\t\tgit config git-p4.skipSubmitEdit true &&\n' span_id:791) (Token id:Id.Lit_Chars val:'\t\techo line >>dir1/file12 &&\n' span_id:792) (Token id:Id.Lit_Chars val:'\t\tgit add dir1/file12 &&\n' span_id:793) (Token id:Id.Lit_Chars val:'\t\tgit commit -m dir1/file12 &&\n' span_id:794) (Token id:Id.Lit_Chars val:'\t\tgit p4 submit\n' span_id:795) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:796) (Token id:Id.Lit_Chars val:'\t(\n' span_id:797) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:798) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_file dir1/file12 &&\n' span_id:799) (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 2 dir1/file12\n' span_id:800) (Token id:Id.Lit_Chars val:'\t)\n' span_id:801) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'subdir clone, submit add' span_id:808))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:812) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 813 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:814) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot/dir1 &&\n' span_id: 815 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:816) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:817) (Token id:Id.Lit_Chars val:'\t\tgit config git-p4.skipSubmitEdit true &&\n' span_id:818) (Token id:Id.Lit_Chars val:'\t\techo file13 >dir1/file13 &&\n' span_id:819) (Token id:Id.Lit_Chars val:'\t\tgit add dir1/file13 &&\n' span_id:820) (Token id:Id.Lit_Chars val:'\t\tgit commit -m dir1/file13 &&\n' span_id:821) (Token id:Id.Lit_Chars val:'\t\tgit p4 submit\n' span_id:822) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:823) (Token id:Id.Lit_Chars val:'\t(\n' span_id:824) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:825) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_file dir1/file13\n' span_id:826) (Token id:Id.Lit_Chars val:'\t)\n' span_id:827) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'subdir clone, submit delete' span_id:834))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:838) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 839 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:840) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot/dir1 &&\n' span_id: 841 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:842) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:843) (Token id:Id.Lit_Chars val:'\t\tgit config git-p4.skipSubmitEdit true &&\n' span_id:844) (Token id:Id.Lit_Chars val:'\t\tgit rm dir1/file12 &&\n' span_id:845) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "delete dir1/file12" &&\n' span_id:846) (Token id:Id.Lit_Chars val:'\t\tgit p4 submit\n' span_id:847) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:848) (Token id:Id.Lit_Chars val:'\t(\n' span_id:849) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:850) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_missing dir1/file12\n' span_id:851) (Token id:Id.Lit_Chars val:'\t)\n' span_id:852) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'subdir clone, submit copy' span_id:859))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:863) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 864 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:865) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot/dir1 &&\n' span_id: 866 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:867) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:868) (Token id:Id.Lit_Chars val:'\t\tgit config git-p4.skipSubmitEdit true &&\n' span_id:869) (Token id: Id.Lit_Chars val: '\t\tgit config git-p4.detectCopies true &&\n' span_id: 870 ) (Token id:Id.Lit_Chars val:'\t\tcp dir1/file11 dir1/file11a &&\n' span_id:871) (Token id:Id.Lit_Chars val:'\t\tgit add dir1/file11a &&\n' span_id:872) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "copy to dir1/file11a" &&\n' span_id:873) (Token id:Id.Lit_Chars val:'\t\tgit p4 submit\n' span_id:874) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:875) (Token id:Id.Lit_Chars val:'\t(\n' span_id:876) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:877) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_file dir1/file11a &&\n' span_id:878) (Token id: Id.Lit_Chars val: '\t\t! is_cli_file_writeable dir1/file11a\n' span_id: 879 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:880) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'subdir clone, submit rename' span_id:887))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:891) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 892 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:893) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot/dir1 &&\n' span_id: 894 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:895) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:896) (Token id:Id.Lit_Chars val:'\t\tgit config git-p4.skipSubmitEdit true &&\n' span_id:897) (Token id: Id.Lit_Chars val: '\t\tgit config git-p4.detectRenames true &&\n' span_id: 898 ) (Token id:Id.Lit_Chars val:'\t\tgit mv dir1/file13 dir1/file13a &&\n' span_id:899) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "rename dir1/file13 to dir1/file13a" &&\n' span_id: 900 ) (Token id:Id.Lit_Chars val:'\t\tgit p4 submit\n' span_id:901) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:902) (Token id:Id.Lit_Chars val:'\t(\n' span_id:903) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:904) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_missing dir1/file13 &&\n' span_id:905) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_file dir1/file13a &&\n' span_id:906) (Token id:Id.Lit_Chars val:'\t\t! is_cli_file_writeable dir1/file13a\n' span_id:907) (Token id:Id.Lit_Chars val:'\t)\n' span_id:908) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'wildcard files submit back to p4, client-spec case' span_id: 918 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:922) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 923 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:924) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot/dir1 &&\n' span_id: 925 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:926) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:927) (Token id:Id.Lit_Chars val:'\t\techo git-wild-hash >dir1/git-wild#hash &&\n' span_id:928) (Token id: Id.Lit_Chars val: '\t\tif test_have_prereq !MINGW,!CYGWIN\n' span_id: 929 ) (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:930) (Token id: Id.Lit_Chars val: '\t\t\techo git-wild-star >dir1/git-wild\\*star\n' span_id: 931 ) (Token id:Id.Lit_Chars val:'\t\tfi &&\n' span_id:932) (Token id: Id.Lit_Chars val: '\t\techo git-wild-at >dir1/git-wild@at &&\n' span_id: 933 ) (Token id:Id.Lit_Chars val:'\t\techo git-wild-percent >dir1/git-wild%percent &&\n' span_id:934) (Token id:Id.Lit_Chars val:'\t\tgit add dir1/git-wild* &&\n' span_id:935) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "add some wildcard filenames" &&\n' span_id:936) (Token id: Id.Lit_Chars val: '\t\tgit config git-p4.skipSubmitEditCheck true &&\n' span_id: 937 ) (Token id:Id.Lit_Chars val:'\t\tgit p4 submit\n' span_id:938) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:939) (Token id:Id.Lit_Chars val:'\t(\n' span_id:940) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:941) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_file dir1/git-wild#hash &&\n' span_id:942) (Token id: Id.Lit_Chars val: '\t\tif test_have_prereq !MINGW,!CYGWIN\n' span_id: 943 ) (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:944) (Token id: Id.Lit_Chars val: '\t\t\ttest_path_is_file dir1/git-wild\\*star\n' span_id: 945 ) (Token id:Id.Lit_Chars val:'\t\tfi &&\n' span_id:946) (Token id: Id.Lit_Chars val: '\t\ttest_path_is_file dir1/git-wild@at &&\n' span_id: 947 ) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_file dir1/git-wild%percent\n' span_id:948) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:949) (Token id:Id.Lit_Chars val:'\t(\n' span_id:950) (Token id: Id.Lit_Chars val: '\t\t# delete these carefully, cannot just do "p4 delete"\n' span_id: 951 ) (Token id:Id.Lit_Chars val:'\t\t# on files with wildcards; but git-p4 knows how\n' span_id:952) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:953) (Token id:Id.Lit_Chars val:'\t\tgit rm dir1/git-wild* &&\n' span_id:954) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "clean up the wildcards" &&\n' span_id: 955 ) (Token id:Id.Lit_Chars val:'\t\tgit p4 submit\n' span_id:956) (Token id:Id.Lit_Chars val:'\t)\n' span_id:957) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reinit depot' span_id:964))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:968) (Token id:Id.Lit_Chars val:'\t(\n' span_id:969) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:970) (Token id:Id.Lit_Chars val:'\t\trm files &&\n' span_id:971) (Token id:Id.Lit_Chars val:'\t\tp4 delete */* &&\n' span_id:972) (Token id: Id.Lit_Chars val: '\t\tp4 submit -d "delete all files" &&\n' span_id: 973 ) (Token id:Id.Lit_Chars val:'\t\tinit_depot\n' span_id:974) (Token id:Id.Lit_Chars val:'\t)\n' span_id:975) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay collision setup' span_id:1024))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1028) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 1029 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1030) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1031) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1032) (Token id: Id.Lit_Chars val: '\t\techo dir1/filecollide >dir1/filecollide &&\n' span_id: 1033 ) (Token id:Id.Lit_Chars val:'\t\tp4 add dir1/filecollide &&\n' span_id:1034) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir1/filecollide &&\n' span_id:1035) (Token id:Id.Lit_Chars val:'\t\techo dir2/filecollide >dir2/filecollide &&\n' span_id:1036) (Token id:Id.Lit_Chars val:'\t\tp4 add dir2/filecollide &&\n' span_id:1037) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir2/filecollide\n' span_id:1038) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1039) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay collision 1 to 2' span_id:1046))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1050) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/..." \\\n' span_id: 1051 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir2/... //client/..." &&\n' span_id:1052) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 filecollide" &&\n' span_id: 1053 ) (Token id:Id.Lit_Chars val:'\techo dir2/filecollide >actual &&\n' span_id:1054) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1055) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/filecollide &&\n' span_id:1056) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:1057) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 1058 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files &&\n' span_id:1059) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$git"/filecollide\n' span_id:1060) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'overlay collision 2 to 1' span_id:1067))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1071) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir2/... //client/..." \\\n' span_id: 1072 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir1/... //client/..." &&\n' span_id:1073) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 filecollide" &&\n' span_id: 1074 ) (Token id:Id.Lit_Chars val:'\techo dir1/filecollide >actual &&\n' span_id:1075) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1076) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/filecollide &&\n' span_id:1077) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:1078) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 1079 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files &&\n' span_id:1080) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$git"/filecollide\n' span_id:1081) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay collision delete 2' span_id:1088))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1092) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 1093 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1094) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1095) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1096) (Token id:Id.Lit_Chars val:'\t\tp4 delete dir2/filecollide &&\n' span_id:1097) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "remove dir2/filecollide"\n' span_id:1098) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1099) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'overlay collision 1 to 2, but 2 deleted' span_id:1109))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1113) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/..." \\\n' span_id: 1114 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir2/... //client/..." &&\n' span_id:1115) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22" &&\n' span_id: 1116 ) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1117) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:1118) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 1119 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:1120) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay collision update 1' span_id:1127))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1131) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/dir1/..." &&\n' span_id: 1132 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1133) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1134) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1135) (Token id:Id.Lit_Chars val:'\t\tp4 open dir1/filecollide &&\n' span_id:1136) (Token id:Id.Lit_Chars val:'\t\techo dir1/filecollide update >dir1/filecollide &&\n' span_id:1137) (Token id: Id.Lit_Chars val: '\t\tp4 submit -d "update dir1/filecollide"\n' span_id: 1138 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1139) ) } ) (C {(test_expect_failure)} { (SQ (Token id: Id.Lit_Chars val: 'overlay collision 1 to 2, but 2 deleted, then 1 updated' span_id: 1152 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1156) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/..." \\\n' span_id: 1157 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir2/... //client/..." &&\n' span_id:1158) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22" &&\n' span_id: 1159 ) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1160) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:1161) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 1162 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:1163) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay collision delete filecollides' span_id:1170))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1174) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 1175 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1176) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1177) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1178) (Token id: Id.Lit_Chars val: '\t\tp4 delete dir1/filecollide dir2/filecollide &&\n' span_id: 1179 ) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "remove filecollides"\n' span_id:1180) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1181) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync: add colA in dir1' span_id:1260))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1264) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/dir1/..." &&\n' span_id: 1265 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1266) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1267) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1268) (Token id:Id.Lit_Chars val:'\t\techo dir1/colA >dir1/colA &&\n' span_id:1269) (Token id:Id.Lit_Chars val:'\t\tp4 add dir1/colA &&\n' span_id:1270) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir1/colA\n' span_id:1271) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1272) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync: initial git checkout' span_id:1279))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1283) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/..." \\\n' span_id: 1284 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir2/... //client/..." &&\n' span_id:1285) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 colA" &&\n' span_id: 1286 ) (Token id:Id.Lit_Chars val:'\techo dir1/colA >actual &&\n' span_id:1287) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1288) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/colA &&\n' span_id:1289) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 1290 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files &&\n' span_id:1291) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$git"/colA\n' span_id:1292) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync: add colA in dir2' span_id:1299))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1303) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir2/... //client/dir2/..." &&\n' span_id: 1304 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1305) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1306) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1307) (Token id:Id.Lit_Chars val:'\t\techo dir2/colA >dir2/colA &&\n' span_id:1308) (Token id:Id.Lit_Chars val:'\t\tp4 add dir2/colA &&\n' span_id:1309) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir2/colA\n' span_id:1310) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1311) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync: colA content switch' span_id:1318))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1322) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/..." \\\n' span_id: 1323 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir2/... //client/..." &&\n' span_id:1324) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 colA" &&\n' span_id: 1325 ) (Token id:Id.Lit_Chars val:'\techo dir2/colA >actual &&\n' span_id:1326) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1327) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/colA &&\n' span_id:1328) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1329) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:1330) (Token id:Id.Lit_Chars val:'\t\tgit p4 sync --use-client-spec &&\n' span_id:1331) (Token id:Id.Lit_Chars val:'\t\tgit merge --ff-only p4/master\n' span_id:1332) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1333) (Token id:Id.Lit_Chars val:'\tgit_verify $files &&\n' span_id:1334) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$git"/colA\n' span_id:1335) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync: add colB in dir1' span_id:1342))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1346) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/dir1/..." &&\n' span_id: 1347 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1348) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1349) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1350) (Token id:Id.Lit_Chars val:'\t\techo dir1/colB >dir1/colB &&\n' span_id:1351) (Token id:Id.Lit_Chars val:'\t\tp4 add dir1/colB &&\n' span_id:1352) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir1/colB\n' span_id:1353) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1354) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync: colB appears' span_id:1361))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1365) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/..." \\\n' span_id: 1366 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir2/... //client/..." &&\n' span_id:1367) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 colA colB" &&\n' span_id: 1368 ) (Token id:Id.Lit_Chars val:'\techo dir1/colB >actual &&\n' span_id:1369) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1370) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/colB &&\n' span_id:1371) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1372) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:1373) (Token id:Id.Lit_Chars val:'\t\tgit p4 sync --use-client-spec &&\n' span_id:1374) (Token id:Id.Lit_Chars val:'\t\tgit merge --ff-only p4/master\n' span_id:1375) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1376) (Token id:Id.Lit_Chars val:'\tgit_verify $files &&\n' span_id:1377) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$git"/colB\n' span_id:1378) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync: add/delete colB in dir2' span_id:1385))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1389) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir2/... //client/dir2/..." &&\n' span_id: 1390 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1391) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1392) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1393) (Token id:Id.Lit_Chars val:'\t\techo dir2/colB >dir2/colB &&\n' span_id:1394) (Token id:Id.Lit_Chars val:'\t\tp4 add dir2/colB &&\n' span_id:1395) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir2/colB &&\n' span_id:1396) (Token id:Id.Lit_Chars val:'\t\tp4 delete dir2/colB &&\n' span_id:1397) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "delete dir2/colB"\n' span_id:1398) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1399) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync: colB disappears' span_id:1406))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1410) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/..." \\\n' span_id: 1411 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir2/... //client/..." &&\n' span_id:1412) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 colA" &&\n' span_id: 1413 ) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1414) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:1415) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1416) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:1417) (Token id:Id.Lit_Chars val:'\t\tgit p4 sync --use-client-spec &&\n' span_id:1418) (Token id:Id.Lit_Chars val:'\t\tgit merge --ff-only p4/master\n' span_id:1419) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1420) (Token id:Id.Lit_Chars val:'\tgit_verify $files\n' span_id:1421) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync: cleanup' span_id:1428))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1432) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 1433 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1434) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1435) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1436) (Token id: Id.Lit_Chars val: '\t\tp4 delete dir1/colA dir2/colA dir1/colB &&\n' span_id: 1437 ) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "remove overlay sync files"\n' span_id:1438) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1439) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync swap: add colA in dir1' span_id:1518))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1522) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/dir1/..." &&\n' span_id: 1523 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1524) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1525) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1526) (Token id:Id.Lit_Chars val:'\t\techo dir1/colA >dir1/colA &&\n' span_id:1527) (Token id:Id.Lit_Chars val:'\t\tp4 add dir1/colA &&\n' span_id:1528) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir1/colA\n' span_id:1529) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1530) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync swap: initial git checkout' span_id:1537))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1541) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir2/... //client/..." \\\n' span_id: 1542 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir1/... //client/..." &&\n' span_id:1543) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 colA" &&\n' span_id: 1544 ) (Token id:Id.Lit_Chars val:'\techo dir1/colA >actual &&\n' span_id:1545) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1546) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/colA &&\n' span_id:1547) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 1548 ) (Token id:Id.Lit_Chars val:'\tgit_verify $files &&\n' span_id:1549) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$git"/colA\n' span_id:1550) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync swap: add colA in dir2' span_id:1557))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1561) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir2/... //client/dir2/..." &&\n' span_id: 1562 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1563) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1564) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1565) (Token id:Id.Lit_Chars val:'\t\techo dir2/colA >dir2/colA &&\n' span_id:1566) (Token id:Id.Lit_Chars val:'\t\tp4 add dir2/colA &&\n' span_id:1567) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir2/colA\n' span_id:1568) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1569) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync swap: colA no content switch' span_id:1576))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1580) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir2/... //client/..." \\\n' span_id: 1581 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir1/... //client/..." &&\n' span_id:1582) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 colA" &&\n' span_id: 1583 ) (Token id:Id.Lit_Chars val:'\techo dir1/colA >actual &&\n' span_id:1584) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1585) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/colA &&\n' span_id:1586) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1587) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:1588) (Token id:Id.Lit_Chars val:'\t\tgit p4 sync --use-client-spec &&\n' span_id:1589) (Token id:Id.Lit_Chars val:'\t\tgit merge --ff-only p4/master\n' span_id:1590) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1591) (Token id:Id.Lit_Chars val:'\tgit_verify $files &&\n' span_id:1592) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$git"/colA\n' span_id:1593) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync swap: add colB in dir1' span_id:1600))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1604) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir1/... //client/dir1/..." &&\n' span_id: 1605 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1606) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1607) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1608) (Token id:Id.Lit_Chars val:'\t\techo dir1/colB >dir1/colB &&\n' span_id:1609) (Token id:Id.Lit_Chars val:'\t\tp4 add dir1/colB &&\n' span_id:1610) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir1/colB\n' span_id:1611) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1612) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync swap: colB appears' span_id:1619))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1623) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir2/... //client/..." \\\n' span_id: 1624 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir1/... //client/..." &&\n' span_id:1625) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 colA colB" &&\n' span_id: 1626 ) (Token id:Id.Lit_Chars val:'\techo dir1/colB >actual &&\n' span_id:1627) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1628) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/colB &&\n' span_id:1629) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1630) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:1631) (Token id:Id.Lit_Chars val:'\t\tgit p4 sync --use-client-spec &&\n' span_id:1632) (Token id:Id.Lit_Chars val:'\t\tgit merge --ff-only p4/master\n' span_id:1633) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1634) (Token id:Id.Lit_Chars val:'\tgit_verify $files &&\n' span_id:1635) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$git"/colB\n' span_id:1636) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync swap: add/delete colB in dir2' span_id:1643))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1647) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir2/... //client/dir2/..." &&\n' span_id: 1648 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1649) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1650) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1651) (Token id:Id.Lit_Chars val:'\t\techo dir2/colB >dir2/colB &&\n' span_id:1652) (Token id:Id.Lit_Chars val:'\t\tp4 add dir2/colB &&\n' span_id:1653) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d dir2/colB &&\n' span_id:1654) (Token id:Id.Lit_Chars val:'\t\tp4 delete dir2/colB &&\n' span_id:1655) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "delete dir2/colB"\n' span_id:1656) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1657) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync swap: colB no change' span_id:1664))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1668) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/dir2/... //client/..." \\\n' span_id: 1669 ) (Token id:Id.Lit_Chars val:'\t\t "+//depot/dir1/... //client/..." &&\n' span_id:1670) (Token id: Id.Lit_Chars val: '\tfiles="file11 file12 file21 file22 colA colB" &&\n' span_id: 1671 ) (Token id:Id.Lit_Chars val:'\techo dir1/colB >actual &&\n' span_id:1672) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1673) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/colB &&\n' span_id:1674) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:1675) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1676) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:1677) (Token id:Id.Lit_Chars val:'\t\tgit p4 sync --use-client-spec &&\n' span_id:1678) (Token id:Id.Lit_Chars val:'\t\tgit merge --ff-only p4/master\n' span_id:1679) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1680) (Token id:Id.Lit_Chars val:'\tgit_verify $files &&\n' span_id:1681) (Token id:Id.Lit_Chars val:'\ttest_cmp actual "$cli"/colB\n' span_id:1682) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overlay sync swap: cleanup' span_id:1689))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1693) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 1694 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1695) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1696) (Token id:Id.Lit_Chars val:'\t\tp4 sync &&\n' span_id:1697) (Token id: Id.Lit_Chars val: '\t\tp4 delete dir1/colA dir2/colA dir1/colB &&\n' span_id: 1698 ) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "remove overlay sync files"\n' span_id:1699) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1700) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rename files to introduce spaces' span_id:1737))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1741) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 1742 ) (Token id:Id.Lit_Chars val:'\tclient_verify dir1/file11 dir1/file12 \\\n' span_id:1743) (Token id:Id.Lit_Chars val:'\t\t dir2/file21 dir2/file22 &&\n' span_id:1744) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1745) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:1746) (Token id:Id.Lit_Chars val:'\t\tp4 open dir1/... &&\n' span_id:1747) (Token id:Id.Lit_Chars val:'\t\tp4 move dir1/... "dir 1"/... &&\n' span_id:1748) (Token id:Id.Lit_Chars val:'\t\tp4 open dir2/... &&\n' span_id:1749) (Token id:Id.Lit_Chars val:'\t\tp4 move dir2/... "dir 2"/... &&\n' span_id:1750) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "rename with spaces"\n' span_id:1751) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1752) (Token id:Id.Lit_Chars val:'\tclient_verify "dir 1/file11" "dir 1/file12" \\\n' span_id:1753) (Token id: Id.Lit_Chars val: '\t\t "dir 2/file21" "dir 2/file22"\n' span_id: 1754 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'quotes on lhs only' span_id:1761))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1765) (Token id: Id.Lit_Chars val: '\tclient_view "\\"//depot/dir 1/...\\" //client/cdir1/..." &&\n' span_id: 1766 ) (Token id:Id.Lit_Chars val:'\tfiles="cdir1/file11 cdir1/file12" &&\n' span_id:1767) (Token id:Id.Lit_Chars val:'\tclient_verify $files &&\n' span_id:1768) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:1769) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 1770 ) (Token id:Id.Lit_Chars val:'\tclient_verify $files\n' span_id:1771) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'quotes on both sides' span_id:1778))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1782) (Token id: Id.Lit_Chars val: '\tclient_view "\\"//depot/dir 1/...\\" \\"//client/cdir 1/...\\"" &&\n' span_id: 1783 ) (Token id:Id.Lit_Chars val:'\tclient_verify "cdir 1/file11" "cdir 1/file12" &&\n' span_id:1784) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:1785) (Token id: Id.Lit_Chars val: '\tgit p4 clone --use-client-spec --dest="$git" //depot &&\n' span_id: 1786 ) (Token id:Id.Lit_Chars val:'\tgit_verify "cdir 1/file11" "cdir 1/file12"\n' span_id:1787) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'kill p4d' span_id:1794))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1798) (Token id:Id.Lit_Chars val:'\tkill_p4d\n' span_id:1799) ) } ) (C {(test_done)}) ] )