Mercurial > hg-stable
changeset 46736:a6553ba1c598
tests: Enable rhg fallback to Python by default in tests
This premise of `run-tests.py --rhg`: fallback should make
`rhg` behave the same as `hg`, except faster in some cases.
To test run the whole test suite with installed `rhg` as `hg`
and with fallback enabled.
Differential Revision: https://phab.mercurial-scm.org/D10187
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Tue, 02 Mar 2021 22:42:10 +0100 |
parents | 08a35cec14d4 |
children | 78e6700ab009 |
files | tests/run-tests.py tests/test-rhg.t |
diffstat | 2 files changed, 53 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/run-tests.py Fri Mar 12 18:45:32 2021 +0100 +++ b/tests/run-tests.py Tue Mar 02 22:42:10 2021 +0100 @@ -967,7 +967,6 @@ slowtimeout=None, usechg=False, chgdebug=False, - rhg_fallback_exe=None, useipv6=False, ): """Create a test from parameters. @@ -1025,7 +1024,6 @@ self._hgcommand = hgcommand or b'hg' self._usechg = usechg self._chgdebug = chgdebug - self._rhg_fallback_exe = rhg_fallback_exe self._useipv6 = useipv6 self._aborted = False @@ -1508,12 +1506,6 @@ hgrc.write(b'ipv6 = %r\n' % self._useipv6) hgrc.write(b'server-header = testing stub value\n') - if self._rhg_fallback_exe: - hgrc.write(b'[rhg]\n') - hgrc.write( - b'fallback-executable = %s\n' % self._rhg_fallback_exe - ) - for opt in self._extraconfigopts: section, key = _sys2bytes(opt).split(b'.', 1) assert b'=' in key, ( @@ -2999,7 +2991,6 @@ self._coveragefile = None self._createdfiles = [] self._hgcommand = None - self._rhg_fallback_exe = None self._hgpath = None self._portoffset = 0 self._ports = {} @@ -3140,10 +3131,17 @@ chgbindir = os.path.dirname(os.path.realpath(self.options.with_chg)) self._hgcommand = os.path.basename(self.options.with_chg) - # set fallback executable path, then replace "hg" command by "rhg" + # configure fallback and replace "hg" command by "rhg" rhgbindir = self._bindir if self.options.rhg or self.options.with_rhg: - self._rhg_fallback_exe = os.path.join(self._bindir, self._hgcommand) + # Affects configuration. Alternatives would be setting configuration through + # `$HGRCPATH` but some tests override that, or changing `_hgcommand` to include + # `--config` but that disrupts tests that print command lines and check expected + # output. + osenvironb[b'RHG_ON_UNSUPPORTED'] = b'fallback' + osenvironb[b'RHG_FALLBACK_EXECUTABLE'] = os.path.join( + self._bindir, self._hgcommand + ) if self.options.rhg: self._hgcommand = b'rhg' elif self.options.with_rhg: @@ -3477,7 +3475,6 @@ hgcommand=self._hgcommand, usechg=bool(self.options.with_chg or self.options.chg), chgdebug=self.options.chg_debug, - rhg_fallback_exe=self._rhg_fallback_exe, useipv6=useipv6, **kwds )
--- a/tests/test-rhg.t Fri Mar 12 18:45:32 2021 +0100 +++ b/tests/test-rhg.t Tue Mar 02 22:42:10 2021 +0100 @@ -11,8 +11,10 @@ > fi > } + $ NO_FALLBACK="env RHG_ON_UNSUPPORTED=abort" + Unimplemented command - $ rhg unimplemented-command + $ $NO_FALLBACK rhg unimplemented-command unsupported feature: error: Found argument 'unimplemented-command' which wasn't expected, or isn't valid in this context USAGE: @@ -25,35 +27,35 @@ [252] Finding root - $ rhg root + $ $NO_FALLBACK rhg root abort: no repository found in '$TESTTMP' (.hg not found)! [255] $ hg init repository $ cd repository - $ rhg root + $ $NO_FALLBACK rhg root $TESTTMP/repository Reading and setting configuration $ echo "[ui]" >> $HGRCPATH $ echo "username = user1" >> $HGRCPATH - $ rhg config ui.username + $ $NO_FALLBACK rhg config ui.username user1 $ echo "[ui]" >> .hg/hgrc $ echo "username = user2" >> .hg/hgrc - $ rhg config ui.username + $ $NO_FALLBACK rhg config ui.username user2 - $ rhg --config ui.username=user3 config ui.username + $ $NO_FALLBACK rhg --config ui.username=user3 config ui.username user3 Unwritable file descriptor - $ rhg root > /dev/full + $ $NO_FALLBACK rhg root > /dev/full abort: No space left on device (os error 28) [255] Deleted repository $ rm -rf `pwd` - $ rhg root + $ $NO_FALLBACK rhg root abort: $ENOENT$: current directory [255] @@ -68,7 +70,7 @@ > hg commit -m "commit $i" -q Listing tracked files from root - $ rhg files + $ $NO_FALLBACK rhg files file1 file2 file3 @@ -76,13 +78,13 @@ Listing tracked files from subdirectory $ mkdir -p path/to/directory $ cd path/to/directory - $ rhg files + $ $NO_FALLBACK rhg files ../../../file1 ../../../file2 ../../../file3 Listing tracked files through broken pipe - $ rhg files | head -n 1 + $ $NO_FALLBACK rhg files | head -n 1 ../../../file1 Debuging data in inline index @@ -95,20 +97,20 @@ > hg add file-$i > hg commit -m "Commit $i" -q > done - $ rhg debugdata -c 2 + $ $NO_FALLBACK rhg debugdata -c 2 8d0267cb034247ebfa5ee58ce59e22e57a492297 test 0 0 file-3 Commit 3 (no-eol) - $ rhg debugdata -m 2 + $ $NO_FALLBACK rhg debugdata -m 2 file-1\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc) file-2\x005d9299349fc01ddd25d0070d149b124d8f10411e (esc) file-3\x002661d26c649684b482d10f91960cc3db683c38b4 (esc) Debuging with full node id - $ rhg debugdata -c `hg log -r 0 -T '{node}'` + $ $NO_FALLBACK rhg debugdata -c `hg log -r 0 -T '{node}'` d1d1c679d3053e8926061b6f45ca52009f011e3f test 0 0 @@ -124,16 +126,16 @@ cf8b83f14ead62b374b6e91a0e9303b85dfd9ed7 91c6f6e73e39318534dc415ea4e8a09c99cd74d6 6ae9681c6d30389694d8701faf24b583cf3ccafe - $ rhg files -r cf8b83 + $ $NO_FALLBACK rhg files -r cf8b83 file-1 file-2 file-3 - $ rhg cat -r cf8b83 file-2 + $ $NO_FALLBACK rhg cat -r cf8b83 file-2 2 - $ rhg cat -r c file-2 + $ $NO_FALLBACK rhg cat -r c file-2 abort: ambiguous revision identifier c [255] - $ rhg cat -r d file-2 + $ $NO_FALLBACK rhg cat -r d file-2 2 Cat files @@ -144,37 +146,36 @@ $ echo "original content" > original $ hg add original $ hg commit -m "add original" original - $ rhg cat -r 0 original + $ $NO_FALLBACK 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 + $ $NO_FALLBACK rhg cat -r 1 copy_of_original original content Fallback to Python - $ rhg cat original + $ $NO_FALLBACK rhg cat original unsupported feature: `rhg cat` without `--rev` / `-r` [252] - $ FALLBACK="--config rhg.on-unsupported=fallback" - $ rhg cat original $FALLBACK + $ rhg cat original original content - $ rhg cat original $FALLBACK --config rhg.fallback-executable=false + $ rhg cat original --config rhg.fallback-executable=false [1] - $ rhg cat original $FALLBACK --config rhg.fallback-executable=hg-non-existent + $ rhg cat original --config rhg.fallback-executable=hg-non-existent tried to fall back to a 'hg-non-existent' sub-process but got error $ENOENT$ unsupported feature: `rhg cat` without `--rev` / `-r` [252] - $ rhg cat original $FALLBACK --config rhg.fallback-executable="$RHG" + $ rhg cat original --config rhg.fallback-executable="$RHG" Blocking recursive fallback. The 'rhg.fallback-executable = */rust/target/release/rhg' config points to `rhg` itself. (glob) unsupported feature: `rhg cat` without `--rev` / `-r` [252] Requirements - $ rhg debugrequirements + $ $NO_FALLBACK rhg debugrequirements dotencode fncache generaldelta @@ -183,20 +184,20 @@ store $ echo indoor-pool >> .hg/requires - $ rhg files + $ $NO_FALLBACK rhg files unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool [252] - $ rhg cat -r 1 copy_of_original + $ $NO_FALLBACK rhg cat -r 1 copy_of_original unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool [252] - $ rhg debugrequirements + $ $NO_FALLBACK rhg debugrequirements unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool [252] $ echo -e '\xFF' >> .hg/requires - $ rhg debugrequirements + $ $NO_FALLBACK rhg debugrequirements abort: corrupted repository: parse error in 'requires' file [255] @@ -205,7 +206,7 @@ $ rm -rf repository $ hg init repository $ cd repository - $ rhg debugrequirements | grep nodemap + $ $NO_FALLBACK rhg debugrequirements | grep nodemap [1] $ hg debugbuilddag .+5000 --overwritten-file --config "storage.revlog.nodemap.mode=warn" $ hg id -r tip @@ -213,14 +214,14 @@ $ ls .hg/store/00changelog* .hg/store/00changelog.d .hg/store/00changelog.i - $ rhg files -r c3ae8dec9fad + $ $NO_FALLBACK 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 + $ $NO_FALLBACK rhg debugrequirements | grep nodemap persistent-nodemap $ hg debugbuilddag .+5000 --overwritten-file --config "storage.revlog.nodemap.mode=warn" $ hg id -r tip @@ -232,9 +233,9 @@ .hg/store/00changelog.n Specifying revisions by changeset ID - $ rhg files -r c3ae8dec9fad + $ $NO_FALLBACK rhg files -r c3ae8dec9fad of - $ rhg cat -r c3ae8dec9fad of + $ $NO_FALLBACK rhg cat -r c3ae8dec9fad of r5000 Crate a shared repository @@ -254,9 +255,9 @@ And check that basic rhg commands work with sharing - $ rhg files -R repo2 + $ $NO_FALLBACK rhg files -R repo2 repo2/a - $ rhg -R repo2 cat -r 0 repo2/a + $ $NO_FALLBACK rhg -R repo2 cat -r 0 repo2/a a Same with relative sharing @@ -265,9 +266,9 @@ updating working directory 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ rhg files -R repo3 + $ $NO_FALLBACK rhg files -R repo3 repo3/a - $ rhg -R repo3 cat -r 0 repo3/a + $ $NO_FALLBACK rhg -R repo3 cat -r 0 repo3/a a Same with share-safe @@ -290,9 +291,9 @@ And check that basic rhg commands work with sharing $ cd repo5 - $ rhg files + $ $NO_FALLBACK rhg files a - $ rhg cat -r 0 a + $ $NO_FALLBACK rhg cat -r 0 a a The blackbox extension is supported @@ -301,7 +302,7 @@ $ echo "blackbox =" >> $HGRCPATH $ echo "[blackbox]" >> $HGRCPATH $ echo "maxsize = 1" >> $HGRCPATH - $ rhg files > /dev/null + $ $NO_FALLBACK rhg files > /dev/null $ cat .hg/blackbox.log ????/??/?? ??:??:??.??? * @d3873e73d99ef67873dac33fbcc66268d5d2b6f4 (*)> (rust) files exited 0 after 0.??? seconds (glob) $ cat .hg/blackbox.log.1