tests: unify test-win32text
authorMatt Mackall <mpm@selenic.com>
Sun, 26 Sep 2010 13:44:49 -0500
changeset 12494 f18fd371ecbd
parent 12493 dc6b9b3bf63e
child 12495 6401e8547427
tests: unify test-win32text
tests/test-win32text
tests/test-win32text.out
tests/test-win32text.t
--- 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 <<EOF
-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 <<EOF
-import sys
-print(sys.stdin.read().replace('\n', '<LF>').replace('\r', '<CR>').replace('\0', '<NUL>'))
-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
--- 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<NUL><CR><LF>
-some<LF>text<LF>
-rem empty<CR><LF>
-
-[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<NUL><CR><LF>
-some<CR><LF>text<CR><LF>
-rem empty<CR><LF>
-
-# empty<CR><LF>
-# empty<LF>
-% just linefeed<LF>
-% just linefeed<LF>
-no changes needed to linefeed
-% just linefeed<LF>
-M linefeed
-reverting linefeed
-% just linefeed<CR><LF>
--- /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 <<EOF
+  > 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 <<EOF
+  > import sys
+  > print(sys.stdin.read().replace('\n', '<LF>').replace('\r', '<CR>').replace('\0', '<NUL>'))
+  > 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<NUL><CR><LF>
+  $ python print.py < f3
+  some<LF>text<LF>
+  $ python print.py < f4.bat
+  rem empty<CR><LF>
+  $ 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<NUL><CR><LF>
+  $ python print.py < f3
+  some<CR><LF>text<CR><LF>
+  $ python print.py < f4.bat
+  rem empty<CR><LF>
+  $ 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<CR><LF>
+  $ hg cat f5.sh | python print.py
+  # empty<LF>
+  $ echo '% just linefeed' > linefeed
+  $ hg ci -qAm 8 linefeed
+  $ python print.py < linefeed
+  % just linefeed<LF>
+  $ hg cat linefeed | python print.py
+  % just linefeed<LF>
+  $ hg st -q
+  $ hg revert -a linefeed
+  no changes needed to linefeed
+  $ python print.py < linefeed
+  % just linefeed<LF>
+  $ 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<CR><LF>