##// END OF EJS Templates
hgweb: do not import uuid immediately to avoid its side effect...
hgweb: do not import uuid immediately to avoid its side effect With hgdemandimport disabled (chg's case), `import uuid` has an immediate side effect calling `ctypes.util.find_library` trying to locate the `libuuid` library. This happens at `import` time before `dispatch.run()`. The call trace is like: File "hg/hg", line 54, in <module> from mercurial import ( File "hg/mercurial/dispatch.py", line 24, in <module> from . import ( File "hg/mercurial/commands.py", line 23, in <module> from . import ( File "hg/mercurial/help.py", line 33, in <module> from .hgweb import ( File "hg/mercurial/hgweb/__init__.py", line 20, in <module> from . import ( File "hg/mercurial/hgweb/hgweb_mod.py", line 14, in <module> from .common import ( File "hg/mercurial/hgweb/common.py", line 15, in <module> import uuid File "/usr/lib64/python2.7/uuid.py", line 404, in <module> lib = ctypes.CDLL(ctypes.util.find_library(libname)) The problem is, `ctypes.util.find_library` will execute `sh -c '/sbin/ldconfig -p 2>/dev/null'` on Python <= 2.7.12. The output of `sh` may pollute the terminal: shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory This patch moves `import uuid` so its side-effect can only happen after the cwd check in `dispatch._getlocal`. Therefore the terminal won't be polluted by importing `uuid`. Differential Revision: https://phab.mercurial-scm.org/D1024

File last commit:

r34644:f42dec9c default
r34644:f42dec9c default
Show More
test-dispatch.t
75 lines | 1.4 KiB | text/troff | Tads3Lexer
Adrian Buehlmann
tests: unify test-dispatch
r12157 test command parsing and dispatch
$ hg init a
$ cd a
Nicolas Dumazet
tests: move test-issue436 in test-dispatch where fancyopts is tested
r14115
Redundant options used to crash (issue436):
$ hg -v log -v
$ hg -v log -v x
Adrian Buehlmann
tests: unify test-dispatch
r12157 $ echo a > a
$ hg ci -Ama
adding a
Missing arg:
$ hg cat
hg cat: invalid arguments
hg cat [OPTION]... FILE...
output the current or given revision of files
Matt Mackall
help: fold repeatable option message into option table header...
r22117 options ([+] can be repeated):
Adrian Buehlmann
tests: unify test-dispatch
r12157
Matt Mackall
help: use RST to format option lists
r15145 -o --output FORMAT print output to file with formatted name
-r --rev REV print the given revision
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 --decode apply any matching decode filter
Matt Mackall
help: use RST to format option lists
r15145 -I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
Adrian Buehlmann
tests: unify test-dispatch
r12157
timeless
help: use single quotes in use warning
r29974 (use 'hg cat -h' to show more help)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
tests: unify test-dispatch
r12157
[defaults]
$ hg cat a
a
$ cat >> $HGRCPATH <<EOF
> [defaults]
> cat = -r null
> EOF
$ hg cat a
a: no such file in rev 000000000000
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Adrian Buehlmann
tests: unify test-dispatch
r12157
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 $ cd "$TESTTMP"
Mads Kiilerich
tests: fix for windows - slashes and no serve
r18506 OSError "No such file or directory" / "The system cannot find the path
specified" should include filename even when it is empty
Mads Kiilerich
dispatch: show empty filename in OSError aborts...
r18227
$ hg -R a archive ''
Mads Kiilerich
tests: fix for windows - slashes and no serve
r18506 abort: *: '' (glob)
Mads Kiilerich
dispatch: show empty filename in OSError aborts...
r18227 [255]
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 #if no-outer-repo
Adrian Buehlmann
tests: unify test-dispatch
r12157 No repo:
$ hg cat
Matt Mackall
dispatch: improve repository not found message...
r13967 abort: no repository found in '$TESTTMP' (.hg not found)!
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
tests: unify test-dispatch
r12157
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 #endif
Jun Wu
hgweb: do not import uuid immediately to avoid its side effect...
r34644
#if rmcwd
Current directory removed:
$ mkdir $TESTTMP/repo1
$ cd $TESTTMP/repo1
$ rm -rf $TESTTMP/repo1
$ HGDEMANDIMPORT=disable hg version -q
abort: error getting current working directory: * (glob)
[255]
#endif