test-eol-hook.t
217 lines
| 6.0 KiB
| text/troff
|
Tads3Lexer
/ tests / test-eol-hook.t
Matt Mackall
|
r12423 | Test the EOL hook | ||
$ hg init main | ||||
$ cat > main/.hg/hgrc <<EOF | ||||
> [hooks] | ||||
> pretxnchangegroup = python:hgext.eol.hook | ||||
> EOF | ||||
$ hg clone main fork | ||||
updating to branch default | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd fork | ||||
Create repo | ||||
$ cat > .hgeol <<EOF | ||||
> [patterns] | ||||
> mixed.txt = BIN | ||||
Antoine Pitrou
|
r13501 | > crlf.txt = CRLF | ||
Matt Mackall
|
r12423 | > **.txt = native | ||
> EOF | ||||
$ hg add .hgeol | ||||
$ hg commit -m 'Commit .hgeol' | ||||
$ printf "first\nsecond\nthird\n" > a.txt | ||||
$ hg add a.txt | ||||
$ hg commit -m 'LF a.txt' | ||||
$ hg push ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files | ||||
$ printf "first\r\nsecond\r\nthird\n" > a.txt | ||||
$ hg commit -m 'CRLF a.txt' | ||||
$ hg push ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
Patrick Mezard
|
r13649 | error: pretxnchangegroup hook failed: end-of-line check failed: | ||
a.txt in a8ee6548cd86 should not have CRLF line endings | ||||
Matt Mackall
|
r12423 | transaction abort! | ||
rollback completed | ||||
Patrick Mezard
|
r13649 | abort: end-of-line check failed: | ||
a.txt in a8ee6548cd86 should not have CRLF line endings | ||||
Matt Mackall
|
r12423 | [255] | ||
$ printf "first\nsecond\nthird\n" > a.txt | ||||
$ hg commit -m 'LF a.txt (fixed)' | ||||
$ hg push ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 1 files | ||||
Antoine Pitrou
|
r13501 | |||
$ printf "first\nsecond\nthird\n" > crlf.txt | ||||
$ hg add crlf.txt | ||||
$ hg commit -m 'LF crlf.txt' | ||||
$ hg push ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
Patrick Mezard
|
r13649 | error: pretxnchangegroup hook failed: end-of-line check failed: | ||
crlf.txt in 004ba2132725 should not have LF line endings | ||||
Antoine Pitrou
|
r13501 | transaction abort! | ||
rollback completed | ||||
Patrick Mezard
|
r13649 | abort: end-of-line check failed: | ||
crlf.txt in 004ba2132725 should not have LF line endings | ||||
Antoine Pitrou
|
r13501 | [255] | ||
$ printf "first\r\nsecond\r\nthird\r\n" > crlf.txt | ||||
$ hg commit -m 'CRLF crlf.txt (fixed)' | ||||
$ hg push ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 1 files | ||||
Patrick Mezard
|
r13616 | |||
$ printf "first\r\nsecond" > b.txt | ||||
$ hg add b.txt | ||||
$ hg commit -m 'CRLF b.txt' | ||||
$ hg push ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
Patrick Mezard
|
r13649 | error: pretxnchangegroup hook failed: end-of-line check failed: | ||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
Patrick Mezard
|
r13616 | transaction abort! | ||
rollback completed | ||||
Patrick Mezard
|
r13649 | abort: end-of-line check failed: | ||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
Patrick Mezard
|
r13616 | [255] | ||
$ hg up -r -2 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ printf "some\nother\nfile" > c.txt | ||||
$ hg add c.txt | ||||
$ hg commit -m "LF c.txt, b.txt doesn't exist here" | ||||
created new head | ||||
$ hg push -f ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files (+1 heads) | ||||
Patrick Mezard
|
r13649 | error: pretxnchangegroup hook failed: end-of-line check failed: | ||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
Patrick Mezard
|
r13616 | transaction abort! | ||
rollback completed | ||||
Patrick Mezard
|
r13649 | abort: end-of-line check failed: | ||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
Patrick Mezard
|
r13616 | [255] | ||
Patrick Mezard
|
r13617 | |||
Test checkheadshook alias | ||||
$ cat > ../main/.hg/hgrc <<EOF | ||||
> [hooks] | ||||
> pretxnchangegroup = python:hgext.eol.checkheadshook | ||||
> EOF | ||||
$ hg push -f ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files (+1 heads) | ||||
Patrick Mezard
|
r13649 | error: pretxnchangegroup hook failed: end-of-line check failed: | ||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
Patrick Mezard
|
r13617 | transaction abort! | ||
rollback completed | ||||
Patrick Mezard
|
r13649 | abort: end-of-line check failed: | ||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
Patrick Mezard
|
r13617 | [255] | ||
We can fix the head and push again | ||||
$ hg up 6 | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ printf "first\nsecond" > b.txt | ||||
$ hg ci -m "remove CRLF from b.txt" | ||||
$ hg push -f ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 2 files (+1 heads) | ||||
$ hg -R ../main rollback | ||||
repository tip rolled back to revision 5 (undo push) | ||||
working directory now based on revision -1 | ||||
Test it still fails with checkallhook | ||||
$ cat > ../main/.hg/hgrc <<EOF | ||||
> [hooks] | ||||
> pretxnchangegroup = python:hgext.eol.checkallhook | ||||
> EOF | ||||
$ hg push -f ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 2 files (+1 heads) | ||||
Patrick Mezard
|
r13649 | error: pretxnchangegroup hook failed: end-of-line check failed: | ||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
Patrick Mezard
|
r13617 | transaction abort! | ||
rollback completed | ||||
Patrick Mezard
|
r13649 | abort: end-of-line check failed: | ||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
Patrick Mezard
|
r13617 | [255] | ||
But we can push the clean head | ||||
$ hg push -r7 -f ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
Patrick Mezard
|
r13649 | Test multiple files/revisions output | ||
$ printf "another\r\nbad\r\none" > d.txt | ||||
$ hg add d.txt | ||||
$ hg ci -m "add d.txt" | ||||
$ hg push -f ../main | ||||
pushing to ../main | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 2 files (+1 heads) | ||||
error: pretxnchangegroup hook failed: end-of-line check failed: | ||||
d.txt in a7040e68714f should not have CRLF line endings | ||||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
transaction abort! | ||||
rollback completed | ||||
abort: end-of-line check failed: | ||||
d.txt in a7040e68714f should not have CRLF line endings | ||||
b.txt in fbcf9b1025f5 should not have CRLF line endings | ||||
[255] | ||||