tests/test-win32text
author Jesse Glick <jesse.glick@sun.com>
Wed, 19 Dec 2007 17:02:31 -0500
changeset 5675 a5fe27b83a4a
child 5680 963c516bb38c
permissions -rw-r--r--
Issue 882: add standard hook to reject text files with CRLF. While the win32text extension does LF <-> CRLF conversion, and will issue a warning in case a file already in the repository uses CRLF, it provides no mechanism for verifying that incoming changes use LF. In a large development team with some Windows users, it is virtually guaranteed that someone will forget to set up the encode filter correctly and accidentally check in a file using CRLF, which can cause warnings for other Windows users when they next fetch changes. Since this is a general problem it is desirable to have a pre-commit (or -push) hook available to reject such accidents earlier rather than trying to fix them up after the fact.

#!/bin/sh

hg init
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
hg ci -m 1 -d'0 0'
echo

unix2dos f
hg ci -m 2 -d'0 0'
hg revert -a
echo

mkdir d
echo hello > d/f2
unix2dos d/f2
hg add d/f2
hg ci -m 3 -d'0 0'
hg revert -a
rm d/f2
echo

hg rem f
hg ci -m 4 -d'0 0'
echo

printf 'hello\x00\x0D\x0A' > bin
hg add bin
hg ci -m 5 -d'0 0'
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
unix2dos dupe/b dupe/c dupe/d
hg -R dupe ci -m a -d'0 0' dupe/a
hg -R dupe ci -m b/c -d'0 0' dupe/[bc]
hg -R dupe ci -m d -d'0 0' dupe/d
hg -R dupe log -v
echo

hg pull dupe
echo

hg log -v
echo

# XXX missing tests for encode/decode hooks