{"thread":{"id":"37360","subject":"[PATCH 1/2] t0027: Tests for core.eol=native, eol=lf, eol=crlf","startedAt":"2014-08-16T20:16:58Z","lastAt":"2014-08-30T09:01:03Z","messageCount":3,"participants":["Torsten Bögershausen","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"247791","messageId":"53EFBC3A.5020805@web.de","threadId":"37360","inReplyTo":null,"subject":"[PATCH 1/2] t0027: Tests for core.eol=native, eol=lf, eol=crlf","fromName":"Torsten Bögershausen","fromEmail":"tboegi@web.de","sentAt":"2014-08-16T20:16:58Z","receivedAt":"2014-08-16T20:16:58Z","isPatch":true,"sender":{"key":"tboegi@web.de","avatar":"https://avatars.githubusercontent.com/u/7138363?v=4"},"body":"Add test cases for core.eol \"native\" and \"\" (unset).\n(MINGW uses CRLF, all other systems LF as native line endings)\n\nAdd test cases for the attributes \"eol=lf\" and \"eol=crlf\"\n\nOther minor changes:\n- Use the more portable 'tr' instead of 'od -c' to convert '\\n' into 'Q'\n  and '\\0' into 'N'\n- Style fixes for shell functions according to the coding guide lines\n- Replace \"txtbin\" with \"attr\"\n\nSigned-off-by: Torsten Bögershausen <tboegi@web.de>\n---\n t/t0027-auto-crlf.sh | 220 ++++++++++++++++++++++++++++-----------------------\n 1 file changed, 120 insertions(+), 100 deletions(-)\n\ndiff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh\nindex 72dd3e8..2a4a6c1 100755\n--- a/t/t0027-auto-crlf.sh\n+++ b/t/t0027-auto-crlf.sh\n@@ -10,30 +10,26 @@ then\n \ttest_done\n fi\n \n-\n-compare_files()\n-{\n-\tod -c <\"$1\" >\"$1\".expect &&\n-\tod -c <\"$2\" >\"$2\".actual &&\n+compare_files () {\n+\ttr '\\015\\000' QN <\"$1\" >\"$1\".expect &&\n+\ttr '\\015\\000' QN <\"$2\" >\"$2\".actual &&\n \ttest_cmp \"$1\".expect \"$2\".actual &&\n \trm \"$1\".expect \"$2\".actual\n }\n \n-compare_ws_file()\n-{\n+compare_ws_file () {\n \tpfx=$1\n \texp=$2.expect\n \tact=$pfx.actual.$3\n-\tod -c <\"$2\" >\"$exp\" &&\n-\tod -c <\"$3\" >\"$act\" &&\n+\ttr '\\015\\000' QN <\"$2\" >\"$exp\" &&\n+\ttr '\\015\\000' QN <\"$3\" >\"$act\" &&\n \ttest_cmp $exp $act &&\n \trm $exp $act\n }\n \n-create_gitattributes()\n-{\n-\ttxtbin=$1\n-\tcase \"$txtbin\" in\n+create_gitattributes () {\n+\tattr=$1\n+\tcase \"$attr\" in\n \t\tauto)\n \t\techo \"*.txt text=auto\" >.gitattributes\n \t\t;;\n@@ -43,35 +39,43 @@ create_gitattributes()\n \t\t-text)\n \t\techo \"*.txt -text\" >.gitattributes\n \t\t;;\n-\t\t*)\n+\t\tcrlf)\n+\t\techo \"*.txt eol=crlf\" >.gitattributes\n+\t\t;;\n+\t\tlf)\n+\t\techo \"*.txt eol=lf\" >.gitattributes\n+\t\t;;\n+\t\t\"\")\n \t\techo >.gitattributes\n \t\t;;\n+\t\t*)\n+\t\techo >&2 invalid attribute: $attr\n+\t\texit 1\n+\t\t;;\n \tesac\n }\n \n-create_file_in_repo()\n-{\n+create_file_in_repo () {\n \tcrlf=$1\n-\ttxtbin=$2\n-\tcreate_gitattributes \"$txtbin\" &&\n+\tattr=$2\n+\tcreate_gitattributes \"$attr\" &&\n \tfor f in LF CRLF LF_mix_CR CRLF_mix_LF CRLF_nul\n \tdo\n-\t\tpfx=crlf_${crlf}_attr_${txtbin}_$f.txt &&\n+\t\tpfx=crlf_${crlf}_attr_${attr}_$f.txt &&\n \t\tcp $f $pfx && git -c core.autocrlf=$crlf add $pfx\n \tdone &&\n \tgit commit -m \"core.autocrlf $crlf\"\n }\n \n-check_files_in_repo()\n-{\n+check_files_in_repo () {\n \tcrlf=$1\n-\ttxtbin=$2\n+\tattr=$2\n \tlfname=$3\n \tcrlfname=$4\n \tlfmixcrlf=$5\n \tlfmixcr=$6\n \tcrlfnul=$7\n-\tpfx=crlf_${crlf}_attr_${txtbin}_ &&\n+\tpfx=crlf_${crlf}_attr_${attr}_ &&\n \tcompare_files $lfname ${pfx}LF.txt &&\n \tcompare_files $crlfname ${pfx}CRLF.txt &&\n \tcompare_files $lfmixcrlf ${pfx}CRLF_mix_LF.txt &&\n@@ -80,19 +84,18 @@ check_files_in_repo()\n }\n \n \n-check_files_in_ws()\n-{\n+check_files_in_ws () {\n \teol=$1\n \tcrlf=$2\n-\ttxtbin=$3\n+\tattr=$3\n \tlfname=$4\n \tcrlfname=$5\n \tlfmixcrlf=$6\n \tlfmixcr=$7\n \tcrlfnul=$8\n-\tcreate_gitattributes $txtbin &&\n+\tcreate_gitattributes $attr &&\n \tgit config core.autocrlf $crlf &&\n-\tpfx=eol_${eol}_crlf_${crlf}_attr_${txtbin}_ &&\n+\tpfx=eol_${eol}_crlf_${crlf}_attr_${attr}_ &&\n \tsrc=crlf_false_attr__ &&\n \tfor f in LF CRLF LF_mix_CR CRLF_mix_LF CRLF_nul\n \tdo\n@@ -104,42 +107,24 @@ check_files_in_ws()\n \t\tfi\n \tdone\n \n-\n-\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$txtbin file=LF\" \"\n+\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=LF\" \"\n \t\tcompare_ws_file $pfx $lfname    ${src}LF.txt\n \t\"\n-\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$txtbin file=CRLF\" \"\n+\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=CRLF\" \"\n \t\tcompare_ws_file $pfx $crlfname  ${src}CRLF.txt\n \t\"\n-\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$txtbin file=CRLF_mix_LF\" \"\n+\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=CRLF_mix_LF\" \"\n \t\tcompare_ws_file $pfx $lfmixcrlf ${src}CRLF_mix_LF.txt\n \t\"\n-\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$txtbin file=LF_mix_CR\" \"\n+\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=LF_mix_CR\" \"\n \t\tcompare_ws_file $pfx $lfmixcr   ${src}LF_mix_CR.txt\n \t\"\n-\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$txtbin file=CRLF_nul\" \"\n+\ttest_expect_success \"checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=CRLF_nul\" \"\n \t\tcompare_ws_file $pfx $crlfnul   ${src}CRLF_nul.txt\n \t\"\n }\n \n #######\n-(\n-\ttype od >/dev/null &&\n-\tprintf \"line1Q\\r\\nline2\\r\\nline3\" | q_to_nul >CRLF_nul &&\n-\tcat >expect <<-EOF &&\n-\t0000000 l i n e 1 \\0 \\r \\n l i n e 2 \\r \\n l\n-\t0000020 i n e 3\n-\t0000024\n-EOF\n-\tod -c CRLF_nul | sed -e \"s/[ \t][\t ]*/ /g\" -e \"s/ *$//\" >actual\n-\ttest_cmp expect actual &&\n-\trm expect actual\n-) || {\n-\t\tskip_all=\"od not found or od -c not usable\"\n-\t\texit 0\n-\t\ttest_done\n-}\n-\n test_expect_success 'setup master' '\n \techo >.gitattributes &&\n \tgit checkout -b master &&\n@@ -150,9 +135,10 @@ test_expect_success 'setup master' '\n \tprintf \"line1\\r\\nline2\\nline3\"   >CRLF_mix_LF &&\n \tprintf \"line1\\nline2\\rline3\"     >LF_mix_CR &&\n \tprintf \"line1\\r\\nline2\\rline3\"   >CRLF_mix_CR &&\n+\tprintf \"line1Q\\r\\nline2\\r\\nline3\" | q_to_nul >CRLF_nul &&\n \tprintf \"line1Q\\nline2\\nline3\" | q_to_nul >LF_nul\n '\n-#  CRLF_nul had been created above\n+\n \n test_expect_success 'create files' '\n \tcreate_file_in_repo false \"\" &&\n@@ -201,7 +187,8 @@ test_expect_success 'commit -text' '\n ################################################################################\n # Check how files in the repo are changed when they are checked out\n # How to read the table below:\n-# - check_files_in_ws will check multiple files, see below\n+# - check_files_in_ws will check multiple files with a combination of settings\n+#   and attributes (core.autocrlf=input is forbidden with core.eol=crlf)\n # - parameter $1 : core.eol               lf | crlf\n # - parameter $2 : core.autocrlf          false | true | input\n # - parameter $3 : text in .gitattributs  \"\" (empty) | auto | text | -text\n@@ -211,55 +198,88 @@ test_expect_success 'commit -text' '\n # - parameter $7 : reference for a file with LF and CR in the repo (does somebody uses this ?)\n # - parameter $8 : reference for a file with CRLF and a NUL (should be handled as binary when auto)\n \n-check_files_in_ws lf      false  \"\"       LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws lf      true   \"\"       CRLF  CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws lf      input  \"\"       LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-\n-check_files_in_ws lf      false \"auto\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws lf      true  \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n-check_files_in_ws lf      input \"auto\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-\n-check_files_in_ws lf      false \"text\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws lf      true  \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n-check_files_in_ws lf      input \"text\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-\n-check_files_in_ws lf      false \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws lf      true  \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws lf      input \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-\n-###########\n-#core.autocrlf=input is forbidden with core.eol=crlf\n-check_files_in_ws crlf    false \"\"        LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws crlf    true  \"\"        CRLF  CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-\n-check_files_in_ws crlf    false \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n-check_files_in_ws crlf    true  \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n-\n-check_files_in_ws crlf    false \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n-check_files_in_ws crlf    true  \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n-\n-check_files_in_ws crlf    false \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws crlf    true  \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-\n+#                                            What we have in the repo:\n+#                \t\t\t\t\t\t\t\t\t\t\t\t\t\t ----------------- EOL in repo ----------------\n+#                \t\t\t\t\t\t\t\t\t\t\t\t\t\t LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+#                   settings with checkout:\n+#                   core.   core.   .gitattr\n+#                    eol     acrlf\n+#                                            ----------------------------------------------\n+#                                            What we want to have in the working tree:\n if test_have_prereq MINGW\n then\n-check_files_in_ws \"\"      false \"\"        LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws \"\"      true  \"\"        CRLF  CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws \"\"      false \"auto\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws \"\"      true  \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n-check_files_in_ws \"\"      false \"text\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws \"\"      true  \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n-check_files_in_ws \"\"      false \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws \"\"      true  \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-\n-check_files_in_ws native  false \"\"        LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws native  true  \"\"        CRLF  CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws native  false \"auto\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws native  true  \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n-check_files_in_ws native  false \"text\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws native  true  \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n-check_files_in_ws native  false \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n-check_files_in_ws native  true  \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+MIX_CRLF_LF=CRLF\n+MIX_LF_CR=CRLF_mix_CR\n+NL=CRLF\n+else\n+MIX_CRLF_LF=CRLF_mix_LF\n+MIX_LF_CR=LF_mix_CR\n+NL=LF\n fi\n+export CRLF_MIX_LF_CR MIX NL\n+\n+check_files_in_ws    lf      false  \"\"       LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      true   \"\"       CRLF  CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      input  \"\"       LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      false \"auto\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      true  \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      input \"auto\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      false \"text\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      true  \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    lf      input \"text\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      false \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      true  \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      input \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      false \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      true  \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      input \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    lf      false \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    lf      true  \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    lf      input \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+\n+check_files_in_ws    crlf    false  \"\"       LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    crlf    true   \"\"       CRLF  CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    crlf    false \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n+check_files_in_ws    crlf    true  \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n+check_files_in_ws    crlf    false \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    crlf    true  \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    crlf    false \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    crlf    true  \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    crlf    false \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    crlf    true  \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    crlf    false \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    crlf    true  \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+\n+check_files_in_ws    \"\"      false  \"\"       LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      true   \"\"       CRLF  CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      input  \"\"       LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      false \"auto\"    $NL   CRLF  $MIX_CRLF_LF LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      true  \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      input \"auto\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      false \"text\"    $NL   CRLF  $MIX_CRLF_LF $MIX_LF_CR   CRLF_nul\n+check_files_in_ws    \"\"      true  \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    \"\"      input \"text\"    LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      false \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      true  \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      input \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      false \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      true  \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      input \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    \"\"      false \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    \"\"      true  \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    \"\"      input \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+\n+check_files_in_ws    native  false  \"\"       LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    native  true   \"\"       CRLF  CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    native  false \"auto\"    $NL   CRLF  $MIX_CRLF_LF LF_mix_CR    CRLF_nul\n+check_files_in_ws    native  true  \"auto\"    CRLF  CRLF  CRLF         LF_mix_CR    CRLF_nul\n+check_files_in_ws    native  false \"text\"    $NL   CRLF  $MIX_CRLF_LF $MIX_LF_CR   CRLF_nul\n+check_files_in_ws    native  true  \"text\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    native  false \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    native  true  \"-text\"   LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    native  false \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    native  true  \"lf\"      LF    CRLF  CRLF_mix_LF  LF_mix_CR    CRLF_nul\n+check_files_in_ws    native  false \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n+check_files_in_ws    native  true  \"crlf\"    CRLF  CRLF  CRLF         CRLF_mix_CR  CRLF_nul\n \n test_done\n-- \n2.1.0.rc2.210.g636bceb\n"},{"id":"248514","messageId":"xmqqha0wa09z.fsf@gitster.dls.corp.google.com","threadId":"37360","inReplyTo":"53EFBC3A.5020805@web.de","subject":"Re: [PATCH 1/2] t0027: Tests for core.eol=native, eol=lf, eol=crlf","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-08-28T19:20:56Z","receivedAt":"2014-08-28T19:20:56Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Torsten Bögershausen <tboegi@web.de> writes:\n\n> Add test cases for core.eol \"native\" and \"\" (unset).\n> (MINGW uses CRLF, all other systems LF as native line endings)\n>\n> Add test cases for the attributes \"eol=lf\" and \"eol=crlf\"\n>\n> Other minor changes:\n> - Use the more portable 'tr' instead of 'od -c' to convert '\\n' into 'Q'\n>   and '\\0' into 'N'\n> - Style fixes for shell functions according to the coding guide lines\n> - Replace \"txtbin\" with \"attr\"\n>\n> Signed-off-by: Torsten Bögershausen <tboegi@web.de>\n> ---\n\nIt appears that I missed this patch?  You seem to have rerolled the\ncorresponding 2/2, to which I responded ($gmane/255507).  Is this\none still viable/necessary?\n\nIf you are doing the whole-sale style fixes for this script, can you\nalso fix the case/esac statement in create_gitattributes?  The case\narm labels are indented one level too deep, making it harder to spot\nthem than necessary.\n\nTest files \"setup master\" step creates appear to end in an\nincomplete line.  Is this intended or by mistake?  Making sure\nthings work even on files that end in an incomplete line is a good\nthing, but it looks somewhat strange not to test normal cases (in\nother words, it makes it appear as if normal cases work OK but\nincomplete lines cause corner case bugs and these tests are meant to\ncheck them, or something).\n\nThanks.\n"},{"id":"248640","messageId":"540192CF.7070407@web.de","threadId":"37360","inReplyTo":"xmqqha0wa09z.fsf@gitster.dls.corp.google.com","subject":"Re: [PATCH 1/2] t0027: Tests for core.eol=native, eol=lf, eol=crlf","fromName":"Torsten Bögershausen","fromEmail":"tboegi@web.de","sentAt":"2014-08-30T09:01:03Z","receivedAt":"2014-08-30T09:01:03Z","isPatch":true,"sender":{"key":"tboegi@web.de","avatar":"https://avatars.githubusercontent.com/u/7138363?v=4"},"body":"\nOn 2014-08-28 21.20, Junio C Hamano wrote:\n> It appears that I missed this patch?  You seem to have rerolled the\n> corresponding 2/2, to which I responded ($gmane/255507).  Is this\n> one still viable/necessary?\nIt seems that both the t0027 and the native_crlf fixes (from MINGW)\ndeserve a re-roll from my side, so you didn't miss anything.\nThanks for the comments below\n>\n> If you are doing the whole-sale style fixes for this script, can you\n> also fix the case/esac statement in create_gitattributes?  The case\n> arm labels are indented one level too deep, making it harder to spot\n> them than necessary.\n>\n> Test files \"setup master\" step creates appear to end in an\n> incomplete line.  Is this intended or by mistake?  Making sure\n> things work even on files that end in an incomplete line is a good\n> thing, but it looks somewhat strange not to test normal cases (in\n> other words, it makes it appear as if normal cases work OK but\n> incomplete lines cause corner case bugs and these tests are meant to\n> check them, or something).\n>\n> Thanks.\n"}]}