(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:'Clone repositories and keep empty commits' 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) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Create a repo' span_id:30))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:34) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 35 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:36) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\n' span_id:38) (Token id:Id.Lit_Chars val:'\t\tmkdir -p subdir &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\n' span_id:40) (Token id:Id.Lit_Chars val:'\t\t>subdir/file1.txt &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\t\tp4 add subdir/file1.txt &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Add file 1" &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\n' span_id:44) (Token id:Id.Lit_Chars val:'\t\t>file2.txt &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\t\tp4 add file2.txt &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Add file 2" &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\n' span_id:48) (Token id:Id.Lit_Chars val:'\t\t>subdir/file3.txt &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\t\tp4 add subdir/file3.txt &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Add file 3" &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id:Id.Lit_Chars val:'\t\t>file4.txt &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\t\tp4 add file4.txt &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Add file 4" &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\tp4 delete subdir/file3.txt &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Remove file 3" &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\tp4 delete file4.txt &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Remove file 4"\n' span_id:61) (Token id:Id.Lit_Chars val:'\t)\n' span_id:62) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Clone repo root path with all history' span_id:69))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:73) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/... //client/..." &&\n' span_id: 74 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\t(\n' span_id:76) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:78) (Token id: Id.Lit_Chars val: '\t\tgit p4 clone --use-client-spec --destination="$git" //depot@all &&\n' span_id: 79 ) (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\t\tRemove file 4\n' span_id:81) (Token id:Id.Lit_Chars val:'\t\t[git-p4: depot-paths = "//depot/": change = 6]\n' span_id:82) (Token id:Id.Lit_Chars val:'\n' span_id:83) (Token id:Id.Lit_Chars val:'\t\tRemove file 3\n' span_id:84) (Token id: Id.Lit_Chars val: '\t\t[git-p4: depot-paths = "//depot/": change = 5]\n' span_id: 85 ) (Token id:Id.Lit_Chars val:'\n' span_id:86) (Token id:Id.Lit_Chars val:'\t\tAdd file 4\n' span_id:87) (Token id: Id.Lit_Chars val: '\t\t[git-p4: depot-paths = "//depot/": change = 4]\n' span_id: 88 ) (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id:Id.Lit_Chars val:'\t\tAdd file 3\n' span_id:90) (Token id: Id.Lit_Chars val: '\t\t[git-p4: depot-paths = "//depot/": change = 3]\n' span_id: 91 ) (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id:Id.Lit_Chars val:'\t\tAdd file 2\n' span_id:93) (Token id: Id.Lit_Chars val: '\t\t[git-p4: depot-paths = "//depot/": change = 2]\n' span_id: 94 ) (Token id:Id.Lit_Chars val:'\n' span_id:95) (Token id:Id.Lit_Chars val:'\t\tAdd file 1\n' span_id:96) (Token id: Id.Lit_Chars val: '\t\t[git-p4: depot-paths = "//depot/": change = 1]\n' span_id: 97 ) (Token id:Id.Lit_Chars val:'\n' span_id:98) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:99) (Token id:Id.Lit_Chars val:'\t\tgit log --format=%B >actual &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:101) (Token id:Id.Lit_Chars val:'\t)\n' span_id:102) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'Clone repo subdir with all history but keep empty commits' span_id: 109 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:113) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/subdir/... //client/subdir/..." &&\n' span_id: 114 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\t(\n' span_id:116) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\t\tgit config git-p4.keepEmptyCommits true &&\n' span_id:119) (Token id: Id.Lit_Chars val: '\t\tgit p4 clone --use-client-spec --destination="$git" //depot@all &&\n' span_id: 120 ) (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\t\tRemove file 4\n' span_id:122) (Token id:Id.Lit_Chars val:'\t\t[git-p4: depot-paths = "//depot/": change = 6]\n' span_id:123) (Token id:Id.Lit_Chars val:'\n' span_id:124) (Token id:Id.Lit_Chars val:'\t\tRemove file 3\n' span_id:125) (Token id: Id.Lit_Chars val: '\t\t[git-p4: depot-paths = "//depot/": change = 5]\n' span_id: 126 ) (Token id:Id.Lit_Chars val:'\n' span_id:127) (Token id:Id.Lit_Chars val:'\t\tAdd file 4\n' span_id:128) (Token id:Id.Lit_Chars val:'\t\t[git-p4: depot-paths = "//depot/": change = 4]\n' span_id:129) (Token id:Id.Lit_Chars val:'\n' span_id:130) (Token id:Id.Lit_Chars val:'\t\tAdd file 3\n' span_id:131) (Token id: Id.Lit_Chars val: '\t\t[git-p4: depot-paths = "//depot/": change = 3]\n' span_id: 132 ) (Token id:Id.Lit_Chars val:'\n' span_id:133) (Token id:Id.Lit_Chars val:'\t\tAdd file 2\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\t[git-p4: depot-paths = "//depot/": change = 2]\n' span_id:135) (Token id:Id.Lit_Chars val:'\n' span_id:136) (Token id:Id.Lit_Chars val:'\t\tAdd file 1\n' span_id:137) (Token id: Id.Lit_Chars val: '\t\t[git-p4: depot-paths = "//depot/": change = 1]\n' span_id: 138 ) (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:140) (Token id:Id.Lit_Chars val:'\t\tgit log --format=%B >actual &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:142) (Token id:Id.Lit_Chars val:'\t)\n' span_id:143) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Clone repo subdir with all history' span_id:150))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:154) (Token id: Id.Lit_Chars val: '\tclient_view "//depot/subdir/... //client/subdir/..." &&\n' span_id: 155 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\t(\n' span_id:157) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:159) (Token id: Id.Lit_Chars val: '\t\tgit p4 clone --use-client-spec --destination="$git" --verbose //depot@all &&\n' span_id: 160 ) (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\t\tRemove file 3\n' span_id:162) (Token id:Id.Lit_Chars val:'\t\t[git-p4: depot-paths = "//depot/": change = 5]\n' span_id:163) (Token id:Id.Lit_Chars val:'\n' span_id:164) (Token id:Id.Lit_Chars val:'\t\tAdd file 3\n' span_id:165) (Token id: Id.Lit_Chars val: '\t\t[git-p4: depot-paths = "//depot/": change = 3]\n' span_id: 166 ) (Token id:Id.Lit_Chars val:'\n' span_id:167) (Token id:Id.Lit_Chars val:'\t\tAdd file 1\n' span_id:168) (Token id:Id.Lit_Chars val:'\t\t[git-p4: depot-paths = "//depot/": change = 1]\n' span_id:169) (Token id:Id.Lit_Chars val:'\n' span_id:170) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:171) (Token id:Id.Lit_Chars val:'\t\tgit log --format=%B >actual &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:173) (Token id:Id.Lit_Chars val:'\t)\n' span_id:174) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'kill p4d' span_id:181))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id:Id.Lit_Chars val:'\tkill_p4d\n' span_id:186) ) } ) (C {(test_done)}) ] )