--- 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