(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"Clone repositories with path case variations">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./lib-git-p4.sh)}) (C {(test_expect_success)} {(SQ <"start p4d with case folding enabled">)} {(SQ <"\n"> <"\tstart_p4d -C1\n">)} ) (C {(test_expect_success)} {(SQ <"Create a repo with path case variations">)} { (SQ <"\n"> <"\tclient_view \"//depot/... //client/...\" &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\n"> <"\t\tmkdir -p Path/to &&\n"> <"\t\t>Path/to/File2.txt &&\n"> <"\t\tp4 add Path/to/File2.txt &&\n"> <"\t\tp4 submit -d \"Add file2\" &&\n"> <"\t\trm -rf Path &&\n"> <"\n"> <"\t\tmkdir -p path/TO &&\n"> <"\t\t>path/TO/file1.txt &&\n"> <"\t\tp4 add path/TO/file1.txt &&\n"> <"\t\tp4 submit -d \"Add file1\" &&\n"> <"\t\trm -rf path &&\n"> <"\n"> <"\t\tmkdir -p path/to &&\n"> <"\t\t>path/to/file3.txt &&\n"> <"\t\tp4 add path/to/file3.txt &&\n"> <"\t\tp4 submit -d \"Add file3\" &&\n"> <"\t\trm -rf path &&\n"> <"\n"> <"\t\tmkdir -p x-outside-spec &&\n"> <"\t\t>x-outside-spec/file4.txt &&\n"> <"\t\tp4 add x-outside-spec/file4.txt &&\n"> <"\t\tp4 submit -d \"Add file4\" &&\n"> <"\t\trm -rf x-outside-spec\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"Clone root">)} { (SQ <"\n"> <"\tclient_view \"//depot/... //client/...\" &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit init . &&\n"> <"\t\tgit config core.ignorecase false &&\n"> <"\t\tgit p4 clone --use-client-spec --destination=\"$git\" //depot &&\n"> <"\t\t# This method is used instead of \"test -f\" to ensure the case is\n"> <"\t\t# checked even if the test is executed on case-insensitive file systems.\n"> <"\t\t# All files are there as expected although the path cases look random.\n"> <"\t\tcat >expect <<-\\EOF &&\n"> <"\t\tPath/to/File2.txt\n"> <"\t\tpath/TO/file1.txt\n"> <"\t\tpath/to/file3.txt\n"> <"\t\tx-outside-spec/file4.txt\n"> <"\t\tEOF\n"> <"\t\tgit ls-files >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"Clone root (ignorecase)">)} { (SQ <"\n"> <"\tclient_view \"//depot/... //client/...\" &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit init . &&\n"> <"\t\tgit config core.ignorecase true &&\n"> <"\t\tgit p4 clone --use-client-spec --destination=\"$git\" //depot &&\n"> <"\t\t# This method is used instead of \"test -f\" to ensure the case is\n"> <"\t\t# checked even if the test is executed on case-insensitive file systems.\n"> <"\t\t# All files are there as expected although the path cases look random.\n"> <"\t\tcat >expect <<-\\EOF &&\n"> <"\t\tpath/TO/File2.txt\n"> <"\t\tpath/TO/file1.txt\n"> <"\t\tpath/TO/file3.txt\n"> <"\t\tx-outside-spec/file4.txt\n"> <"\t\tEOF\n"> <"\t\tgit ls-files >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"Clone root and ignore one file">)} { (SQ <"\n"> <"\tclient_view \\\n"> <"\t\t\"//depot/... //client/...\" \\\n"> <"\t\t\"-//depot/path/TO/file1.txt //client/path/TO/file1.txt\" &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit init . &&\n"> <"\t\tgit config core.ignorecase false &&\n"> <"\t\tgit p4 clone --use-client-spec --destination=\"$git\" //depot &&\n"> <"\t\t# We ignore one file in the client spec and all path cases change from\n"> <"\t\t# \"TO\" to \"to\"!\n"> <"\t\tcat >expect <<-\\EOF &&\n"> <"\t\tPath/to/File2.txt\n"> <"\t\tpath/to/file3.txt\n"> <"\t\tx-outside-spec/file4.txt\n"> <"\t\tEOF\n"> <"\t\tgit ls-files >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"Clone root and ignore one file (ignorecase)">)} { (SQ <"\n"> <"\tclient_view \\\n"> <"\t\t\"//depot/... //client/...\" \\\n"> <"\t\t\"-//depot/path/TO/file1.txt //client/path/TO/file1.txt\" &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit init . &&\n"> <"\t\tgit config core.ignorecase true &&\n"> <"\t\tgit p4 clone --use-client-spec --destination=\"$git\" //depot &&\n"> <"\t\t# We ignore one file in the client spec and all path cases change from\n"> <"\t\t# \"TO\" to \"to\"!\n"> <"\t\tcat >expect <<-\\EOF &&\n"> <"\t\tPath/to/File2.txt\n"> <"\t\tPath/to/file3.txt\n"> <"\t\tx-outside-spec/file4.txt\n"> <"\t\tEOF\n"> <"\t\tgit ls-files >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"Clone path">)} { (SQ <"\n"> <"\tclient_view \"//depot/Path/... //client/...\" &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit init . &&\n"> <"\t\tgit config core.ignorecase false &&\n"> <"\t\tgit p4 clone --use-client-spec --destination=\"$git\" //depot &&\n"> <"\t\tcat >expect <<-\\EOF &&\n"> <"\t\tto/File2.txt\n"> <"\t\tEOF\n"> <"\t\tgit ls-files >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"Clone path (ignorecase)">)} { (SQ <"\n"> <"\tclient_view \"//depot/Path/... //client/...\" &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit init . &&\n"> <"\t\tgit config core.ignorecase true &&\n"> <"\t\tgit p4 clone --use-client-spec --destination=\"$git\" //depot &&\n"> <"\t\tcat >expect <<-\\EOF &&\n"> <"\t\tTO/File2.txt\n"> <"\t\tTO/file1.txt\n"> <"\t\tTO/file3.txt\n"> <"\t\tEOF\n"> <"\t\tgit ls-files >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"Add a new file and clone path with new file (ignorecase)">)} { (SQ <"\n"> <"\tclient_view \"//depot/... //client/...\" &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\tmkdir -p Path/to &&\n"> <"\t\t>Path/to/File0.txt &&\n"> <"\t\tp4 add Path/to/File0.txt &&\n"> <"\t\tp4 submit -d \"Add file\" &&\n"> <"\t\trm -rf Path\n"> <"\t) &&\n"> <"\n"> <"\tclient_view \"//depot/Path/... //client/...\" &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit init . &&\n"> <"\t\tgit config core.ignorecase true &&\n"> <"\t\tgit p4 clone --use-client-spec --destination=\"$git\" //depot &&\n"> <"\t\tcat >expect <<-\\EOF &&\n"> <"\t\tto/File0.txt\n"> <"\t\tto/File2.txt\n"> <"\t\tto/file1.txt\n"> <"\t\tto/file3.txt\n"> <"\t\tEOF\n"> <"\t\tgit ls-files >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"kill p4d">)} {(SQ <"\n"> <"\tkill_p4d\n">)}) (C {(test_done)}) ] )