##// END OF EJS Templates
pyoxidizer: disable the test for disabled & broken extensions help...
pyoxidizer: disable the test for disabled & broken extensions help The test is a bit fragile and the feature is significantly broken for 3rd party extension already. So we disable that section with a comment about why and what is needed. Differential Revision: https://phab.mercurial-scm.org/D11304

File last commit:

r48371:e9c5c368 default
r48659:d88f4231 stable
Show More
test-paths.t
521 lines | 12.8 KiB | text/troff | Tads3Lexer
Nicolas Dumazet
tests: unify test-paths
r11785 $ hg init a
$ hg clone a b
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd a
Yuya Nishihara
paths: use single loop for both search=None|pattern cases...
r27726
with no paths:
$ hg paths
$ hg paths unknown
not found!
[1]
Yuya Nishihara
paths: port to generic templater...
r27728 $ hg paths -Tjson
[
]
Yuya Nishihara
paths: use single loop for both search=None|pattern cases...
r27726
with paths:
Nicolas Dumazet
tests: unify test-paths
r11785 $ echo '[paths]' >> .hg/hgrc
Yuya Nishihara
paths: include #fragment again...
r27320 $ echo 'dupe = ../b#tip' >> .hg/hgrc
Benoit Boissinot
ui.paths: expand paths directly in fixconfig (issue2373)...
r12662 $ echo 'expand = $SOMETHING/bar' >> .hg/hgrc
Nicolas Dumazet
tests: unify test-paths
r11785 $ hg in dupe
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 comparing with $TESTTMP/b
Nicolas Dumazet
tests: unify test-paths
r11785 no changes found
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Nicolas Dumazet
tests: unify test-paths
r11785 $ cd ..
$ hg -R a in dupe
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 comparing with $TESTTMP/b
Nicolas Dumazet
tests: unify test-paths
r11785 no changes found
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Benoit Boissinot
ui.paths: expand paths directly in fixconfig (issue2373)...
r12662 $ cd a
$ hg paths
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dupe = $TESTTMP/b#tip
expand = $TESTTMP/a/$SOMETHING/bar
Benoit Boissinot
ui.paths: expand paths directly in fixconfig (issue2373)...
r12662 $ SOMETHING=foo hg paths
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dupe = $TESTTMP/b#tip
expand = $TESTTMP/a/foo/bar
Adrian Buehlmann
test-paths.t: enable for Windows using #if...
r16843 #if msys
$ SOMETHING=//foo hg paths
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dupe = $TESTTMP/b#tip
Adrian Buehlmann
test-paths.t: enable for Windows using #if...
r16843 expand = /foo/bar
#else
Benoit Boissinot
ui.paths: expand paths directly in fixconfig (issue2373)...
r12662 $ SOMETHING=/foo hg paths
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dupe = $TESTTMP/b#tip
Benoit Boissinot
ui.paths: expand paths directly in fixconfig (issue2373)...
r12662 expand = /foo/bar
Adrian Buehlmann
test-paths.t: enable for Windows using #if...
r16843 #endif
Thomas Arendsen Hein
paths: Add support for -q/--quiet...
r14331 $ hg paths -q
dupe
expand
$ hg paths dupe
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/b#tip
Thomas Arendsen Hein
paths: Add support for -q/--quiet...
r14331 $ hg paths -q dupe
$ hg paths unknown
not found!
[1]
$ hg paths -q unknown
[1]
Yuya Nishihara
paths: port to generic templater...
r27728
formatter output with paths:
$ echo 'dupe:pushurl = https://example.com/dupe' >> .hg/hgrc
Matt Harbison
test-paths: fix up json output to match $TESTTMP on Windows...
r28173 $ hg paths -Tjson | sed 's|\\\\|\\|g'
Yuya Nishihara
paths: port to generic templater...
r27728 [
{
"name": "dupe",
"pushurl": "https://example.com/dupe",
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 "url": "$TESTTMP/b#tip"
Yuya Nishihara
paths: port to generic templater...
r27728 },
{
"name": "expand",
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 "url": "$TESTTMP/a/$SOMETHING/bar"
Yuya Nishihara
paths: port to generic templater...
r27728 }
]
Matt Harbison
test-paths: fix up json output to match $TESTTMP on Windows...
r28173 $ hg paths -Tjson dupe | sed 's|\\\\|\\|g'
Yuya Nishihara
paths: port to generic templater...
r27728 [
{
"name": "dupe",
"pushurl": "https://example.com/dupe",
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 "url": "$TESTTMP/b#tip"
Yuya Nishihara
paths: port to generic templater...
r27728 }
]
$ hg paths -Tjson -q unknown
[
]
[1]
Yuya Nishihara
templatekw: export ui.paths as {peerpaths}...
r33414 log template:
(behaves as a {name: path-string} dict by default)
Yuya Nishihara
templatekw: rename peerpaths to peerurls per naming convention (BC)...
r34540 $ hg log -rnull -T '{peerurls}\n'
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dupe=$TESTTMP/b#tip expand=$TESTTMP/a/$SOMETHING/bar
Yuya Nishihara
templatekw: rename peerpaths to peerurls per naming convention (BC)...
r34540 $ hg log -rnull -T '{join(peerurls, "\n")}\n'
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dupe=$TESTTMP/b#tip
expand=$TESTTMP/a/$SOMETHING/bar
Yuya Nishihara
templatekw: rename peerpaths to peerurls per naming convention (BC)...
r34540 $ hg log -rnull -T '{peerurls % "{name}: {url}\n"}'
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dupe: $TESTTMP/b#tip
expand: $TESTTMP/a/$SOMETHING/bar
Yuya Nishihara
templatekw: rename peerpaths to peerurls per naming convention (BC)...
r34540 $ hg log -rnull -T '{get(peerurls, "dupe")}\n'
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/b#tip
Raphaël Gomès
run-tests: also catch double-escapes for $TESTTMP...
r48371 #if windows
$ hg log -rnull -T '{peerurls % "{urls|json}\n"}'
[{"pushurl": "https://example.com/dupe", "url": "$STR_REPR_TESTTMP\\b#tip"}]
[{"url": "$STR_REPR_TESTTMP\\a\\$SOMETHING\\bar"}]
#else
template: add a `paths` field to all entry in peerurls...
r47955 $ hg log -rnull -T '{peerurls % "{urls|json}\n"}'
[{"pushurl": "https://example.com/dupe", "url": "$TESTTMP/b#tip"}]
[{"url": "$TESTTMP/a/$SOMETHING/bar"}]
Raphaël Gomès
run-tests: also catch double-escapes for $TESTTMP...
r48371 #endif
Yuya Nishihara
templatekw: export ui.paths as {peerpaths}...
r33414
Yuya Nishihara
templatekw: make experimental {peerpaths} return a single-level dict (BC)...
r34539 (sub options can be populated by map/dot operation)
Yuya Nishihara
templatekw: export ui.paths as {peerpaths}...
r33414
Yuya Nishihara
templatekw: make experimental {peerpaths} return a single-level dict (BC)...
r34539 $ hg log -rnull \
Yuya Nishihara
templatekw: rename peerpaths to peerurls per naming convention (BC)...
r34540 > -T '{get(peerurls, "dupe") % "url: {url}\npushurl: {pushurl}\n"}'
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 url: $TESTTMP/b#tip
Yuya Nishihara
templatekw: export ui.paths as {peerpaths}...
r33414 pushurl: https://example.com/dupe
Yuya Nishihara
templatekw: rename peerpaths to peerurls per naming convention (BC)...
r34540 $ hg log -rnull -T '{peerurls.dupe.pushurl}\n'
Yuya Nishihara
templatekw: export ui.paths as {peerpaths}...
r33414 https://example.com/dupe
Yuya Nishihara
templatekw: make experimental {peerpaths} return a single-level dict (BC)...
r34539 (in JSON, it's a dict of urls)
Yuya Nishihara
templatekw: export ui.paths as {peerpaths}...
r33414
Yuya Nishihara
templatekw: rename peerpaths to peerurls per naming convention (BC)...
r34540 $ hg log -rnull -T '{peerurls|json}\n' | sed 's|\\\\|/|g'
Yuya Nishihara
templatekw: make experimental {peerpaths} return a single-level dict (BC)...
r34539 {"dupe": "$TESTTMP/b#tip", "expand": "$TESTTMP/a/$SOMETHING/bar"}
Yuya Nishihara
templatekw: export ui.paths as {peerpaths}...
r33414
password should be masked in plain output, but not in machine-readable/template
output:
Yuya Nishihara
paths: port to generic templater...
r27728
$ echo 'insecure = http://foo:insecure@example.com/' >> .hg/hgrc
$ hg paths insecure
http://foo:***@example.com/
$ hg paths -Tjson insecure
[
{
"name": "insecure",
"url": "http://foo:insecure@example.com/"
}
]
Yuya Nishihara
templatekw: rename peerpaths to peerurls per naming convention (BC)...
r34540 $ hg log -rnull -T '{get(peerurls, "insecure")}\n'
Yuya Nishihara
templatekw: export ui.paths as {peerpaths}...
r33414 http://foo:insecure@example.com/
Yuya Nishihara
paths: port to generic templater...
r27728
Yuya Nishihara
zeroconf: forward all arguments passed to ui.configitems() wrapper...
r28038 zeroconf wraps ui.configitems(), which shouldn't crash at least:
$ hg paths --config extensions.zeroconf=
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dupe = $TESTTMP/b#tip
Yuya Nishihara
zeroconf: forward all arguments passed to ui.configitems() wrapper...
r28038 dupe:pushurl = https://example.com/dupe
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 expand = $TESTTMP/a/$SOMETHING/bar
Yuya Nishihara
zeroconf: forward all arguments passed to ui.configitems() wrapper...
r28038 insecure = http://foo:***@example.com/
Adrian Buehlmann
test-paths.t: 'file:' disables [paths] entries for clone dest
r13797 $ cd ..
Gregory Szorc
ui: support declaring path push urls as sub-options...
r27266 sub-options for an undeclared path are ignored
$ hg init suboptions
$ cd suboptions
$ cat > .hg/hgrc << EOF
> [paths]
> path0 = https://example.com/path0
> path1:pushurl = https://example.com/path1
> EOF
$ hg paths
path0 = https://example.com/path0
unknown sub-options aren't displayed
$ cat > .hg/hgrc << EOF
> [paths]
> path0 = https://example.com/path0
> path0:foo = https://example.com/path1
> EOF
$ hg paths
path0 = https://example.com/path0
:pushurl must be a URL
$ cat > .hg/hgrc << EOF
> [paths]
> default = /path/to/nothing
> default:pushurl = /not/a/url
> EOF
$ hg paths
urlutil: provide some information about "bad url" when processing `pushurl`...
r48050 (paths.default:pushurl not a URL; ignoring: "/not/a/url")
Gregory Szorc
ui: support declaring path push urls as sub-options...
r27266 default = /path/to/nothing
#fragment is not allowed in :pushurl
$ cat > .hg/hgrc << EOF
> [paths]
> default = https://example.com/repo
> invalid = https://example.com/repo
> invalid:pushurl = https://example.com/repo#branch
> EOF
$ hg paths
("#fragment" in paths.invalid:pushurl not supported; ignoring)
default = https://example.com/repo
invalid = https://example.com/repo
invalid:pushurl = https://example.com/repo
$ cd ..
Adrian Buehlmann
test-paths.t: 'file:' disables [paths] entries for clone dest
r13797 'file:' disables [paths] entries for clone destination
$ cat >> $HGRCPATH <<EOF
> [paths]
> gpath1 = http://hg.example.com
> EOF
$ hg clone a gpath1
abort: cannot create new http repository
[255]
$ hg clone a file:gpath1
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd gpath1
$ hg -q id
000000000000
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..
path: introduce a `path://` syntax to reference other path name...
r47582
Testing path referencing other paths
====================================
basic setup
-----------
$ ls -1
a
b
gpath1
suboptions
$ hg init chained_path
$ cd chained_path
$ cat << EOF > .hg/hgrc
> [paths]
> default=../a
> other_default=path://default
> path_with_branch=../branchy#foo
> other_branch=path://path_with_branch
> other_branched=path://path_with_branch#default
> pushdest=../push-dest
> pushdest:pushrev=default
> pushdest2=path://pushdest
> pushdest-overwrite=path://pushdest
> pushdest-overwrite:pushrev=foo
> EOF
$ hg init ../branchy
$ hg init ../push-dest
$ hg debugbuilddag -R ../branchy '.:base+3<base@foo+5'
$ hg log -G -T '{branch}\n' -R ../branchy
o foo
|
o foo
|
o foo
|
o foo
|
o foo
|
| o default
| |
| o default
| |
| o default
|/
o default
$ hg paths
default = $TESTTMP/a
gpath1 = http://hg.example.com/
other_branch = $TESTTMP/branchy#foo
other_branched = $TESTTMP/branchy#default
other_default = $TESTTMP/a
path_with_branch = $TESTTMP/branchy#foo
pushdest = $TESTTMP/push-dest
pushdest:pushrev = default
pushdest-overwrite = $TESTTMP/push-dest
pushdest-overwrite:pushrev = foo
pushdest2 = $TESTTMP/push-dest
pushdest2:pushrev = default
test basic chaining
-------------------
$ hg path other_default
$TESTTMP/a
$ hg pull default
pulling from $TESTTMP/a
no changes found
$ hg pull other_default
pulling from $TESTTMP/a
no changes found
test inheritance of the #fragment part
--------------------------------------
$ hg pull path_with_branch
pulling from $TESTTMP/branchy
adding changesets
adding manifests
adding file changes
added 6 changesets with 0 changes to 0 files
new changesets 1ea73414a91b:bcebb50b77de
(run 'hg update' to get a working copy)
$ hg pull other_branch
pulling from $TESTTMP/branchy
no changes found
$ hg pull other_branched
pulling from $TESTTMP/branchy
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 0 changes to 0 files (+1 heads)
new changesets 66f7d451a68b:2dc09a01254d
(run 'hg heads' to see heads)
test inheritance of the suboptions
----------------------------------
$ hg push pushdest
pushing to $TESTTMP/push-dest
searching for changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 0 changes to 0 files
$ hg push pushdest2
pushing to $TESTTMP/push-dest
searching for changes
no changes found
[1]
$ hg push pushdest-overwrite --new-branch
pushing to $TESTTMP/push-dest
searching for changes
adding changesets
adding manifests
adding file changes
added 5 changesets with 0 changes to 0 files (+1 heads)
path: forbid chaining `path://` definitions...
r47583
Test chaining path:// definition
--------------------------------
This is currently unsupported, but feel free to implement the necessary
dependency detection.
$ cat << EOF >> .hg/hgrc
> chain_path=path://other_default
> EOF
$ hg id
000000000000
$ hg path
Matt Harbison
urlutil: use bytes for Abort messages...
r47690 abort: cannot use `path://other_default`, "other_default" is also defined as a `path://`
path: forbid chaining `path://` definitions...
r47583 [255]
$ hg pull chain_path
Matt Harbison
urlutil: use bytes for Abort messages...
r47690 abort: cannot use `path://other_default`, "other_default" is also defined as a `path://`
path: forbid chaining `path://` definitions...
r47583 [255]
Doing an actual circle should always be an issue
$ cat << EOF >> .hg/hgrc
> rock=path://cissors
> cissors=path://paper
> paper=://rock
> EOF
$ hg id
000000000000
$ hg path
Matt Harbison
urlutil: use bytes for Abort messages...
r47690 abort: cannot use `path://other_default`, "other_default" is also defined as a `path://`
path: forbid chaining `path://` definitions...
r47583 [255]
$ hg pull chain_path
Matt Harbison
urlutil: use bytes for Abort messages...
r47690 abort: cannot use `path://other_default`, "other_default" is also defined as a `path://`
path: forbid chaining `path://` definitions...
r47583 [255]
path: error out if the `path://` reference point to an unknown path...
r47584
Test basic error cases
----------------------
$ cat << EOF > .hg/hgrc
> [paths]
> error-missing=path://unknown
> EOF
$ hg path
abort: cannot use `path://unknown`, "unknown" is not a known path
[255]
$ hg pull error-missing
abort: cannot use `path://unknown`, "unknown" is not a known path
[255]
multi-urls: add a boolean suboption that unlock path specification as list...
r48047 Test path pointing to multiple urls
===================================
Simple cases
------------
- one layer
- one list
- no special option
$ cat << EOF > .hg/hgrc
> [paths]
> one-path=foo
> multiple-path=foo,bar,baz,https://example.org/
> multiple-path:multi-urls=yes
> EOF
$ hg path
gpath1 = http://hg.example.com/
multiple-path = $TESTTMP/chained_path/foo
multiple-path:multi-urls = yes
multiple-path = $TESTTMP/chained_path/bar
multiple-path:multi-urls = yes
multiple-path = $TESTTMP/chained_path/baz
multiple-path:multi-urls = yes
multiple-path = https://example.org/
multiple-path:multi-urls = yes
one-path = $TESTTMP/chained_path/foo
Reference to a list
-------------------
$ cat << EOF >> .hg/hgrc
> ref-to-multi=path://multiple-path
> EOF
$ hg path | grep ref-to-multi
ref-to-multi = $TESTTMP/chained_path/foo
ref-to-multi:multi-urls = yes
ref-to-multi = $TESTTMP/chained_path/bar
ref-to-multi:multi-urls = yes
ref-to-multi = $TESTTMP/chained_path/baz
ref-to-multi:multi-urls = yes
ref-to-multi = https://example.org/
ref-to-multi:multi-urls = yes
List with a reference
---------------------
$ cat << EOF >> .hg/hgrc
> multi-with-ref=path://one-path, ssh://babar@savannah/celeste-ville
> multi-with-ref:multi-urls=yes
> EOF
$ hg path | grep multi-with-ref
multi-with-ref = $TESTTMP/chained_path/foo
multi-with-ref:multi-urls = yes
multi-with-ref = ssh://babar@savannah/celeste-ville
multi-with-ref:multi-urls = yes
List with a reference to a list
-------------------------------
$ cat << EOF >> .hg/hgrc
> multi-to-multi-ref = path://multiple-path, ssh://celeste@savannah/celeste-ville
> multi-to-multi-ref:multi-urls = yes
> EOF
$ hg path | grep multi-to-multi-ref
multi-to-multi-ref = $TESTTMP/chained_path/foo
multi-to-multi-ref:multi-urls = yes
multi-to-multi-ref = $TESTTMP/chained_path/bar
multi-to-multi-ref:multi-urls = yes
multi-to-multi-ref = $TESTTMP/chained_path/baz
multi-to-multi-ref:multi-urls = yes
multi-to-multi-ref = https://example.org/
multi-to-multi-ref:multi-urls = yes
multi-to-multi-ref = ssh://celeste@savannah/celeste-ville
multi-to-multi-ref:multi-urls = yes
individual suboptions are inherited
-----------------------------------
$ cat << EOF >> .hg/hgrc
> with-pushurl = foo
> with-pushurl:pushurl = http://foo.bar/
> with-pushrev = bar
> with-pushrev:pushrev = draft()
> with-both = toto
> with-both:pushurl = http://ta.ta
> with-both:pushrev = secret()
> ref-all-no-opts = path://with-pushurl, path://with-pushrev, path://with-both
> ref-all-no-opts:multi-urls = yes
> with-overwrite = path://with-pushurl, path://with-pushrev, path://with-both
> with-overwrite:multi-urls = yes
> with-overwrite:pushrev = public()
> EOF
$ hg path | grep with-pushurl
with-pushurl = $TESTTMP/chained_path/foo
with-pushurl:pushurl = http://foo.bar/
$ hg path | grep with-pushrev
with-pushrev = $TESTTMP/chained_path/bar
with-pushrev:pushrev = draft()
$ hg path | grep with-both
with-both = $TESTTMP/chained_path/toto
with-both:pushrev = secret()
with-both:pushurl = http://ta.ta/
$ hg path | grep ref-all-no-opts
ref-all-no-opts = $TESTTMP/chained_path/foo
ref-all-no-opts:multi-urls = yes
ref-all-no-opts:pushurl = http://foo.bar/
ref-all-no-opts = $TESTTMP/chained_path/bar
ref-all-no-opts:multi-urls = yes
ref-all-no-opts:pushrev = draft()
ref-all-no-opts = $TESTTMP/chained_path/toto
ref-all-no-opts:multi-urls = yes
ref-all-no-opts:pushrev = secret()
ref-all-no-opts:pushurl = http://ta.ta/
$ hg path | grep with-overwrite
with-overwrite = $TESTTMP/chained_path/foo
with-overwrite:multi-urls = yes
with-overwrite:pushrev = public()
with-overwrite:pushurl = http://foo.bar/
with-overwrite = $TESTTMP/chained_path/bar
with-overwrite:multi-urls = yes
with-overwrite:pushrev = public()
with-overwrite = $TESTTMP/chained_path/toto
with-overwrite:multi-urls = yes
with-overwrite:pushrev = public()
with-overwrite:pushurl = http://ta.ta/