Mercurial > hg
annotate tests/test-paths.t @ 44950:f9734b2d59cc
py3: make stdout line-buffered if connected to a TTY
Status messages that are to be shown on the terminal should be written to the
file descriptor before anything further is done, to keep the user updated.
One common way to achieve this is to make stdout line-buffered if it is
connected to a TTY. This is done on Python 2 (except on Windows, where libc,
which the CPython 2 streams depend on, does not properly support this).
Python 3 rolls it own I/O streams. On Python 3, buffered binary streams can't be
set line-buffered. The previous code (added in 227ba1afcb65) incorrectly
assumed that on Python 3, pycompat.stdout (sys.stdout.buffer) is already
line-buffered. However the interpreter initializes it with a block-buffered
stream or an unbuffered stream (when the -u option or the PYTHONUNBUFFERED
environment variable is set), never with a line-buffered stream.
One example where the current behavior is unacceptable is when running
`hg pull https://www.mercurial-scm.org/repo/hg` on Python 3, where the line
"pulling from https://www.mercurial-scm.org/repo/hg" does not appear on the
terminal before the hg process blocks while waiting for the server.
Various approaches to fix this problem are possible, including:
1. Weaken the contract of procutil.stdout to not give any guarantees about
buffering behavior. In this case, users of procutil.stdout need to be
changed to do enough flushes. In particular,
1. either ui must insert enough flushes for ui.write() and friends, or
2. ui.write() and friends get split into flushing and fully buffered
methods, or
3. users of ui.write() and friends must flush explicitly.
2. Make stdout unbuffered.
3. Make stdout line-buffered. Since Python 3 does not natively support that for
binary streams, we must implement it ourselves.
(2.) is problematic because using unbuffered I/O changes the performance
characteristics significantly compared to line-buffered (which is used on
Python 2) and this would be a regression.
(1.2.) and (1.3) are a substantial amount of work. It’s unclear whether the
added complexity would be justified, given that raw performance doesn’t matter
that much when writing to a terminal much faster than the user could read it.
(1.1.) pushes complexity into the ui class instead of separating the concern of
how stdout is buffered. Other users of procutil.stdout would still need to take
care of the flushes.
This patch implements (3.). The general performance considerations are very
similar to (1.1.). The extra method invocation and method forwarding add a
little more overhead if the class is used. In exchange, it doesn’t add overhead
if not used.
For the benchmarks, I compared the previous implementation (incorrect on Python
3), (1.1.), (3.) and (2.). The command was chosen so that the streams were
configured as if they were writing to a TTY, but actually write to a pager,
which is also the default:
HGRCPATH=/dev/null python3 ./hg --cwd ~/vcs/mozilla-central --time --pager yes --config pager.pager='cat > /dev/null' status --all
previous:
time: real 7.880 secs (user 7.290+0.050 sys 0.580+0.170)
time: real 7.830 secs (user 7.220+0.070 sys 0.590+0.140)
time: real 7.800 secs (user 7.210+0.050 sys 0.570+0.170)
(1.1.) using Yuya Nishihara’s patch:
time: real 9.860 secs (user 8.670+0.350 sys 1.160+0.830)
time: real 9.540 secs (user 8.430+0.370 sys 1.100+0.770)
time: real 9.830 secs (user 8.630+0.370 sys 1.180+0.840)
(3.) using this patch:
time: real 9.580 secs (user 8.480+0.350 sys 1.090+0.770)
time: real 9.670 secs (user 8.480+0.330 sys 1.170+0.860)
time: real 9.640 secs (user 8.500+0.350 sys 1.130+0.810)
(2.) using a previous patch by me:
time: real 10.480 secs (user 8.850+0.720 sys 1.590+1.500)
time: real 10.490 secs (user 8.750+0.750 sys 1.710+1.470)
time: real 10.240 secs (user 8.600+0.700 sys 1.590+1.510)
As expected, there’s no difference on Python 2, as exactly the same code paths
are used:
previous:
time: real 6.950 secs (user 5.870+0.330 sys 1.070+0.770)
time: real 7.040 secs (user 6.040+0.360 sys 0.980+0.750)
time: real 7.070 secs (user 5.950+0.360 sys 1.100+0.760)
this patch:
time: real 7.010 secs (user 5.900+0.390 sys 1.070+0.730)
time: real 7.000 secs (user 5.850+0.350 sys 1.120+0.760)
time: real 7.000 secs (user 5.790+0.380 sys 1.170+0.710)
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Wed, 10 Jun 2020 13:02:39 +0200 |
parents | 4441705b7111 |
children | 83b0a5c0dfec |
rev | line source |
---|---|
11785
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
1 $ hg init a |
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
2 $ hg clone a b |
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
3 updating to branch default |
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
4 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
5 $ cd a |
27726
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
6 |
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
7 with no paths: |
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
8 |
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
9 $ hg paths |
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
10 $ hg paths unknown |
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
11 not found! |
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
12 [1] |
27728
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
13 $ hg paths -Tjson |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
14 [ |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
15 ] |
27726
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
16 |
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
17 with paths: |
7e9dc8bbebf6
paths: use single loop for both search=None|pattern cases
Yuya Nishihara <yuya@tcha.org>
parents:
27329
diff
changeset
|
18 |
11785
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
19 $ echo '[paths]' >> .hg/hgrc |
27320
59d5f619e69e
paths: include #fragment again
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
20 $ echo 'dupe = ../b#tip' >> .hg/hgrc |
12662
7285b2824fb7
ui.paths: expand paths directly in fixconfig (issue2373)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12640
diff
changeset
|
21 $ echo 'expand = $SOMETHING/bar' >> .hg/hgrc |
11785
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
22 $ hg in dupe |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
23 comparing with $TESTTMP/b |
11785
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
24 no changes found |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
11785
diff
changeset
|
25 [1] |
11785
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
26 $ cd .. |
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
27 $ hg -R a in dupe |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
28 comparing with $TESTTMP/b |
11785
7d9be960cd9a
tests: unify test-paths
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
5951
diff
changeset
|
29 no changes found |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
11785
diff
changeset
|
30 [1] |
12662
7285b2824fb7
ui.paths: expand paths directly in fixconfig (issue2373)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12640
diff
changeset
|
31 $ cd a |
7285b2824fb7
ui.paths: expand paths directly in fixconfig (issue2373)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12640
diff
changeset
|
32 $ hg paths |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
33 dupe = $TESTTMP/b#tip |
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
34 expand = $TESTTMP/a/$SOMETHING/bar |
12662
7285b2824fb7
ui.paths: expand paths directly in fixconfig (issue2373)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12640
diff
changeset
|
35 $ SOMETHING=foo hg paths |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
36 dupe = $TESTTMP/b#tip |
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
37 expand = $TESTTMP/a/foo/bar |
16843
61f3ca8e4d39
test-paths.t: enable for Windows using #if
Adrian Buehlmann <adrian@cadifra.com>
parents:
15567
diff
changeset
|
38 #if msys |
61f3ca8e4d39
test-paths.t: enable for Windows using #if
Adrian Buehlmann <adrian@cadifra.com>
parents:
15567
diff
changeset
|
39 $ SOMETHING=//foo hg paths |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
40 dupe = $TESTTMP/b#tip |
16843
61f3ca8e4d39
test-paths.t: enable for Windows using #if
Adrian Buehlmann <adrian@cadifra.com>
parents:
15567
diff
changeset
|
41 expand = /foo/bar |
61f3ca8e4d39
test-paths.t: enable for Windows using #if
Adrian Buehlmann <adrian@cadifra.com>
parents:
15567
diff
changeset
|
42 #else |
12662
7285b2824fb7
ui.paths: expand paths directly in fixconfig (issue2373)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12640
diff
changeset
|
43 $ SOMETHING=/foo hg paths |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
44 dupe = $TESTTMP/b#tip |
12662
7285b2824fb7
ui.paths: expand paths directly in fixconfig (issue2373)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12640
diff
changeset
|
45 expand = /foo/bar |
16843
61f3ca8e4d39
test-paths.t: enable for Windows using #if
Adrian Buehlmann <adrian@cadifra.com>
parents:
15567
diff
changeset
|
46 #endif |
14331
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
47 $ hg paths -q |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
48 dupe |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
49 expand |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
50 $ hg paths dupe |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
51 $TESTTMP/b#tip |
14331
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
52 $ hg paths -q dupe |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
53 $ hg paths unknown |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
54 not found! |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
55 [1] |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
56 $ hg paths -q unknown |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
13797
diff
changeset
|
57 [1] |
27728
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
58 |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
59 formatter output with paths: |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
60 |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
61 $ echo 'dupe:pushurl = https://example.com/dupe' >> .hg/hgrc |
28173
1ff28873830e
test-paths: fix up json output to match $TESTTMP on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
27728
diff
changeset
|
62 $ hg paths -Tjson | sed 's|\\\\|\\|g' |
27728
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
63 [ |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
64 { |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
65 "name": "dupe", |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
66 "pushurl": "https://example.com/dupe", |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
67 "url": "$TESTTMP/b#tip" |
27728
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
68 }, |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
69 { |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
70 "name": "expand", |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
71 "url": "$TESTTMP/a/$SOMETHING/bar" |
27728
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
72 } |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
73 ] |
28173
1ff28873830e
test-paths: fix up json output to match $TESTTMP on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
27728
diff
changeset
|
74 $ hg paths -Tjson dupe | sed 's|\\\\|\\|g' |
27728
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
75 [ |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
76 { |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
77 "name": "dupe", |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
78 "pushurl": "https://example.com/dupe", |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
79 "url": "$TESTTMP/b#tip" |
27728
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
80 } |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
81 ] |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
82 $ hg paths -Tjson -q unknown |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
83 [ |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
84 ] |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
85 [1] |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
86 |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
87 log template: |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
88 |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
89 (behaves as a {name: path-string} dict by default) |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
90 |
34539
f30e59703d98
templatekw: rename peerpaths to peerurls per naming convention (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34538
diff
changeset
|
91 $ hg log -rnull -T '{peerurls}\n' |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
92 dupe=$TESTTMP/b#tip expand=$TESTTMP/a/$SOMETHING/bar |
34539
f30e59703d98
templatekw: rename peerpaths to peerurls per naming convention (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34538
diff
changeset
|
93 $ hg log -rnull -T '{join(peerurls, "\n")}\n' |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
94 dupe=$TESTTMP/b#tip |
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
95 expand=$TESTTMP/a/$SOMETHING/bar |
34539
f30e59703d98
templatekw: rename peerpaths to peerurls per naming convention (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34538
diff
changeset
|
96 $ hg log -rnull -T '{peerurls % "{name}: {url}\n"}' |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
97 dupe: $TESTTMP/b#tip |
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
98 expand: $TESTTMP/a/$SOMETHING/bar |
34539
f30e59703d98
templatekw: rename peerpaths to peerurls per naming convention (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34538
diff
changeset
|
99 $ hg log -rnull -T '{get(peerurls, "dupe")}\n' |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
100 $TESTTMP/b#tip |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
101 |
34538
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
102 (sub options can be populated by map/dot operation) |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
103 |
34538
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
104 $ hg log -rnull \ |
34539
f30e59703d98
templatekw: rename peerpaths to peerurls per naming convention (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34538
diff
changeset
|
105 > -T '{get(peerurls, "dupe") % "url: {url}\npushurl: {pushurl}\n"}' |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
106 url: $TESTTMP/b#tip |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
107 pushurl: https://example.com/dupe |
34539
f30e59703d98
templatekw: rename peerpaths to peerurls per naming convention (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34538
diff
changeset
|
108 $ hg log -rnull -T '{peerurls.dupe.pushurl}\n' |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
109 https://example.com/dupe |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
110 |
34538
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
111 (in JSON, it's a dict of urls) |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
112 |
34539
f30e59703d98
templatekw: rename peerpaths to peerurls per naming convention (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34538
diff
changeset
|
113 $ hg log -rnull -T '{peerurls|json}\n' | sed 's|\\\\|/|g' |
34538
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
114 {"dupe": "$TESTTMP/b#tip", "expand": "$TESTTMP/a/$SOMETHING/bar"} |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
115 |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
116 password should be masked in plain output, but not in machine-readable/template |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
117 output: |
27728
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
118 |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
119 $ echo 'insecure = http://foo:insecure@example.com/' >> .hg/hgrc |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
120 $ hg paths insecure |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
121 http://foo:***@example.com/ |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
122 $ hg paths -Tjson insecure |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
123 [ |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
124 { |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
125 "name": "insecure", |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
126 "url": "http://foo:insecure@example.com/" |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
127 } |
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
128 ] |
34539
f30e59703d98
templatekw: rename peerpaths to peerurls per naming convention (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34538
diff
changeset
|
129 $ hg log -rnull -T '{get(peerurls, "insecure")}\n' |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
28218
diff
changeset
|
130 http://foo:insecure@example.com/ |
27728
294037159c64
paths: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents:
27726
diff
changeset
|
131 |
28038
72f2a19c5f88
zeroconf: forward all arguments passed to ui.configitems() wrapper
Yuya Nishihara <yuya@tcha.org>
parents:
27728
diff
changeset
|
132 zeroconf wraps ui.configitems(), which shouldn't crash at least: |
72f2a19c5f88
zeroconf: forward all arguments passed to ui.configitems() wrapper
Yuya Nishihara <yuya@tcha.org>
parents:
27728
diff
changeset
|
133 |
72f2a19c5f88
zeroconf: forward all arguments passed to ui.configitems() wrapper
Yuya Nishihara <yuya@tcha.org>
parents:
27728
diff
changeset
|
134 $ hg paths --config extensions.zeroconf= |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
135 dupe = $TESTTMP/b#tip |
28038
72f2a19c5f88
zeroconf: forward all arguments passed to ui.configitems() wrapper
Yuya Nishihara <yuya@tcha.org>
parents:
27728
diff
changeset
|
136 dupe:pushurl = https://example.com/dupe |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34539
diff
changeset
|
137 expand = $TESTTMP/a/$SOMETHING/bar |
28038
72f2a19c5f88
zeroconf: forward all arguments passed to ui.configitems() wrapper
Yuya Nishihara <yuya@tcha.org>
parents:
27728
diff
changeset
|
138 insecure = http://foo:***@example.com/ |
72f2a19c5f88
zeroconf: forward all arguments passed to ui.configitems() wrapper
Yuya Nishihara <yuya@tcha.org>
parents:
27728
diff
changeset
|
139 |
13797
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
140 $ cd .. |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
141 |
27266
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
142 sub-options for an undeclared path are ignored |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
143 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
144 $ hg init suboptions |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
145 $ cd suboptions |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
146 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
147 $ cat > .hg/hgrc << EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
148 > [paths] |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
149 > path0 = https://example.com/path0 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
150 > path1:pushurl = https://example.com/path1 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
151 > EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
152 $ hg paths |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
153 path0 = https://example.com/path0 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
154 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
155 unknown sub-options aren't displayed |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
156 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
157 $ cat > .hg/hgrc << EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
158 > [paths] |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
159 > path0 = https://example.com/path0 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
160 > path0:foo = https://example.com/path1 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
161 > EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
162 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
163 $ hg paths |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
164 path0 = https://example.com/path0 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
165 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
166 :pushurl must be a URL |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
167 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
168 $ cat > .hg/hgrc << EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
169 > [paths] |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
170 > default = /path/to/nothing |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
171 > default:pushurl = /not/a/url |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
172 > EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
173 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
174 $ hg paths |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
175 (paths.default:pushurl not a URL; ignoring) |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
176 default = /path/to/nothing |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
177 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
178 #fragment is not allowed in :pushurl |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
179 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
180 $ cat > .hg/hgrc << EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
181 > [paths] |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
182 > default = https://example.com/repo |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
183 > invalid = https://example.com/repo |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
184 > invalid:pushurl = https://example.com/repo#branch |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
185 > EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
186 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
187 $ hg paths |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
188 ("#fragment" in paths.invalid:pushurl not supported; ignoring) |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
189 default = https://example.com/repo |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
190 invalid = https://example.com/repo |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
191 invalid:pushurl = https://example.com/repo |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
192 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
193 $ cd .. |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
16913
diff
changeset
|
194 |
13797
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
195 'file:' disables [paths] entries for clone destination |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
196 |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
197 $ cat >> $HGRCPATH <<EOF |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
198 > [paths] |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
199 > gpath1 = http://hg.example.com |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
200 > EOF |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
201 |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
202 $ hg clone a gpath1 |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
203 abort: cannot create new http repository |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
204 [255] |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
205 |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
206 $ hg clone a file:gpath1 |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
207 updating to branch default |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
208 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
209 $ cd gpath1 |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
210 $ hg -q id |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
211 000000000000 |
16d5e80876de
test-paths.t: 'file:' disables [paths] entries for clone dest
Adrian Buehlmann <adrian@cadifra.com>
parents:
12662
diff
changeset
|
212 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16843
diff
changeset
|
213 $ cd .. |