tests: unify test-eol
authorMatt Mackall <mpm@selenic.com>
Sun, 26 Sep 2010 13:41:32 -0500
changeset 12419 f6a91fcd189a
parent 12418 09c6dd129f82
child 12420 e9db6bc37659
tests: unify test-eol
tests/test-eol
tests/test-eol.out
tests/test-eol.t
--- 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