Mercurial > hg
view tests/test-eol @ 12010:ce818cf215dc
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sat, 21 Aug 2010 10:48:49 -0500 |
parents | 0bb67503ad4b |
children |
line wrap: on
line source
#!/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