##// END OF EJS Templates
repository: define manifest interfaces...
repository: define manifest interfaces The long march towards declaring interfaces for repository primitives continues. This commit essentially defines interfaces based on the following types: * manifest.manifestdict -> imanifestdict * manifest.manifestlog -> imanifestlog * manifest.memmanifestctx -> imanifestrevisionwritable * manifest.manifestctx -> imanifestrevisionstored * manifest.memtreemanifestctx -> imanifestrevisionwritable * manifest.treemanifestctx -> imanifestrevisionstored * util.dirs -> idirs The interfaces are thoroughly documented. Their documentation is now better than the documentation in manifest.py in many cases. With the exception of util.dirs, classes have been annotated with their interfaces. (I didn't feel like util.dirs needed the proper interface treatment.) Tests have been added demonstrating that all classes and instances conform to their interfaces. This work was much easier than filelogs. That's because Durham did an excellent job formalizing the manifest API a while back. There are still some minor kludges with the interfaces that should probably be addressed. But the primary goal with interface declarations is getting something established. Once we have an interface, we can modify it later easily enough. Differential Revision: https://phab.mercurial-scm.org/D3869

File last commit:

r27982:bf1d5c22 default
r38549:c82ea938 default
Show More
test-schemes.t
74 lines | 1.4 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: replace exit 80 with #require
r22046 #require serve
Matt Mackall
tests: unify test-schemes
r12486
$ cat <<EOF >> $HGRCPATH
> [extensions]
> schemes=
>
> [schemes]
> l = http://localhost:$HGPORT/
> parts = http://{1}:$HGPORT/
> z = file:\$PWD/
> EOF
$ hg init test
$ cd test
$ echo a > a
$ hg ci -Am initial
adding a
Mads Kiilerich
scheme: don't crash on invalid URLs
r18910
invalid scheme
$ hg log -R z:z
abort: no '://' in scheme url 'z:z'
[255]
http scheme
Matt Mackall
tests: unify test-schemes
r12486 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
$ cat hg.pid >> $DAEMON_PIDS
$ hg incoming l://
comparing with l://
searching for changes
no changes found
[1]
check that {1} syntax works
$ hg incoming --debug parts://localhost
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 using http://localhost:$HGPORT/
Peter Arrenbrecht
httprepo: use caps instead of between for compat check...
r13603 sending capabilities command
Brodie Rao
url: add trailing slashes to URLs with hostnames that don't have one...
r13815 comparing with parts://localhost/
Peter Arrenbrecht
discovery: add new set-based discovery...
r14164 query 1; heads
Peter Arrenbrecht
setdiscovery: batch heads and known(ownheads)...
r14624 sending batch command
Matt Mackall
tests: unify test-schemes
r12486 searching for changes
Peter Arrenbrecht
discovery: add new set-based discovery...
r14164 all remote heads known locally
Matt Mackall
tests: unify test-schemes
r12486 no changes found
[1]
check that paths are expanded
$ PWD=`pwd` hg incoming z://
comparing with z://
searching for changes
no changes found
[1]
Jason R. Coombs
schemes: add debugexpandscheme command, resolving a scheme to canonical form
r27982 check that debugexpandscheme outputs the canonical form
$ hg debugexpandscheme bb://user/repo
https://bitbucket.org/user/repo
expanding an unknown scheme emits the input
$ hg debugexpandscheme foobar://this/that
foobar://this/that
expanding a canonical URL emits the input
$ hg debugexpandscheme https://bitbucket.org/user/repo
https://bitbucket.org/user/repo
Matt Mackall
tests: unify test-schemes
r12486 errors
$ cat errors.log
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..