Mercurial > hg-stable
changeset 12419:f6a91fcd189a
tests: unify test-eol
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 26 Sep 2010 13:41:32 -0500 |
parents | 09c6dd129f82 |
children | e9db6bc37659 |
files | tests/test-eol tests/test-eol.out tests/test-eol.t |
diffstat | 3 files changed, 385 insertions(+), 408 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-eol Sun Sep 26 13:41:32 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,180 +0,0 @@ -#!/bin/sh - -cat > $HGRCPATH <<EOF -[diff] -git = True -EOF - -cat > switch-eol.py <<EOF -import sys - -try: - import os, msvcrt - msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) - msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) -except ImportError: - pass - -(old, new) = sys.argv[1] == 'LF' and ('\n', '\r\n') or ('\r\n', '\n') -print "%% switching encoding from %r to %r" % (old, new) -for path in sys.argv[2:]: - data = file(path, 'rb').read() - data = data.replace(old, new) - file(path, 'wb').write(data) -EOF - -seteol () { - if [ $1 = "LF" ]; then - EOL='\n' - else - EOL='\r\n' - fi -} - -makerepo () { - seteol $1 - echo "% setup $1 repository" - hg init repo - cd repo - - cat > .hgeol <<EOF -[repository] -native = $1 - -[patterns] -mixed.txt = BIN -**.txt = native -EOF - - printf "first${EOL}second${EOL}third${EOL}" > a.txt - hg commit --addremove -m 'checkin' - echo - cd .. -} - -dotest () { - seteol $1 - echo "% hg clone repo repo-$1" - hg clone --noupdate repo repo-$1 - cd repo-$1 - - cat > .hg/hgrc <<EOF -[extensions] -eol = - -[eol] -native = $1 -EOF - - hg update - echo '% printrepr.py a.txt' - python $TESTDIR/printrepr.py < a.txt - echo '% hg cat a.txt' - hg cat a.txt | python $TESTDIR/printrepr.py - - printf "fourth${EOL}" >> a.txt - echo '% printrepr.py a.txt' - python $TESTDIR/printrepr.py < a.txt - hg diff | python $TESTDIR/printrepr.py - - python ../switch-eol.py $1 a.txt - echo '% hg diff only reports a single changed line:' - hg diff | python $TESTDIR/printrepr.py - - echo "% reverting back to $1 format" - hg revert a.txt - python $TESTDIR/printrepr.py < a.txt - - printf "first\r\nsecond\n" > mixed.txt - hg add mixed.txt - echo "% hg commit of inconsistent .txt file marked as binary (should work)" - hg commit -m 'binary file' - - echo "% hg commit of inconsistent .txt file marked as native (should fail)" - printf "first\nsecond\r\nthird\nfourth\r\n" > a.txt - hg commit -m 'inconsistent file' - - echo "% hg commit --config eol.only-consistent=False (should work)" - hg commit --config eol.only-consistent=False -m 'inconsistent file' - - echo "% hg commit of binary .txt file marked as native (binary files always okay)" - printf "first${EOL}\0${EOL}third${EOL}" > a.txt - hg commit -m 'binary file' - - cd .. - rm -r repo-$1 -} - -makerepo LF -dotest LF -dotest CRLF -rm -r repo - -makerepo CRLF -dotest LF -dotest CRLF -rm -r repo - - -makemixedrepo () { - echo - echo "# setup $1 repository" - hg init mixed - cd mixed - printf "foo\r\nbar\r\nbaz\r\n" > win.txt - printf "foo\nbar\nbaz\n" > unix.txt - #printf "foo\r\nbar\nbaz\r\n" > mixed.txt - - hg commit --addremove -m 'created mixed files' - - echo "# setting repository-native EOLs to $1" - cat > .hgeol <<EOF -[repository] -native = $1 - -[patterns] -**.txt = native -EOF - hg commit --addremove -m 'added .hgeol' - cd .. -} - -testmixed () { - echo - echo "% hg clone mixed mixed-$1" - hg clone mixed mixed-$1 - cd mixed-$1 - - echo '% hg status (eol extension not yet activated)' - hg status - - cat > .hg/hgrc <<EOF -[extensions] -eol = - -[eol] -native = $1 -EOF - - echo '% hg status (eol activated)' - hg status - echo '% hg commit' - hg commit -m 'synchronized EOLs' - - echo '% hg status' - hg status - - cd .. - rm -r mixed-$1 -} - -makemixedrepo LF -testmixed LF -testmixed CRLF -rm -r mixed - -makemixedrepo CRLF -testmixed LF -testmixed CRLF -rm -r mixed -
--- a/tests/test-eol.out Sun Sep 26 13:41:32 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -% setup LF repository -adding .hgeol -adding a.txt - -% hg clone repo repo-LF -2 files updated, 0 files merged, 0 files removed, 0 files unresolved -% printrepr.py a.txt -first -second -third -% hg cat a.txt -first -second -third -% printrepr.py a.txt -first -second -third -fourth -diff --git a/a.txt b/a.txt ---- a/a.txt -+++ b/a.txt -@@ -1,3 +1,4 @@ - first - second - third -+fourth -% switching encoding from '\n' to '\r\n' -% hg diff only reports a single changed line: -diff --git a/a.txt b/a.txt ---- a/a.txt -+++ b/a.txt -@@ -1,3 +1,4 @@ - first - second - third -+fourth -% reverting back to LF format -first -second -third -% hg commit of inconsistent .txt file marked as binary (should work) -% hg commit of inconsistent .txt file marked as native (should fail) -abort: inconsistent newline style in a.txt - -% hg commit --config eol.only-consistent=False (should work) -% hg commit of binary .txt file marked as native (binary files always okay) -% hg clone repo repo-CRLF -2 files updated, 0 files merged, 0 files removed, 0 files unresolved -% printrepr.py a.txt -first\r -second\r -third\r -% hg cat a.txt -first -second -third -% printrepr.py a.txt -first\r -second\r -third\r -fourth\r -diff --git a/a.txt b/a.txt ---- a/a.txt -+++ b/a.txt -@@ -1,3 +1,4 @@ - first - second - third -+fourth -% switching encoding from '\r\n' to '\n' -% hg diff only reports a single changed line: -diff --git a/a.txt b/a.txt ---- a/a.txt -+++ b/a.txt -@@ -1,3 +1,4 @@ - first - second - third -+fourth -% reverting back to CRLF format -first\r -second\r -third\r -% hg commit of inconsistent .txt file marked as binary (should work) -% hg commit of inconsistent .txt file marked as native (should fail) -abort: inconsistent newline style in a.txt - -% hg commit --config eol.only-consistent=False (should work) -% hg commit of binary .txt file marked as native (binary files always okay) -% setup CRLF repository -adding .hgeol -adding a.txt - -% hg clone repo repo-LF -2 files updated, 0 files merged, 0 files removed, 0 files unresolved -% printrepr.py a.txt -first -second -third -% hg cat a.txt -first\r -second\r -third\r -% printrepr.py a.txt -first -second -third -fourth -diff --git a/a.txt b/a.txt ---- a/a.txt -+++ b/a.txt -@@ -1,3 +1,4 @@ - first\r - second\r - third\r -+fourth\r -% switching encoding from '\n' to '\r\n' -% hg diff only reports a single changed line: -diff --git a/a.txt b/a.txt ---- a/a.txt -+++ b/a.txt -@@ -1,3 +1,4 @@ - first\r - second\r - third\r -+fourth\r -% reverting back to LF format -first -second -third -% hg commit of inconsistent .txt file marked as binary (should work) -% hg commit of inconsistent .txt file marked as native (should fail) -abort: inconsistent newline style in a.txt - -% hg commit --config eol.only-consistent=False (should work) -% hg commit of binary .txt file marked as native (binary files always okay) -% hg clone repo repo-CRLF -2 files updated, 0 files merged, 0 files removed, 0 files unresolved -% printrepr.py a.txt -first\r -second\r -third\r -% hg cat a.txt -first\r -second\r -third\r -% printrepr.py a.txt -first\r -second\r -third\r -fourth\r -diff --git a/a.txt b/a.txt ---- a/a.txt -+++ b/a.txt -@@ -1,3 +1,4 @@ - first\r - second\r - third\r -+fourth\r -% switching encoding from '\r\n' to '\n' -% hg diff only reports a single changed line: -diff --git a/a.txt b/a.txt ---- a/a.txt -+++ b/a.txt -@@ -1,3 +1,4 @@ - first\r - second\r - third\r -+fourth\r -% reverting back to CRLF format -first\r -second\r -third\r -% hg commit of inconsistent .txt file marked as binary (should work) -% hg commit of inconsistent .txt file marked as native (should fail) -abort: inconsistent newline style in a.txt - -% hg commit --config eol.only-consistent=False (should work) -% hg commit of binary .txt file marked as native (binary files always okay) - -# setup LF repository -adding unix.txt -adding win.txt -# setting repository-native EOLs to LF -adding .hgeol - -% hg clone mixed mixed-LF -updating to branch default -3 files updated, 0 files merged, 0 files removed, 0 files unresolved -% hg status (eol extension not yet activated) -% hg status (eol activated) -M win.txt -% hg commit -% hg status - -% hg clone mixed mixed-CRLF -updating to branch default -3 files updated, 0 files merged, 0 files removed, 0 files unresolved -% hg status (eol extension not yet activated) -% hg status (eol activated) -M win.txt -% hg commit -% hg status - -# setup CRLF repository -adding unix.txt -adding win.txt -# setting repository-native EOLs to CRLF -adding .hgeol - -% hg clone mixed mixed-LF -updating to branch default -3 files updated, 0 files merged, 0 files removed, 0 files unresolved -% hg status (eol extension not yet activated) -% hg status (eol activated) -M unix.txt -% hg commit -% hg status - -% hg clone mixed mixed-CRLF -updating to branch default -3 files updated, 0 files merged, 0 files removed, 0 files unresolved -% hg status (eol extension not yet activated) -% hg status (eol activated) -M unix.txt -% hg commit -% hg status
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-eol.t Sun Sep 26 13:41:32 2010 -0500 @@ -0,0 +1,385 @@ +Test EOL extension + + $ cat > $HGRCPATH <<EOF + > [diff] + > git = True + > EOF + +Set up helpers + + $ cat > switch-eol.py <<EOF + > import sys + > try: + > import os, msvcrt + > msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) + > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) + > except ImportError: + > pass + > (old, new) = sys.argv[1] == 'LF' and ('\n', '\r\n') or ('\r\n', '\n') + > print "%% switching encoding from %r to %r" % (old, new) + > for path in sys.argv[2:]: + > data = file(path, 'rb').read() + > data = data.replace(old, new) + > file(path, 'wb').write(data) + > EOF + + $ seteol () { + > if [ $1 = "LF" ]; then + > EOL='\n' + > else + > EOL='\r\n' + > fi + > } + + $ makerepo () { + > seteol $1 + > echo "% setup $1 repository" + > hg init repo + > cd repo + > cat > .hgeol <<EOF + > [repository] + > native = $1 + > [patterns] + > mixed.txt = BIN + > **.txt = native + > EOF + > printf "first${EOL}second${EOL}third${EOL}" > a.txt + > hg commit --addremove -m 'checkin' + > echo + > cd .. + > } + + $ dotest () { + > seteol $1 + > echo "% hg clone repo repo-$1" + > hg clone --noupdate repo repo-$1 + > cd repo-$1 + > cat > .hg/hgrc <<EOF + > [extensions] + > eol = + > [eol] + > native = $1 + > EOF + > hg update + > echo '% printrepr.py a.txt' + > python $TESTDIR/printrepr.py < a.txt + > echo '% hg cat a.txt' + > hg cat a.txt | python $TESTDIR/printrepr.py + > printf "fourth${EOL}" >> a.txt + > echo '% printrepr.py a.txt' + > python $TESTDIR/printrepr.py < a.txt + > hg diff | python $TESTDIR/printrepr.py + > python ../switch-eol.py $1 a.txt + > echo '% hg diff only reports a single changed line:' + > hg diff | python $TESTDIR/printrepr.py + > echo "% reverting back to $1 format" + > hg revert a.txt + > python $TESTDIR/printrepr.py < a.txt + > printf "first\r\nsecond\n" > mixed.txt + > hg add mixed.txt + > echo "% hg commit of inconsistent .txt file marked as binary (should work)" + > hg commit -m 'binary file' + > echo "% hg commit of inconsistent .txt file marked as native (should fail)" + > printf "first\nsecond\r\nthird\nfourth\r\n" > a.txt + > hg commit -m 'inconsistent file' + > echo "% hg commit --config eol.only-consistent=False (should work)" + > hg commit --config eol.only-consistent=False -m 'inconsistent file' + > echo "% hg commit of binary .txt file marked as native (binary files always okay)" + > printf "first${EOL}\0${EOL}third${EOL}" > a.txt + > hg commit -m 'binary file' + > cd .. + > rm -r repo-$1 + > } + + $ makemixedrepo () { + > echo + > echo "# setup $1 repository" + > hg init mixed + > cd mixed + > printf "foo\r\nbar\r\nbaz\r\n" > win.txt + > printf "foo\nbar\nbaz\n" > unix.txt + > #printf "foo\r\nbar\nbaz\r\n" > mixed.txt + > hg commit --addremove -m 'created mixed files' + > echo "# setting repository-native EOLs to $1" + > cat > .hgeol <<EOF + > [repository] + > native = $1 + > [patterns] + > **.txt = native + > EOF + > hg commit --addremove -m 'added .hgeol' + > cd .. + > } + + $ testmixed () { + > echo + > echo "% hg clone mixed mixed-$1" + > hg clone mixed mixed-$1 + > cd mixed-$1 + > echo '% hg status (eol extension not yet activated)' + > hg status + > cat > .hg/hgrc <<EOF + > [extensions] + > eol = + > [eol] + > native = $1 + > EOF + > echo '% hg status (eol activated)' + > hg status + > echo '% hg commit' + > hg commit -m 'synchronized EOLs' + > echo '% hg status' + > hg status + > cd .. + > rm -r mixed-$1 + > } + +Basic tests + + $ makerepo LF + % setup LF repository + adding .hgeol + adding a.txt + + $ dotest LF + % hg clone repo repo-LF + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + % printrepr.py a.txt + first + second + third + % hg cat a.txt + first + second + third + % printrepr.py a.txt + first + second + third + fourth + diff --git a/a.txt b/a.txt + --- a/a.txt + +++ b/a.txt + @@ -1,3 +1,4 @@ + first + second + third + +fourth + % switching encoding from '\n' to '\r\n' + % hg diff only reports a single changed line: + diff --git a/a.txt b/a.txt + --- a/a.txt + +++ b/a.txt + @@ -1,3 +1,4 @@ + first + second + third + +fourth + % reverting back to LF format + first + second + third + % hg commit of inconsistent .txt file marked as binary (should work) + % hg commit of inconsistent .txt file marked as native (should fail) + abort: inconsistent newline style in a.txt + + % hg commit --config eol.only-consistent=False (should work) + % hg commit of binary .txt file marked as native (binary files always okay) + $ dotest CRLF + % hg clone repo repo-CRLF + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + % printrepr.py a.txt + first\r + second\r + third\r + % hg cat a.txt + first + second + third + % printrepr.py a.txt + first\r + second\r + third\r + fourth\r + diff --git a/a.txt b/a.txt + --- a/a.txt + +++ b/a.txt + @@ -1,3 +1,4 @@ + first + second + third + +fourth + % switching encoding from '\r\n' to '\n' + % hg diff only reports a single changed line: + diff --git a/a.txt b/a.txt + --- a/a.txt + +++ b/a.txt + @@ -1,3 +1,4 @@ + first + second + third + +fourth + % reverting back to CRLF format + first\r + second\r + third\r + % hg commit of inconsistent .txt file marked as binary (should work) + % hg commit of inconsistent .txt file marked as native (should fail) + abort: inconsistent newline style in a.txt + + % hg commit --config eol.only-consistent=False (should work) + % hg commit of binary .txt file marked as native (binary files always okay) + $ rm -r repo + $ makerepo CRLF + % setup CRLF repository + adding .hgeol + adding a.txt + + $ dotest LF + % hg clone repo repo-LF + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + % printrepr.py a.txt + first + second + third + % hg cat a.txt + first\r + second\r + third\r + % printrepr.py a.txt + first + second + third + fourth + diff --git a/a.txt b/a.txt + --- a/a.txt + +++ b/a.txt + @@ -1,3 +1,4 @@ + first\r + second\r + third\r + +fourth\r + % switching encoding from '\n' to '\r\n' + % hg diff only reports a single changed line: + diff --git a/a.txt b/a.txt + --- a/a.txt + +++ b/a.txt + @@ -1,3 +1,4 @@ + first\r + second\r + third\r + +fourth\r + % reverting back to LF format + first + second + third + % hg commit of inconsistent .txt file marked as binary (should work) + % hg commit of inconsistent .txt file marked as native (should fail) + abort: inconsistent newline style in a.txt + + % hg commit --config eol.only-consistent=False (should work) + % hg commit of binary .txt file marked as native (binary files always okay) + $ dotest CRLF + % hg clone repo repo-CRLF + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + % printrepr.py a.txt + first\r + second\r + third\r + % hg cat a.txt + first\r + second\r + third\r + % printrepr.py a.txt + first\r + second\r + third\r + fourth\r + diff --git a/a.txt b/a.txt + --- a/a.txt + +++ b/a.txt + @@ -1,3 +1,4 @@ + first\r + second\r + third\r + +fourth\r + % switching encoding from '\r\n' to '\n' + % hg diff only reports a single changed line: + diff --git a/a.txt b/a.txt + --- a/a.txt + +++ b/a.txt + @@ -1,3 +1,4 @@ + first\r + second\r + third\r + +fourth\r + % reverting back to CRLF format + first\r + second\r + third\r + % hg commit of inconsistent .txt file marked as binary (should work) + % hg commit of inconsistent .txt file marked as native (should fail) + abort: inconsistent newline style in a.txt + + % hg commit --config eol.only-consistent=False (should work) + % hg commit of binary .txt file marked as native (binary files always okay) + $ rm -r repo + +Mixed tests + + $ makemixedrepo LF + + # setup LF repository + adding unix.txt + adding win.txt + # setting repository-native EOLs to LF + adding .hgeol + $ testmixed LF + + % hg clone mixed mixed-LF + updating to branch default + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved + % hg status (eol extension not yet activated) + % hg status (eol activated) + M win.txt + % hg commit + % hg status + $ testmixed CRLF + + % hg clone mixed mixed-CRLF + updating to branch default + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved + % hg status (eol extension not yet activated) + % hg status (eol activated) + M win.txt + % hg commit + % hg status + $ rm -r mixed + $ makemixedrepo CRLF + + # setup CRLF repository + adding unix.txt + adding win.txt + # setting repository-native EOLs to CRLF + adding .hgeol + $ testmixed LF + + % hg clone mixed mixed-LF + updating to branch default + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved + % hg status (eol extension not yet activated) + % hg status (eol activated) + M unix.txt + % hg commit + % hg status + $ testmixed CRLF + + % hg clone mixed mixed-CRLF + updating to branch default + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved + % hg status (eol extension not yet activated) + % hg status (eol activated) + M unix.txt + % hg commit + % hg status + $ rm -r mixed