# HG changeset patch # User Matt Mackall # Date 1285526689 18000 # Node ID f18fd371ecbd523dd1c292871815285348e54add # Parent dc6b9b3bf63e8a21b9b28617e18de247c7a4d8ac tests: unify test-win32text diff -r dc6b9b3bf63e -r f18fd371ecbd tests/test-win32text --- a/tests/test-win32text Sun Sep 26 13:44:49 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,144 +0,0 @@ -#!/bin/sh - -hg init t -cd t - -cat > unix2dos.py < print.py <').replace('\r', '').replace('\0', '')) -EOF - -echo '[hooks]' >> .hg/hgrc -echo 'pretxncommit.crlf = python:hgext.win32text.forbidcrlf' >> .hg/hgrc -echo 'pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf' >> .hg/hgrc -cat .hg/hgrc -echo - -echo hello > f -hg add f -echo commit should succeed -hg ci -m 1 -echo - -hg clone . ../zoz -cp .hg/hgrc ../zoz/.hg - -python unix2dos.py f -echo commit should fail -hg ci -m 2.1 -echo - -mv .hg/hgrc .hg/hgrc.bak -echo commits should succeed -hg ci -m 2 -hg cp f g -hg ci -m 2.2 -echo - -echo push should fail -hg push ../zoz -echo - -mv .hg/hgrc.bak .hg/hgrc -echo hello > f -hg rm g -echo commit should succeed -hg ci -m 2.3 -echo - -echo push should succeed -hg push ../zoz -echo - -echo and now for something completely different -mkdir d -echo hello > d/f2 -python unix2dos.py d/f2 -hg add d/f2 -hg ci -m 3 -hg revert -a -rm d/f2 -echo - -hg rem f -hg ci -m 4 -echo - -python -c 'file("bin", "wb").write("hello\x00\x0D\x0A")' -hg add bin -hg ci -m 5 -hg log -v -echo - -hg clone . dupe -echo -for x in a b c d; do echo content > dupe/$x; done -hg -R dupe add -python unix2dos.py dupe/b dupe/c dupe/d -hg -R dupe ci -m a dupe/a -hg -R dupe ci -m b/c dupe/[bc] -hg -R dupe ci -m d dupe/d -hg -R dupe log -v -echo - -hg pull dupe -echo - -hg log -v -echo - -rm .hg/hgrc -(echo some; echo text) > f3 -python -c 'file("f4.bat", "wb").write("rem empty\x0D\x0A")' -hg add f3 f4.bat -hg ci -m 6 - -python print.py < bin -python print.py < f3 -python print.py < f4.bat -echo - -echo '[extensions]' >> .hg/hgrc -echo 'win32text = ' >> .hg/hgrc -echo '[decode]' >> .hg/hgrc -echo '** = cleverdecode:' >> .hg/hgrc -echo '[encode]' >> .hg/hgrc -echo '** = cleverencode:' >> .hg/hgrc -cat .hg/hgrc -echo - -rm f3 f4.bat bin -hg co -C 2>&1 | python -c 'import sys, os; sys.stdout.write(sys.stdin.read().replace(os.getcwd(), "...."))' -python print.py < bin -python print.py < f3 -python print.py < f4.bat -echo - -python -c 'file("f5.sh", "wb").write("# empty\x0D\x0A")' -hg add f5.sh -hg ci -m 7 -python print.py < f5.sh -hg cat f5.sh | python print.py - -echo '% just linefeed' > linefeed -hg ci -qAm 8 linefeed -python print.py < linefeed -hg cat linefeed | python print.py -hg st -q -hg revert -a linefeed -python print.py < linefeed -hg st -q -echo modified >> linefeed -hg st -q -hg revert -a -hg st -q -python print.py < linefeed diff -r dc6b9b3bf63e -r f18fd371ecbd tests/test-win32text.out --- a/tests/test-win32text.out Sun Sep 26 13:44:49 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,304 +0,0 @@ -[hooks] -pretxncommit.crlf = python:hgext.win32text.forbidcrlf -pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf - -commit should succeed - -updating to branch default -1 files updated, 0 files merged, 0 files removed, 0 files unresolved -commit should fail -Attempt to commit or push text file(s) using CRLF line endings -in f583ea08d42a: f -transaction abort! -rollback completed -abort: pretxncommit.crlf hook failed - -commits should succeed - -push should fail -pushing to ../zoz -searching for changes -adding changesets -adding manifests -adding file changes -added 2 changesets with 2 changes to 2 files -Attempt to commit or push text file(s) using CRLF line endings -in bc2d09796734: g -in b1aa5cde7ff4: f - -To prevent this mistake in your local repository, -add to Mercurial.ini or .hg/hgrc: - -[hooks] -pretxncommit.crlf = python:hgext.win32text.forbidcrlf - -and also consider adding: - -[extensions] -win32text = -[encode] -** = cleverencode: -[decode] -** = cleverdecode: -transaction abort! -rollback completed -abort: pretxnchangegroup.crlf hook failed - -commit should succeed - -push should succeed -pushing to ../zoz -searching for changes -adding changesets -adding manifests -adding file changes -added 3 changesets with 3 changes to 2 files - -and now for something completely different -Attempt to commit or push text file(s) using CRLF line endings -in 053ba1a3035a: d/f2 -transaction abort! -rollback completed -abort: pretxncommit.crlf hook failed -forgetting d/f2 - - -changeset: 5:f0b1c8d75fce -tag: tip -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: bin -description: -5 - - -changeset: 4:77796dbcd4ad -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f -description: -4 - - -changeset: 3:7c1b5430b350 -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f g -description: -2.3 - - -changeset: 2:bc2d09796734 -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: g -description: -2.2 - - -changeset: 1:b1aa5cde7ff4 -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f -description: -2 - - -changeset: 0:fcf06d5c4e1d -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f -description: -1 - - - -updating to branch default -1 files updated, 0 files merged, 0 files removed, 0 files unresolved - -adding dupe/a -adding dupe/b -adding dupe/c -adding dupe/d -changeset: 8:67ac5962ab43 -tag: tip -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: d -description: -d - - -changeset: 7:68c127d1834e -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: b c -description: -b/c - - -changeset: 6:adbf8bf7f31d -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: a -description: -a - - -changeset: 5:f0b1c8d75fce -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: bin -description: -5 - - -changeset: 4:77796dbcd4ad -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f -description: -4 - - -changeset: 3:7c1b5430b350 -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f g -description: -2.3 - - -changeset: 2:bc2d09796734 -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: g -description: -2.2 - - -changeset: 1:b1aa5cde7ff4 -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f -description: -2 - - -changeset: 0:fcf06d5c4e1d -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f -description: -1 - - - -pulling from dupe -searching for changes -adding changesets -adding manifests -adding file changes -added 3 changesets with 4 changes to 4 files -Attempt to commit or push text file(s) using CRLF line endings -in 67ac5962ab43: d -in 68c127d1834e: b -in 68c127d1834e: c - -To prevent this mistake in your local repository, -add to Mercurial.ini or .hg/hgrc: - -[hooks] -pretxncommit.crlf = python:hgext.win32text.forbidcrlf - -and also consider adding: - -[extensions] -win32text = -[encode] -** = cleverencode: -[decode] -** = cleverdecode: -transaction abort! -rollback completed -abort: pretxnchangegroup.crlf hook failed - -changeset: 5:f0b1c8d75fce -tag: tip -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: bin -description: -5 - - -changeset: 4:77796dbcd4ad -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f -description: -4 - - -changeset: 3:7c1b5430b350 -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f g -description: -2.3 - - -changeset: 2:bc2d09796734 -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: g -description: -2.2 - - -changeset: 1:b1aa5cde7ff4 -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f -description: -2 - - -changeset: 0:fcf06d5c4e1d -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -files: f -description: -1 - - - -hello -sometext -rem empty - -[extensions] -win32text = -[decode] -** = cleverdecode: -[encode] -** = cleverencode: - -WARNING: f4.bat already has CRLF line endings -and does not need EOL conversion by the win32text plugin. -Before your next commit, please reconsider your encode/decode settings in -Mercurial.ini or ..../.hg/hgrc. -3 files updated, 0 files merged, 0 files removed, 0 files unresolved -hello -sometext -rem empty - -# empty -# empty -% just linefeed -% just linefeed -no changes needed to linefeed -% just linefeed -M linefeed -reverting linefeed -% just linefeed diff -r dc6b9b3bf63e -r f18fd371ecbd tests/test-win32text.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-win32text.t Sun Sep 26 13:44:49 2010 -0500 @@ -0,0 +1,436 @@ + + $ hg init t + $ cd t + $ cat > unix2dos.py < import sys + > + > for path in sys.argv[1:]: + > data = file(path, 'rb').read() + > data = data.replace('\n', '\r\n') + > file(path, 'wb').write(data) + > EOF + $ cat > print.py < import sys + > print(sys.stdin.read().replace('\n', '').replace('\r', '').replace('\0', '')) + > EOF + $ echo '[hooks]' >> .hg/hgrc + $ echo 'pretxncommit.crlf = python:hgext.win32text.forbidcrlf' >> .hg/hgrc + $ echo 'pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf' >> .hg/hgrc + $ cat .hg/hgrc + [hooks] + pretxncommit.crlf = python:hgext.win32text.forbidcrlf + pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf + $ echo + + $ echo hello > f + $ hg add f + +commit should succeed + + $ hg ci -m 1 + $ echo + + $ hg clone . ../zoz + updating to branch default + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cp .hg/hgrc ../zoz/.hg + $ python unix2dos.py f + +commit should fail + + $ hg ci -m 2.1 + Attempt to commit or push text file(s) using CRLF line endings + in f583ea08d42a: f + transaction abort! + rollback completed + abort: pretxncommit.crlf hook failed + [255] + $ echo + + $ mv .hg/hgrc .hg/hgrc.bak + +commits should succeed + + $ hg ci -m 2 + $ hg cp f g + $ hg ci -m 2.2 + $ echo + + +push should fail + + $ hg push ../zoz + pushing to ../zoz + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files + Attempt to commit or push text file(s) using CRLF line endings + in bc2d09796734: g + in b1aa5cde7ff4: f + + To prevent this mistake in your local repository, + add to Mercurial.ini or .hg/hgrc: + + [hooks] + pretxncommit.crlf = python:hgext.win32text.forbidcrlf + + and also consider adding: + + [extensions] + win32text = + [encode] + ** = cleverencode: + [decode] + ** = cleverdecode: + transaction abort! + rollback completed + abort: pretxnchangegroup.crlf hook failed + [255] + $ echo + + $ mv .hg/hgrc.bak .hg/hgrc + $ echo hello > f + $ hg rm g + +commit should succeed + + $ hg ci -m 2.3 + $ echo + + +push should succeed + + $ hg push ../zoz + pushing to ../zoz + searching for changes + adding changesets + adding manifests + adding file changes + added 3 changesets with 3 changes to 2 files + $ echo + + +and now for something completely different + + $ mkdir d + $ echo hello > d/f2 + $ python unix2dos.py d/f2 + $ hg add d/f2 + $ hg ci -m 3 + Attempt to commit or push text file(s) using CRLF line endings + in 053ba1a3035a: d/f2 + transaction abort! + rollback completed + abort: pretxncommit.crlf hook failed + [255] + $ hg revert -a + forgetting d/f2 + $ rm d/f2 + $ echo + + $ hg rem f + $ hg ci -m 4 + $ echo + + $ python -c 'file("bin", "wb").write("hello\x00\x0D\x0A")' + $ hg add bin + $ hg ci -m 5 + $ hg log -v + changeset: 5:f0b1c8d75fce + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: bin + description: + 5 + + + changeset: 4:77796dbcd4ad + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f + description: + 4 + + + changeset: 3:7c1b5430b350 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f g + description: + 2.3 + + + changeset: 2:bc2d09796734 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: g + description: + 2.2 + + + changeset: 1:b1aa5cde7ff4 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f + description: + 2 + + + changeset: 0:fcf06d5c4e1d + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f + description: + 1 + + + $ echo + + $ hg clone . dupe + updating to branch default + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ echo + + $ for x in a b c d; do echo content > dupe/$x; done + $ hg -R dupe add + adding dupe/a + adding dupe/b + adding dupe/c + adding dupe/d + $ python unix2dos.py dupe/b dupe/c dupe/d + $ hg -R dupe ci -m a dupe/a + $ hg -R dupe ci -m b/c dupe/[bc] + $ hg -R dupe ci -m d dupe/d + $ hg -R dupe log -v + changeset: 8:67ac5962ab43 + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: d + description: + d + + + changeset: 7:68c127d1834e + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: b c + description: + b/c + + + changeset: 6:adbf8bf7f31d + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: a + description: + a + + + changeset: 5:f0b1c8d75fce + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: bin + description: + 5 + + + changeset: 4:77796dbcd4ad + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f + description: + 4 + + + changeset: 3:7c1b5430b350 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f g + description: + 2.3 + + + changeset: 2:bc2d09796734 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: g + description: + 2.2 + + + changeset: 1:b1aa5cde7ff4 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f + description: + 2 + + + changeset: 0:fcf06d5c4e1d + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f + description: + 1 + + + $ echo + + $ hg pull dupe + pulling from dupe + searching for changes + adding changesets + adding manifests + adding file changes + added 3 changesets with 4 changes to 4 files + Attempt to commit or push text file(s) using CRLF line endings + in 67ac5962ab43: d + in 68c127d1834e: b + in 68c127d1834e: c + + To prevent this mistake in your local repository, + add to Mercurial.ini or .hg/hgrc: + + [hooks] + pretxncommit.crlf = python:hgext.win32text.forbidcrlf + + and also consider adding: + + [extensions] + win32text = + [encode] + ** = cleverencode: + [decode] + ** = cleverdecode: + transaction abort! + rollback completed + abort: pretxnchangegroup.crlf hook failed + [255] + $ echo + + $ hg log -v + changeset: 5:f0b1c8d75fce + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: bin + description: + 5 + + + changeset: 4:77796dbcd4ad + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f + description: + 4 + + + changeset: 3:7c1b5430b350 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f g + description: + 2.3 + + + changeset: 2:bc2d09796734 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: g + description: + 2.2 + + + changeset: 1:b1aa5cde7ff4 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f + description: + 2 + + + changeset: 0:fcf06d5c4e1d + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: f + description: + 1 + + + $ echo + + $ rm .hg/hgrc + $ (echo some; echo text) > f3 + $ python -c 'file("f4.bat", "wb").write("rem empty\x0D\x0A")' + $ hg add f3 f4.bat + $ hg ci -m 6 + $ python print.py < bin + hello + $ python print.py < f3 + sometext + $ python print.py < f4.bat + rem empty + $ echo + + $ echo '[extensions]' >> .hg/hgrc + $ echo 'win32text = ' >> .hg/hgrc + $ echo '[decode]' >> .hg/hgrc + $ echo '** = cleverdecode:' >> .hg/hgrc + $ echo '[encode]' >> .hg/hgrc + $ echo '** = cleverencode:' >> .hg/hgrc + $ cat .hg/hgrc + [extensions] + win32text = + [decode] + ** = cleverdecode: + [encode] + ** = cleverencode: + $ echo + + $ rm f3 f4.bat bin + $ hg co -C 2>&1 | python -c 'import sys, os; sys.stdout.write(sys.stdin.read().replace(os.getcwd(), "...."))' + WARNING: f4.bat already has CRLF line endings + and does not need EOL conversion by the win32text plugin. + Before your next commit, please reconsider your encode/decode settings in + Mercurial.ini or ..../.hg/hgrc. + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ python print.py < bin + hello + $ python print.py < f3 + sometext + $ python print.py < f4.bat + rem empty + $ echo + + $ python -c 'file("f5.sh", "wb").write("# empty\x0D\x0A")' + $ hg add f5.sh + $ hg ci -m 7 + $ python print.py < f5.sh + # empty + $ hg cat f5.sh | python print.py + # empty + $ echo '% just linefeed' > linefeed + $ hg ci -qAm 8 linefeed + $ python print.py < linefeed + % just linefeed + $ hg cat linefeed | python print.py + % just linefeed + $ hg st -q + $ hg revert -a linefeed + no changes needed to linefeed + $ python print.py < linefeed + % just linefeed + $ hg st -q + $ echo modified >> linefeed + $ hg st -q + M linefeed + $ hg revert -a + reverting linefeed + $ hg st -q + $ python print.py < linefeed + % just linefeed