##// END OF EJS Templates
rhg: Add a `rhg.on-unsupported` configuration key...
rhg: Add a `rhg.on-unsupported` configuration key For now the two values are: * `abort-silent`: silently exit with code 252, the previous default behavior * `abort`: print an error message about what feature is not supported, then exit with code 252. Now the default. Differential Revision: https://phab.mercurial-scm.org/D10091

File last commit:

r47424:33f2d56a default
r47424:33f2d56a default
Show More
test-rhg.t
287 lines | 6.6 KiB | text/troff | Tads3Lexer
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 #require rust
Antoine Cezar
rhg: add harness tests for rhg files...
r46008 Define an rhg function that will only run if rhg exists
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 $ rhg() {
Simon Sapin
rhg: use a release-mode executable in tests...
r46845 > if [ -f "$RUNTESTDIR/../rust/target/release/rhg" ]; then
> "$RUNTESTDIR/../rust/target/release/rhg" "$@"
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 > else
> echo "skipped: Cannot find rhg. Try to run cargo build in rust/rhg."
> exit 80
> fi
> }
Antoine Cezar
rhg: add harness tests for rhg files...
r46008
Unimplemented command
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 $ rhg unimplemented-command
Simon Sapin
rhg: Add a `rhg.on-unsupported` configuration key...
r47424 unsupported feature: error: Found argument 'unimplemented-command' which wasn't expected, or isn't valid in this context
USAGE:
rhg [OPTIONS] <SUBCOMMAND>
For more information try --help
[252]
$ rhg unimplemented-command --config rhg.on-unsupported=abort-silent
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 [252]
Antoine Cezar
rhg: add harness tests for rhg files...
r46008
Finding root
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 $ rhg root
abort: no repository found in '$TESTTMP' (.hg not found)!
[255]
Antoine Cezar
rhg: add harness tests for rhg files...
r46008
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 $ hg init repository
$ cd repository
$ rhg root
$TESTTMP/repository
Antoine Cezar
rhg: add harness tests for rhg files...
r46008
Simon Sapin
rhg: add limited support for the `config` sub-command...
r47255 Reading and setting configuration
$ echo "[ui]" >> $HGRCPATH
$ echo "username = user1" >> $HGRCPATH
$ rhg config ui.username
user1
$ echo "[ui]" >> .hg/hgrc
$ echo "username = user2" >> .hg/hgrc
$ rhg config ui.username
user2
$ rhg --config ui.username=user3 config ui.username
user3
Antoine Cezar
rhg: add harness tests for rhg files...
r46008 Unwritable file descriptor
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 $ rhg root > /dev/full
abort: No space left on device (os error 28)
[255]
Antoine Cezar
rhg: add harness tests for rhg files...
r46008
Deleted repository
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 $ rm -rf `pwd`
$ rhg root
Simon Sapin
rhg: Simplify CommandError based on its use...
r47174 abort: $ENOENT$: current directory
Antoine Cezar
rhg: add a limited `rhg root` subcommand...
r45593 [255]
Antoine Cezar
rhg: add harness tests for rhg files...
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
$ rhg files
file1
file2
file3
Listing tracked files from subdirectory
$ mkdir -p path/to/directory
$ cd path/to/directory
$ rhg files
../../../file1
../../../file2
../../../file3
Listing tracked files through broken pipe
$ rhg files | head -n 1
../../../file1
Antoine Cezar
rhg: add a limited `rhg debugdata` subcommand...
r46100
Debuging data in inline index
$ cd $TESTTMP
$ rm -rf repository
$ hg init repository
$ cd repository
Simon Sapin
rhg: allow specifying a changeset ID prefix...
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
rhg: add a limited `rhg debugdata` subcommand...
r46100 > done
$ rhg debugdata -c 2
Simon Sapin
rhg: allow specifying a changeset ID prefix...
r46646 8d0267cb034247ebfa5ee58ce59e22e57a492297
Antoine Cezar
rhg: add a limited `rhg debugdata` subcommand...
r46100 test
0 0
Simon Sapin
rhg: allow specifying a changeset ID prefix...
r46646 file-3
Antoine Cezar
rhg: add a limited `rhg debugdata` subcommand...
r46100
Simon Sapin
rhg: allow specifying a changeset ID prefix...
r46646 Commit 3 (no-eol)
Antoine Cezar
rhg: add a limited `rhg debugdata` subcommand...
r46100 $ rhg debugdata -m 2
Simon Sapin
rhg: allow specifying a changeset ID prefix...
r46646 file-1\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
file-2\x005d9299349fc01ddd25d0070d149b124d8f10411e (esc)
file-3\x002661d26c649684b482d10f91960cc3db683c38b4 (esc)
Antoine cezar
rhg: strip copied files metadata from `cat` output...
r46406
Antoine cezar
rhg: add full node id support for `debugdata` command...
r46417 Debuging with full node id
$ rhg debugdata -c `hg log -r 0 -T '{node}'`
Simon Sapin
rhg: allow specifying a changeset ID prefix...
r46646 d1d1c679d3053e8926061b6f45ca52009f011e3f
Antoine cezar
rhg: add full node id support for `debugdata` command...
r46417 test
0 0
Simon Sapin
rhg: allow specifying a changeset ID prefix...
r46646 file-1
Antoine cezar
rhg: add full node id support for `debugdata` command...
r46417
Simon Sapin
rhg: allow specifying a changeset ID prefix...
r46646 Commit 1 (no-eol)
Specifying revisions by changeset ID
$ hg log -T '{node}\n'
c6ad58c44207b6ff8a4fbbca7045a5edaa7e908b
d654274993d0149eecc3cc03214f598320211900
f646af7e96481d3a5470b695cf30ad8e3ab6c575
cf8b83f14ead62b374b6e91a0e9303b85dfd9ed7
91c6f6e73e39318534dc415ea4e8a09c99cd74d6
6ae9681c6d30389694d8701faf24b583cf3ccafe
$ rhg files -r cf8b83
file-1
file-2
file-3
$ rhg cat -r cf8b83 file-2
2
$ rhg cat -r c file-2
Simon Sapin
rust: use NodePrefix::from_hex instead of hex::decode directly...
r46647 abort: ambiguous revision identifier c
Simon Sapin
rhg: allow specifying a changeset ID prefix...
r46646 [255]
Simon Sapin
rust: use NodePrefix::from_hex instead of hex::decode directly...
r46647 $ rhg cat -r d file-2
2
Antoine cezar
rhg: add full node id support for `debugdata` command...
r46417
Antoine cezar
rhg: strip copied files metadata from `cat` output...
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
$ rhg cat -r 0 original
original content
Cat copied file should not display copy metadata
$ hg copy original copy_of_original
$ hg commit -m "add copy of original"
$ rhg cat -r 1 copy_of_original
original content
Simon Sapin
rhg: add a `debugrequirements` subcommand...
r46535
Requirements
$ rhg debugrequirements
dotencode
fncache
generaldelta
revlogv1
sparserevlog
store
Simon Sapin
rhg: exit with relevant code for unsupported requirements...
r46549
$ echo indoor-pool >> .hg/requires
$ rhg files
Simon Sapin
rhg: Add a `rhg.on-unsupported` configuration key...
r47424 unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool
Simon Sapin
rhg: exit with relevant code for unsupported requirements...
r46549 [252]
$ rhg cat -r 1 copy_of_original
Simon Sapin
rhg: Add a `rhg.on-unsupported` configuration key...
r47424 unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool
Simon Sapin
rhg: exit with relevant code for unsupported requirements...
r46549 [252]
$ rhg debugrequirements
Simon Sapin
rhg: Add a `rhg.on-unsupported` configuration key...
r47424 unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool
Simon Sapin
rust: Fold find_root and check_requirements into Repo::find...
r47175 [252]
Simon Sapin
rhg: check that .hg/requires is ASCII...
r46550
$ echo -e '\xFF' >> .hg/requires
$ rhg debugrequirements
Simon Sapin
rhg: Simplify CommandError based on its use...
r47174 abort: corrupted repository: parse error in 'requires' file
Simon Sapin
rhg: check that .hg/requires is ASCII...
r46550 [255]
Simon Sapin
rhg: add a test with persistent-nodemap...
r46648
Persistent nodemap
$ cd $TESTTMP
$ rm -rf repository
$ hg init repository
$ cd repository
$ rhg debugrequirements | grep nodemap
[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
$ rhg files -r c3ae8dec9fad
of
$ cd $TESTTMP
$ rm -rf repository
$ hg --config format.use-persistent-nodemap=True init repository
$ cd repository
$ rhg debugrequirements | grep nodemap
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
rhg: use persistent nodemap when available...
r46706
Specifying revisions by changeset ID
Simon Sapin
rhg: add a test with persistent-nodemap...
r46648 $ rhg files -r c3ae8dec9fad
Simon Sapin
rhg: use persistent nodemap when available...
r46706 of
$ rhg cat -r c3ae8dec9fad of
r5000
Simon Sapin
rhg: Add basic test with a shared repository...
r47189
Crate a shared repository
$ echo "[extensions]" >> $HGRCPATH
$ echo "share = " >> $HGRCPATH
$ cd $TESTTMP
$ hg init repo1
Simon Sapin
rhg: Add support for -R and --repository command-line arguments...
r47253 $ echo a > repo1/a
$ hg -R repo1 commit -A -m'init'
Simon Sapin
rhg: Add basic test with a shared repository...
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
rhg: Add support for -R and --repository command-line arguments...
r47253 $ rhg files -R repo2
repo2/a
$ rhg -R repo2 cat -r 0 repo2/a
Simon Sapin
rhg: initial support for shared repositories...
r47190 a
Simon Sapin
rhg: Add basic test with a shared repository...
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
rhg: Add support for -R and --repository command-line arguments...
r47253 $ rhg files -R repo3
repo3/a
$ rhg -R repo3 cat -r 0 repo3/a
Simon Sapin
rhg: initial support for shared repositories...
r47190 a
Simon Sapin
rhg: Add basic test with a shared repository...
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
$ rhg files
Simon Sapin
rhg: add support for share-safe...
r47191 a
Simon Sapin
rhg: Add basic test with a shared repository...
r47189 $ rhg cat -r 0 a
Simon Sapin
rhg: add support for share-safe...
r47191 a
Simon Sapin
rhg: Add basic test with a shared repository...
r47189
Simon Sapin
rhg: Add support for the blackbox extension...
r47343 The blackbox extension is supported
$ echo "[extensions]" >> $HGRCPATH
$ echo "blackbox =" >> $HGRCPATH
$ echo "[blackbox]" >> $HGRCPATH
$ echo "maxsize = 1" >> $HGRCPATH
$ rhg files > /dev/null
$ cat .hg/blackbox.log
????/??/?? ??:??:??.??? * @d3873e73d99ef67873dac33fbcc66268d5d2b6f4 (*)> (rust) files exited 0 after 0.??? seconds (glob)
$ cat .hg/blackbox.log.1
????/??/?? ??:??:??.??? * @d3873e73d99ef67873dac33fbcc66268d5d2b6f4 (*)> (rust) files (glob)