##// END OF EJS Templates
extensions: register functions always at loading extension (issue5601)...
extensions: register functions always at loading extension (issue5601) Before this patch, functions defined in extensions are registered via extra loaders only in _dispatch(). Therefore, loading extensions in other code paths like below omits registration of functions. - WSGI service - operation across repositories (e.g. subrepo) - test-duplicateoptions.py, using extensions.loadall() directly To register functions always at loading new extension, this patch moves implementation for extra loading from dispatch._dispatch() to extensions.loadall(). AFAIK, only commands module causes cyclic dependency between extensions module, but this patch imports all related modules just before extra loading in loadall(), in order to centralize them. This patch makes extensions.py depend on many other modules, even though extensions.py itself doesn't. It should be avoided if possible, but I don't have any better idea. Some other places like below aren't reasonable for extra loading, IMHO. - specific function in newly added module: existing callers of extensions.loadall() should invoke it, too - hg.repository() or so: no-repo commands aren't covered by this. BTW, this patch removes _loaded.add(name) on relocation, because dispatch._loaded is used only for extraloaders (for similar reason, "exts" variable is removed, too).

File last commit:

r32940:75be1499 default
r33052:45b0e9d0 default
Show More
test-win32text.t
426 lines | 8.4 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: unify test-win32text
r12494
$ 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
$ 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
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-win32text
r12494 $ echo hello > f
$ hg add f
commit should succeed
$ hg ci -m 1
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-win32text
r12494 $ hg clone . ../zoz
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cp .hg/hgrc ../zoz/.hg
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON unix2dos.py f
Matt Mackall
tests: unify test-win32text
r12494
commit should fail
$ hg ci -m 2.1
Martin Geisler
win32text: lowercase warning message
r16932 attempt to commit or push text file(s) using CRLF line endings
Matt Mackall
tests: unify test-win32text
r12494 in f583ea08d42a: f
transaction abort!
rollback completed
abort: pretxncommit.crlf hook failed
[255]
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-win32text
r12494 $ mv .hg/hgrc .hg/hgrc.bak
commits should succeed
$ hg ci -m 2
$ hg cp f g
$ hg ci -m 2.2
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
Martin Geisler
win32text: lowercase warning message
r16932 attempt to commit or push text file(s) using CRLF line endings
Matt Mackall
tests: unify test-win32text
r12494 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]
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-win32text
r12494 $ mv .hg/hgrc.bak .hg/hgrc
$ echo hello > f
$ hg rm g
commit should succeed
$ hg ci -m 2.3
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
and now for something completely different
$ mkdir d
$ echo hello > d/f2
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON unix2dos.py d/f2
Matt Mackall
tests: unify test-win32text
r12494 $ hg add d/f2
$ hg ci -m 3
Martin Geisler
win32text: lowercase warning message
r16932 attempt to commit or push text file(s) using CRLF line endings
Matt Mackall
tests: unify test-win32text
r12494 in 053ba1a3035a: d/f2
transaction abort!
rollback completed
abort: pretxncommit.crlf hook failed
[255]
$ hg revert -a
Mads Kiilerich
tests: add missing '(glob)'s to match '\' in paths in test output on windows
r15520 forgetting d/f2 (glob)
Matt Mackall
tests: unify test-win32text
r12494 $ rm d/f2
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-win32text
r12494 $ hg rem f
$ hg ci -m 4
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ $PYTHON -c 'file("bin", "wb").write("hello\x00\x0D\x0A")'
Matt Mackall
tests: unify test-win32text
r12494 $ 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
$ hg clone . dupe
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-win32text
r12494 $ for x in a b c d; do echo content > dupe/$x; done
$ hg -R dupe add
Mads Kiilerich
tests: add missing '(glob)'s to match '\' in paths in test output on windows
r15520 adding dupe/a (glob)
adding dupe/b (glob)
adding dupe/c (glob)
adding dupe/d (glob)
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON unix2dos.py dupe/b dupe/c dupe/d
Matt Mackall
tests: unify test-win32text
r12494 $ 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
$ 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
Martin Geisler
win32text: lowercase warning message
r16932 attempt to commit or push text file(s) using CRLF line endings
Matt Mackall
tests: unify test-win32text
r12494 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]
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-win32text
r12494 $ 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
$ rm .hg/hgrc
$ (echo some; echo text) > f3
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ $PYTHON -c 'file("f4.bat", "wb").write("rem empty\x0D\x0A")'
Matt Mackall
tests: unify test-win32text
r12494 $ hg add f3 f4.bat
$ hg ci -m 6
Martin Geisler
test-win32text: use (esc) lines instead of Python script
r12977 $ cat bin
hello\x00\r (esc)
$ cat f3
some
text
$ cat f4.bat
rem empty\r (esc)
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-win32text
r12494 $ 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:
Martin Geisler
tests: test/silence win32text deprecation warning
r12843
Trigger deprecation warning:
Mads Kiilerich
test-win32text.t: stabilize test output...
r12853 $ hg id -t
Matt Mackall
urls: bulk-change primary website URLs
r26421 win32text is deprecated: https://mercurial-scm.org/wiki/Win32TextExtension
Mads Kiilerich
test-win32text.t: stabilize test output...
r12853 tip
Martin Geisler
tests: test/silence win32text deprecation warning
r12843
Disable warning:
$ echo '[win32text]' >> .hg/hgrc
$ echo 'warn = no' >> .hg/hgrc
Mads Kiilerich
test-win32text.t: stabilize test output...
r12853 $ hg id -t
tip
Martin Geisler
tests: test/silence win32text deprecation warning
r12843
Matt Mackall
tests: unify test-win32text
r12494 $ rm f3 f4.bat bin
Martin Geisler
test-win32text: use $TESTTMP in output
r12978 $ hg co -C
Matt Mackall
tests: unify test-win32text
r12494 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
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 Mercurial.ini or $TESTTMP/t/.hg/hgrc. (glob)
Matt Mackall
tests: unify test-win32text
r12494 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
Martin Geisler
test-win32text: use (esc) lines instead of Python script
r12977 $ cat bin
hello\x00\r (esc)
$ cat f3
some\r (esc)
text\r (esc)
$ cat f4.bat
rem empty\r (esc)
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ $PYTHON -c 'file("f5.sh", "wb").write("# empty\x0D\x0A")'
Matt Mackall
tests: unify test-win32text
r12494 $ hg add f5.sh
$ hg ci -m 7
Martin Geisler
test-win32text: use (esc) lines instead of Python script
r12977 $ cat f5.sh
# empty\r (esc)
$ hg cat f5.sh
# empty
Matt Mackall
tests: unify test-win32text
r12494 $ echo '% just linefeed' > linefeed
$ hg ci -qAm 8 linefeed
Martin Geisler
test-win32text: use (esc) lines instead of Python script
r12977 $ cat linefeed
% just linefeed
$ hg cat linefeed
% just linefeed
Matt Mackall
tests: unify test-win32text
r12494 $ hg st -q
$ hg revert -a linefeed
no changes needed to linefeed
Martin Geisler
test-win32text: use (esc) lines instead of Python script
r12977 $ cat linefeed
% just linefeed
Matt Mackall
tests: unify test-win32text
r12494 $ hg st -q
$ echo modified >> linefeed
$ hg st -q
M linefeed
$ hg revert -a
reverting linefeed
$ hg st -q
Martin Geisler
test-win32text: use (esc) lines instead of Python script
r12977 $ cat linefeed
% just linefeed\r (esc)
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..