test-rhg.t
405 lines
| 10.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-rhg.t
Simon Sapin
|
r47458 | #require rhg | ||
Antoine Cezar
|
r46008 | |||
Simon Sapin
|
r47457 | $ NO_FALLBACK="env RHG_ON_UNSUPPORTED=abort" | ||
Antoine Cezar
|
r46008 | Unimplemented command | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg unimplemented-command | ||
Raphaël Gomès
|
r50534 | unsupported feature: error: The subcommand 'unimplemented-command' wasn't recognized | ||
Simon Sapin
|
r47424 | |||
Raphaël Gomès
|
r50534 | Usage: rhg [OPTIONS] <COMMAND> | ||
Simon Sapin
|
r47424 | |||
Raphaël Gomès
|
r50534 | For more information try '--help' | ||
Simon Sapin
|
r47424 | |||
[252] | ||||
$ rhg unimplemented-command --config rhg.on-unsupported=abort-silent | ||||
Antoine Cezar
|
r45593 | [252] | ||
Antoine Cezar
|
r46008 | |||
Finding root | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg root | ||
Antoine Cezar
|
r45593 | abort: no repository found in '$TESTTMP' (.hg not found)! | ||
[255] | ||||
Antoine Cezar
|
r46008 | |||
Antoine Cezar
|
r45593 | $ hg init repository | ||
$ cd repository | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg root | ||
Antoine Cezar
|
r45593 | $TESTTMP/repository | ||
Antoine Cezar
|
r46008 | |||
Simon Sapin
|
r47255 | Reading and setting configuration | ||
$ echo "[ui]" >> $HGRCPATH | ||||
$ echo "username = user1" >> $HGRCPATH | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg config ui.username | ||
Simon Sapin
|
r47255 | user1 | ||
$ echo "[ui]" >> .hg/hgrc | ||||
$ echo "username = user2" >> .hg/hgrc | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg config ui.username | ||
Simon Sapin
|
r47255 | user2 | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg --config ui.username=user3 config ui.username | ||
Simon Sapin
|
r47255 | user3 | ||
Antoine Cezar
|
r46008 | Unwritable file descriptor | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg root > /dev/full | ||
Antoine Cezar
|
r45593 | abort: No space left on device (os error 28) | ||
[255] | ||||
Antoine Cezar
|
r46008 | |||
Deleted repository | ||||
Antoine Cezar
|
r45593 | $ rm -rf `pwd` | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg root | ||
Simon Sapin
|
r47465 | abort: error getting current working directory: $ENOENT$ | ||
Antoine Cezar
|
r45593 | [255] | ||
Antoine Cezar
|
r46008 | |||
Listing tracked files | ||||
$ cd $TESTTMP | ||||
$ hg init repository | ||||
$ cd repository | ||||
$ for i in 1 2 3; do | ||||
> echo $i >> file$i | ||||
> hg add file$i | ||||
> done | ||||
> hg commit -m "commit $i" -q | ||||
Listing tracked files from root | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files | ||
Antoine Cezar
|
r46008 | file1 | ||
file2 | ||||
file3 | ||||
Listing tracked files from subdirectory | ||||
$ mkdir -p path/to/directory | ||||
$ cd path/to/directory | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files | ||
Antoine Cezar
|
r46008 | ../../../file1 | ||
../../../file2 | ||||
../../../file3 | ||||
Listing tracked files through broken pipe | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files | head -n 1 | ||
Antoine Cezar
|
r46008 | ../../../file1 | ||
Antoine Cezar
|
r46100 | |||
Debuging data in inline index | ||||
$ cd $TESTTMP | ||||
$ rm -rf repository | ||||
$ hg init repository | ||||
$ cd repository | ||||
Simon Sapin
|
r46646 | $ for i in 1 2 3 4 5 6; do | ||
> echo $i >> file-$i | ||||
> hg add file-$i | ||||
> hg commit -m "Commit $i" -q | ||||
Antoine Cezar
|
r46100 | > done | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg debugdata -c 2 | ||
Simon Sapin
|
r46646 | 8d0267cb034247ebfa5ee58ce59e22e57a492297 | ||
Antoine Cezar
|
r46100 | test | ||
0 0 | ||||
Simon Sapin
|
r46646 | file-3 | ||
Antoine Cezar
|
r46100 | |||
Simon Sapin
|
r46646 | Commit 3 (no-eol) | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg debugdata -m 2 | ||
Simon Sapin
|
r46646 | file-1\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc) | ||
file-2\x005d9299349fc01ddd25d0070d149b124d8f10411e (esc) | ||||
file-3\x002661d26c649684b482d10f91960cc3db683c38b4 (esc) | ||||
Antoine cezar
|
r46406 | |||
Antoine cezar
|
r46417 | Debuging with full node id | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg debugdata -c `hg log -r 0 -T '{node}'` | ||
Simon Sapin
|
r46646 | d1d1c679d3053e8926061b6f45ca52009f011e3f | ||
Antoine cezar
|
r46417 | test | ||
0 0 | ||||
Simon Sapin
|
r46646 | file-1 | ||
Antoine cezar
|
r46417 | |||
Simon Sapin
|
r46646 | Commit 1 (no-eol) | ||
Specifying revisions by changeset ID | ||||
$ hg log -T '{node}\n' | ||||
c6ad58c44207b6ff8a4fbbca7045a5edaa7e908b | ||||
d654274993d0149eecc3cc03214f598320211900 | ||||
f646af7e96481d3a5470b695cf30ad8e3ab6c575 | ||||
cf8b83f14ead62b374b6e91a0e9303b85dfd9ed7 | ||||
91c6f6e73e39318534dc415ea4e8a09c99cd74d6 | ||||
6ae9681c6d30389694d8701faf24b583cf3ccafe | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files -r cf8b83 | ||
Simon Sapin
|
r46646 | file-1 | ||
file-2 | ||||
file-3 | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg cat -r cf8b83 file-2 | ||
Simon Sapin
|
r46646 | 2 | ||
Arseniy Alekseyev
|
r48986 | $ $NO_FALLBACK rhg cat --rev cf8b83 file-2 | ||
2 | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg cat -r c file-2 | ||
Simon Sapin
|
r47465 | abort: ambiguous revision identifier: c | ||
Simon Sapin
|
r46646 | [255] | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg cat -r d file-2 | ||
Simon Sapin
|
r46647 | 2 | ||
Simon Sapin
|
r48776 | $ $NO_FALLBACK rhg cat -r 0000 file-2 | ||
Arseniy Alekseyev
|
r49050 | file-2: no such file in rev 000000000000 | ||
[1] | ||||
Antoine cezar
|
r46417 | |||
Antoine cezar
|
r46406 | Cat files | ||
$ cd $TESTTMP | ||||
$ rm -rf repository | ||||
$ hg init repository | ||||
$ cd repository | ||||
$ echo "original content" > original | ||||
$ hg add original | ||||
$ hg commit -m "add original" original | ||||
Raphaël Gomès
|
r48886 | Without `--rev` | ||
$ $NO_FALLBACK rhg cat original | ||||
original content | ||||
With `--rev` | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg cat -r 0 original | ||
Antoine cezar
|
r46406 | original content | ||
Cat copied file should not display copy metadata | ||||
$ hg copy original copy_of_original | ||||
$ hg commit -m "add copy of original" | ||||
Raphaël Gomès
|
r48886 | $ $NO_FALLBACK rhg cat original | ||
original content | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg cat -r 1 copy_of_original | ||
Antoine cezar
|
r46406 | original content | ||
Simon Sapin
|
r46535 | |||
Raphaël Gomès
|
r48886 | |||
Simon Sapin
|
r47425 | Fallback to Python | ||
Raphaël Gomès
|
r48886 | $ $NO_FALLBACK rhg cat original --exclude="*.rs" | ||
unsupported feature: error: Found argument '--exclude' which wasn't expected, or isn't valid in this context | ||||
Raphaël Gomès
|
r50534 | If you tried to supply '--exclude' as a value rather than a flag, use '-- --exclude' | ||
Raphaël Gomès
|
r48886 | |||
Raphaël Gomès
|
r50534 | Usage: rhg cat <FILE>... | ||
For more information try '--help' | ||||
Raphaël Gomès
|
r48886 | |||
Simon Sapin
|
r47425 | [252] | ||
Raphaël Gomès
|
r48886 | $ rhg cat original --exclude="*.rs" | ||
Simon Sapin
|
r47425 | original content | ||
Raphaël Gomès
|
r50464 | Check that `fallback-immediately` overrides `$NO_FALLBACK` | ||
$ $NO_FALLBACK rhg cat original --exclude="*.rs" --config rhg.fallback-immediately=1 | ||||
original content | ||||
Arseniy Alekseyev
|
r49176 | $ (unset RHG_FALLBACK_EXECUTABLE; rhg cat original --exclude="*.rs") | ||
Simon Sapin
|
r47482 | abort: 'rhg.on-unsupported=fallback' without 'rhg.fallback-executable' set. | ||
[255] | ||||
Arseniy Alekseyev
|
r49176 | |||
$ (unset RHG_FALLBACK_EXECUTABLE; rhg cat original) | ||||
original content | ||||
Simon Sapin
|
r47482 | |||
Raphaël Gomès
|
r48886 | $ rhg cat original --exclude="*.rs" --config rhg.fallback-executable=false | ||
Simon Sapin
|
r47425 | [1] | ||
Raphaël Gomès
|
r48886 | $ rhg cat original --exclude="*.rs" --config rhg.fallback-executable=hg-non-existent | ||
Raphaël Gomès
|
r50043 | abort: invalid fallback 'hg-non-existent': cannot find binary path | ||
[253] | ||||
Simon Sapin
|
r47425 | |||
Raphaël Gomès
|
r48886 | $ rhg cat original --exclude="*.rs" --config rhg.fallback-executable=rhg | ||
Simon Sapin
|
r47458 | Blocking recursive fallback. The 'rhg.fallback-executable = rhg' config points to `rhg` itself. | ||
Raphaël Gomès
|
r48886 | unsupported feature: error: Found argument '--exclude' which wasn't expected, or isn't valid in this context | ||
Raphaël Gomès
|
r50534 | If you tried to supply '--exclude' as a value rather than a flag, use '-- --exclude' | ||
Raphaël Gomès
|
r48886 | |||
Raphaël Gomès
|
r50534 | Usage: rhg cat <FILE>... | ||
For more information try '--help' | ||||
Raphaël Gomès
|
r48886 | |||
Simon Sapin
|
r47425 | [252] | ||
Raphaël Gomès
|
r48887 | Fallback with shell path segments | ||
$ $NO_FALLBACK rhg cat . | ||||
unsupported feature: `..` or `.` path segment | ||||
[252] | ||||
$ $NO_FALLBACK rhg cat .. | ||||
unsupported feature: `..` or `.` path segment | ||||
[252] | ||||
$ $NO_FALLBACK rhg cat ../.. | ||||
unsupported feature: `..` or `.` path segment | ||||
[252] | ||||
Raphaël Gomès
|
r48888 | Fallback with filesets | ||
$ $NO_FALLBACK rhg cat "set:c or b" | ||||
unsupported feature: fileset | ||||
[252] | ||||
Raphaël Gomès
|
r48889 | Fallback with generic hooks | ||
$ $NO_FALLBACK rhg cat original --config hooks.pre-cat=something | ||||
unsupported feature: pre-cat hook defined | ||||
[252] | ||||
$ $NO_FALLBACK rhg cat original --config hooks.post-cat=something | ||||
unsupported feature: post-cat hook defined | ||||
[252] | ||||
$ $NO_FALLBACK rhg cat original --config hooks.fail-cat=something | ||||
unsupported feature: fail-cat hook defined | ||||
[252] | ||||
Raphaël Gomès
|
r48890 | Fallback with [defaults] | ||
$ $NO_FALLBACK rhg cat original --config "defaults.cat=-r null" | ||||
unsupported feature: `defaults` config set | ||||
[252] | ||||
Simon Sapin
|
r46535 | Requirements | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg debugrequirements | ||
Simon Sapin
|
r46535 | dotencode | ||
fncache | ||||
generaldelta | ||||
r47646 | persistent-nodemap | |||
r47636 | revlog-compression-zstd (zstd !) | |||
Simon Sapin
|
r46535 | revlogv1 | ||
r49515 | share-safe | |||
Simon Sapin
|
r46535 | sparserevlog | ||
store | ||||
Simon Sapin
|
r46549 | |||
$ echo indoor-pool >> .hg/requires | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files | ||
Simon Sapin
|
r47424 | unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool | ||
Simon Sapin
|
r46549 | [252] | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg cat -r 1 copy_of_original | ||
Simon Sapin
|
r47424 | unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool | ||
Simon Sapin
|
r46549 | [252] | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg debugrequirements | ||
Simon Sapin
|
r47424 | unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool | ||
Simon Sapin
|
r47175 | [252] | ||
Simon Sapin
|
r46550 | |||
$ echo -e '\xFF' >> .hg/requires | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg debugrequirements | ||
Simon Sapin
|
r47469 | abort: parse error in 'requires' file | ||
Simon Sapin
|
r46550 | [255] | ||
Simon Sapin
|
r46648 | |||
Persistent nodemap | ||||
$ cd $TESTTMP | ||||
$ rm -rf repository | ||||
r47646 | $ hg --config format.use-persistent-nodemap=no init repository | |||
Simon Sapin
|
r46648 | $ cd repository | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg debugrequirements | grep nodemap | ||
Simon Sapin
|
r46648 | [1] | ||
$ hg debugbuilddag .+5000 --overwritten-file --config "storage.revlog.nodemap.mode=warn" | ||||
$ hg id -r tip | ||||
c3ae8dec9fad tip | ||||
$ ls .hg/store/00changelog* | ||||
.hg/store/00changelog.d | ||||
.hg/store/00changelog.i | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files -r c3ae8dec9fad | ||
Simon Sapin
|
r46648 | of | ||
$ cd $TESTTMP | ||||
$ rm -rf repository | ||||
$ hg --config format.use-persistent-nodemap=True init repository | ||||
$ cd repository | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg debugrequirements | grep nodemap | ||
Simon Sapin
|
r46648 | persistent-nodemap | ||
$ hg debugbuilddag .+5000 --overwritten-file --config "storage.revlog.nodemap.mode=warn" | ||||
$ hg id -r tip | ||||
c3ae8dec9fad tip | ||||
$ ls .hg/store/00changelog* | ||||
.hg/store/00changelog-*.nd (glob) | ||||
.hg/store/00changelog.d | ||||
.hg/store/00changelog.i | ||||
.hg/store/00changelog.n | ||||
Simon Sapin
|
r46706 | |||
Specifying revisions by changeset ID | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files -r c3ae8dec9fad | ||
Simon Sapin
|
r46706 | of | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg cat -r c3ae8dec9fad of | ||
Simon Sapin
|
r46706 | r5000 | ||
Simon Sapin
|
r47189 | |||
Crate a shared repository | ||||
$ echo "[extensions]" >> $HGRCPATH | ||||
$ echo "share = " >> $HGRCPATH | ||||
$ cd $TESTTMP | ||||
$ hg init repo1 | ||||
Simon Sapin
|
r47253 | $ echo a > repo1/a | ||
$ hg -R repo1 commit -A -m'init' | ||||
Simon Sapin
|
r47189 | adding a | ||
$ hg share repo1 repo2 | ||||
updating working directory | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
And check that basic rhg commands work with sharing | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files -R repo2 | ||
Simon Sapin
|
r47253 | repo2/a | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg -R repo2 cat -r 0 repo2/a | ||
Simon Sapin
|
r47190 | a | ||
Simon Sapin
|
r47189 | |||
Same with relative sharing | ||||
$ hg share repo2 repo3 --relative | ||||
updating working directory | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files -R repo3 | ||
Simon Sapin
|
r47253 | repo3/a | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg -R repo3 cat -r 0 repo3/a | ||
Simon Sapin
|
r47190 | a | ||
Simon Sapin
|
r47189 | |||
Same with share-safe | ||||
$ echo "[format]" >> $HGRCPATH | ||||
$ echo "use-share-safe = True" >> $HGRCPATH | ||||
$ cd $TESTTMP | ||||
$ hg init repo4 | ||||
$ cd repo4 | ||||
$ echo a > a | ||||
$ hg commit -A -m'init' | ||||
adding a | ||||
$ cd .. | ||||
$ hg share repo4 repo5 | ||||
updating working directory | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
And check that basic rhg commands work with sharing | ||||
$ cd repo5 | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files | ||
Simon Sapin
|
r47191 | a | ||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg cat -r 0 a | ||
Simon Sapin
|
r47191 | a | ||
Simon Sapin
|
r47189 | |||
Simon Sapin
|
r47343 | The blackbox extension is supported | ||
$ echo "[extensions]" >> $HGRCPATH | ||||
$ echo "blackbox =" >> $HGRCPATH | ||||
$ echo "[blackbox]" >> $HGRCPATH | ||||
$ echo "maxsize = 1" >> $HGRCPATH | ||||
Simon Sapin
|
r47457 | $ $NO_FALLBACK rhg files > /dev/null | ||
Simon Sapin
|
r47343 | $ cat .hg/blackbox.log | ||
Arseniy Alekseyev
|
r50344 | ????-??-?? ??:??:??.??? * @d3873e73d99ef67873dac33fbcc66268d5d2b6f4 (*)> (rust) files exited 0 after * seconds (glob) | ||
Simon Sapin
|
r47343 | $ cat .hg/blackbox.log.1 | ||
Valentin Gatien-Baron
|
r49421 | ????-??-?? ??:??:??.??? * @d3873e73d99ef67873dac33fbcc66268d5d2b6f4 (*)> (rust) files (glob) | ||
Simon Sapin
|
r47343 | |||
Raphaël Gomès
|
r48891 | Subrepos are not supported | ||
$ touch .hgsub | ||||
$ $NO_FALLBACK rhg files | ||||
unsupported feature: subrepos (.hgsub is present) | ||||
[252] | ||||
$ rhg files | ||||
a | ||||
$ rm .hgsub | ||||
Raphaël Gomès
|
r49270 | |||
The `:required` extension suboptions are correctly ignored | ||||
$ echo "[extensions]" >> $HGRCPATH | ||||
$ echo "blackbox:required = yes" >> $HGRCPATH | ||||
$ rhg files | ||||
a | ||||
$ echo "*:required = yes" >> $HGRCPATH | ||||
$ rhg files | ||||
a | ||||
Raphaël Gomès
|
r49829 | |||
We can ignore all extensions at once | ||||
$ echo "[extensions]" >> $HGRCPATH | ||||
$ echo "thisextensionbetternotexist=" >> $HGRCPATH | ||||
$ echo "thisextensionbetternotexisteither=" >> $HGRCPATH | ||||
$ $NO_FALLBACK rhg files | ||||
unsupported feature: extensions: thisextensionbetternotexist, thisextensionbetternotexisteither (consider adding them to 'rhg.ignored-extensions' config) | ||||
[252] | ||||
$ echo "[rhg]" >> $HGRCPATH | ||||
$ echo "ignored-extensions=*" >> $HGRCPATH | ||||
$ $NO_FALLBACK rhg files | ||||
a | ||||