{"thread":{"id":"9214","subject":"[PATCH] t9200: Be careful when checking CVS/Entries","startedAt":"2007-07-25T06:39:56Z","lastAt":"2007-07-25T06:39:56Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"48540","messageId":"7vtzrtdm0z.fsf@assigned-by-dhcp.cox.net","threadId":"9214","inReplyTo":null,"subject":"[PATCH] t9200: Be careful when checking CVS/Entries","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2007-07-25T06:39:56Z","receivedAt":"2007-07-25T06:39:56Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"CVS/Entries file can contain a line with a single D to say \"this\ndirectory does not have any subdirectories\".  Do not get\nconfused with such an entry.  In the tests, we are only\ninterested in the tracked files, so we should only look at the\nlines that begin with a '/'.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n\n * I haven't figured out why, but sometimes CVS leaves such a\n   'D' line in a directory without a subdirectory, which really\n   screws up the comparison.\n\n   Moreover, test $(echo $(sort ... | ...)) = \"e x p e c t e d\"\n   was simply too ugly to read.\n\n t/t9200-git-cvsexportcommit.sh |   64 ++++++++++++++++++++++++---------------\n 1 files changed, 39 insertions(+), 25 deletions(-)\n\ndiff --git a/t/t9200-git-cvsexportcommit.sh b/t/t9200-git-cvsexportcommit.sh\nindex 4efa0c9..910c584 100755\n--- a/t/t9200-git-cvsexportcommit.sh\n+++ b/t/t9200-git-cvsexportcommit.sh\n@@ -28,6 +28,18 @@ git add empty &&\n git commit -q -a -m \"Initial\" 2>/dev/null ||\n exit 1\n \n+check_entries () {\n+\t# $1 == directory, $2 == expected\n+\tgrep '^/' \"$1/CVS/Entries\" | sort | cut -d/ -f2,3,5 >actual\n+\tif test -z \"$2\"\n+\tthen\n+\t\t>expected\n+\telse\n+\t\tprintf '%s\\n' \"$2\" | tr '|' '\\012' >expected\n+\tfi\n+\tdiff -u expected actual\n+}\n+\n test_expect_success \\\n     'New file' \\\n     'mkdir A B C D E F &&\n@@ -43,10 +55,10 @@ test_expect_success \\\n      id=$(git rev-list --max-count=1 HEAD) &&\n      (cd \"$CVSWORK\" &&\n      git cvsexportcommit -c $id &&\n-     test \"$(echo $(sort A/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile1.txt/1.1/\" &&\n-     test \"$(echo $(sort B/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile2.txt/1.1/\" &&\n-     test \"$(echo $(sort C/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile3.png/1.1/-kb\" &&\n-     test \"$(echo $(sort D/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile4.png/1.1/-kb\" &&\n+     check_entries A \"newfile1.txt/1.1/\" &&\n+     check_entries B \"newfile2.txt/1.1/\" &&\n+     check_entries C \"newfile3.png/1.1/-kb\" &&\n+     check_entries D \"newfile4.png/1.1/-kb\" &&\n      diff A/newfile1.txt ../A/newfile1.txt &&\n      diff B/newfile2.txt ../B/newfile2.txt &&\n      diff C/newfile3.png ../C/newfile3.png &&\n@@ -67,12 +79,12 @@ test_expect_success \\\n      id=$(git rev-list --max-count=1 HEAD) &&\n      (cd \"$CVSWORK\" &&\n      git cvsexportcommit -c $id &&\n-     test \"$(echo $(sort A/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile1.txt/1.2/\" &&\n-     test \"$(echo $(sort B/CVS/Entries|cut -d/ -f2,3,5))\" = \"\" &&\n-     test \"$(echo $(sort C/CVS/Entries|cut -d/ -f2,3,5))\" = \"\" &&\n-     test \"$(echo $(sort D/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile4.png/1.2/-kb\" &&\n-     test \"$(echo $(sort E/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile5.txt/1.1/\" &&\n-     test \"$(echo $(sort F/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile6.png/1.1/-kb\" &&\n+     check_entries A \"newfile1.txt/1.2/\" &&\n+     check_entries B \"\" &&\n+     check_entries C \"\" &&\n+     check_entries D \"newfile4.png/1.2/-kb\" &&\n+     check_entries E \"newfile5.txt/1.1/\" &&\n+     check_entries F \"newfile6.png/1.1/-kb\" &&\n      diff A/newfile1.txt ../A/newfile1.txt &&\n      diff D/newfile4.png ../D/newfile4.png &&\n      diff E/newfile5.txt ../E/newfile5.txt &&\n@@ -115,12 +127,12 @@ test_expect_success \\\n      id=$(git rev-list --max-count=1 HEAD) &&\n      (cd \"$CVSWORK\" &&\n      git cvsexportcommit -c $id &&\n-     test \"$(echo $(sort A/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile1.txt/1.2/\" &&\n-     test \"$(echo $(sort B/CVS/Entries|cut -d/ -f2,3,5))\" = \"\" &&\n-     test \"$(echo $(sort C/CVS/Entries|cut -d/ -f2,3,5))\" = \"\" &&\n-     test \"$(echo $(sort D/CVS/Entries|cut -d/ -f2,3,5))\" = \"\" &&\n-     test \"$(echo $(sort E/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile5.txt/1.1/\" &&\n-     test \"$(echo $(sort F/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile6.png/1.1/-kb\" &&\n+     check_entries A \"newfile1.txt/1.2/\" &&\n+     check_entries B \"\" &&\n+     check_entries C \"\" &&\n+     check_entries D \"\" &&\n+     check_entries E \"newfile5.txt/1.1/\" &&\n+     check_entries F \"newfile6.png/1.1/-kb\" &&\n      diff A/newfile1.txt ../A/newfile1.txt &&\n      diff E/newfile5.txt ../E/newfile5.txt &&\n      diff F/newfile6.png ../F/newfile6.png\n@@ -133,12 +145,12 @@ test_expect_success \\\n      id=$(git rev-list --max-count=1 HEAD) &&\n      (cd \"$CVSWORK\" &&\n      git cvsexportcommit -c $id &&\n-     test \"$(echo $(sort A/CVS/Entries|cut -d/ -f2,3,5))\" = \"\" &&\n-     test \"$(echo $(sort B/CVS/Entries|cut -d/ -f2,3,5))\" = \"\" &&\n-     test \"$(echo $(sort C/CVS/Entries|cut -d/ -f2,3,5))\" = \"\" &&\n-     test \"$(echo $(sort D/CVS/Entries|cut -d/ -f2,3,5))\" = \"\" &&\n-     test \"$(echo $(sort E/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile5.txt/1.1/\" &&\n-     test \"$(echo $(sort F/CVS/Entries|cut -d/ -f2,3,5))\" = \"newfile6.png/1.1/-kb\" &&\n+     check_entries A \"\" &&\n+     check_entries B \"\" &&\n+     check_entries C \"\" &&\n+     check_entries D \"\" &&\n+     check_entries E \"newfile5.txt/1.1/\" &&\n+     check_entries F \"newfile6.png/1.1/-kb\" &&\n      diff E/newfile5.txt ../E/newfile5.txt &&\n      diff F/newfile6.png ../F/newfile6.png\n      )'\n@@ -154,7 +166,7 @@ test_expect_success \\\n       id=$(git rev-list --max-count=1 HEAD) &&\n       (cd \"$CVSWORK\" &&\n       git-cvsexportcommit -c $id &&\n-      test \"$(echo $(sort \"G g/CVS/Entries\"|cut -d/ -f2,3,5))\" = \"with spaces.png/1.1/-kb with spaces.txt/1.1/\"\n+      check_entries \"G g\" \"with spaces.png/1.1/-kb|with spaces.txt/1.1/\"\n       )'\n \n test_expect_success \\\n@@ -166,7 +178,7 @@ test_expect_success \\\n       id=$(git rev-list --max-count=1 HEAD) &&\n       (cd \"$CVSWORK\" &&\n       git-cvsexportcommit -c $id\n-      test \"$(echo $(sort \"G g/CVS/Entries\"|cut -d/ -f2,3,5))\" = \"with spaces.png/1.2/-kb with spaces.txt/1.2/\"\n+      check_entries \"G g\" \"with spaces.png/1.2/-kb|with spaces.txt/1.2/\"\n       )'\n \n # Some filesystems mangle pathnames with UTF-8 characters --\n@@ -191,7 +203,9 @@ test_expect_success \\\n       id=$(git rev-list --max-count=1 HEAD) &&\n       (cd \"$CVSWORK\" &&\n       git-cvsexportcommit -v -c $id &&\n-      test \"$(echo $(sort Å/goo/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/å/ä/ö/CVS/Entries|cut -d/ -f2,3,5))\" = \"gårdetsågårdet.png/1.1/-kb gårdetsågårdet.txt/1.1/\"\n+      check_entries \\\n+      \"Å/goo/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/å/ä/ö\" \\\n+      \"gårdetsågårdet.png/1.1/-kb|gårdetsågårdet.txt/1.1/\"\n       )'\n \n fi\n-- \n1.5.3.rc3\n"}]}