Mercurial > hg
annotate tests/test-i18n.t @ 46667:93e9f448273c
rhg: Add support for automatic fallback to Python
`rhg` is a command-line application that can do a small subset of what
`hg` can. It is written entirely in Rust, which avoids the cost of starting
a Python interpreter and importing many Python modules.
In a script that runs many `hg` commands, this cost can add up.
However making users decide when to use `rhg` instead of `hg` is
not practical as we want the subset of supported functionality
to grow over time.
Instead we introduce "fallback" behavior where, when `rhg` encounters
something (a sub-command, a repository format, …) that is not implemented
in Rust-only, it does nothing but silently start a subprocess of
Python-based `hg` running the same command.
That way `rhg` becomes a drop-in replacement for `hg` that sometimes
goes faster. Whether Python is used should be an implementation detail
not apparent to users (other than through speed).
A new `fallback` value is added to the previously introduced
`rhg.on-unsupported` configuration key. When in this mode, the new
`rhg.fallback-executable` config is determine what command to use
to run a Python-based `hg`.
The previous `rhg.on-unsupported = abort-silent` configuration was designed
to let a wrapper script call `rhg` and then fall back to `hg` based on the
exit code. This is still available, but having fallback behavior built-in
in rhg might be easier for users instead of leaving that script "as an
exercise for the reader".
Using a subprocess like this is not idea, especially when `rhg` is to be
installed in `$PATH` as `hg`, since the other `hg.py` executable needs
to still be available… somewhere. Eventually this could be replaced
by using PyOxidizer to a have a single executable that embeds a Python
interpreter, but only starts it when needed.
Differential Revision: https://phab.mercurial-scm.org/D10093
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Mon, 01 Mar 2021 20:36:06 +0100 |
parents | 8939062597f0 |
children |
rev | line source |
---|---|
22046
7a9cbb315d84
tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents:
21024
diff
changeset
|
1 (Translations are optional) |
13442
bb107a31820e
test-i18n: make test conditional on msgfmt availability
Martin Geisler <mg@lazybytes.net>
parents:
13414
diff
changeset
|
2 |
26252
a3edce86f430
test-i18n: always run non gettext tests
timeless@mozdev.org
parents:
22046
diff
changeset
|
3 #if gettext no-outer-repo |
17015
73d20de5f30b
tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents:
16981
diff
changeset
|
4 |
13414 | 5 Test that translations are compiled and installed correctly. |
6 | |
7 Default encoding in tests is "ascii" and the translation is encoded | |
8 using the "replace" error handler: | |
9 | |
10 $ LANGUAGE=pt_BR hg tip | |
45906
95c4cca641f6
errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents:
39707
diff
changeset
|
11 abortado: n?o foi encontrado um reposit?rio em '$TESTTMP' (.hg n?o encontrado) |
45911
8939062597f0
errors: raise InputError on bad repo arguments
Martin von Zweigbergk <martinvonz@google.com>
parents:
45906
diff
changeset
|
12 [10] |
13414 | 13 |
21024
7731a2281cf0
spelling: fixes from spell checker
Mads Kiilerich <madski@unity3d.com>
parents:
20338
diff
changeset
|
14 Using a more accommodating encoding: |
13414 | 15 |
16 $ HGENCODING=UTF-8 LANGUAGE=pt_BR hg tip | |
45906
95c4cca641f6
errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents:
39707
diff
changeset
|
17 abortado: n\xc3\xa3o foi encontrado um reposit\xc3\xb3rio em '$TESTTMP' (.hg n\xc3\xa3o encontrado) (esc) |
45911
8939062597f0
errors: raise InputError on bad repo arguments
Martin von Zweigbergk <martinvonz@google.com>
parents:
45906
diff
changeset
|
18 [10] |
13414 | 19 |
20 Different encoding: | |
21 | |
22 $ HGENCODING=Latin-1 LANGUAGE=pt_BR hg tip | |
45906
95c4cca641f6
errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents:
39707
diff
changeset
|
23 abortado: n\xe3o foi encontrado um reposit\xf3rio em '$TESTTMP' (.hg n\xe3o encontrado) (esc) |
45911
8939062597f0
errors: raise InputError on bad repo arguments
Martin von Zweigbergk <martinvonz@google.com>
parents:
45906
diff
changeset
|
24 [10] |
16895
430714e2a876
help: test keyword search in translated text.
Olav Reinert <seroton10@gmail.com>
parents:
14920
diff
changeset
|
25 |
17015
73d20de5f30b
tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents:
16981
diff
changeset
|
26 #endif |
73d20de5f30b
tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents:
16981
diff
changeset
|
27 |
26252
a3edce86f430
test-i18n: always run non gettext tests
timeless@mozdev.org
parents:
22046
diff
changeset
|
28 #if gettext |
a3edce86f430
test-i18n: always run non gettext tests
timeless@mozdev.org
parents:
22046
diff
changeset
|
29 |
16895
430714e2a876
help: test keyword search in translated text.
Olav Reinert <seroton10@gmail.com>
parents:
14920
diff
changeset
|
30 Test keyword search in translated help text: |
430714e2a876
help: test keyword search in translated text.
Olav Reinert <seroton10@gmail.com>
parents:
14920
diff
changeset
|
31 |
30943
a0e4df5a4d5d
tests: update test-i18n.t to not depend on the pager extension
Augie Fackler <augie@google.com>
parents:
26252
diff
changeset
|
32 $ HGENCODING=UTF-8 LANGUAGE=de hg help -k Aktualisiert |
20338
b9e7af5bd5e5
i18n-de: update many fuzzy entries and translate some simple ones
Simon Heimberg <simohe@besonet.ch>
parents:
20152
diff
changeset
|
33 Themen: |
16895
430714e2a876
help: test keyword search in translated text.
Olav Reinert <seroton10@gmail.com>
parents:
14920
diff
changeset
|
34 |
30943
a0e4df5a4d5d
tests: update test-i18n.t to not depend on the pager extension
Augie Fackler <augie@google.com>
parents:
26252
diff
changeset
|
35 subrepos Unterarchive |
16895
430714e2a876
help: test keyword search in translated text.
Olav Reinert <seroton10@gmail.com>
parents:
14920
diff
changeset
|
36 |
30943
a0e4df5a4d5d
tests: update test-i18n.t to not depend on the pager extension
Augie Fackler <augie@google.com>
parents:
26252
diff
changeset
|
37 Befehle: |
16895
430714e2a876
help: test keyword search in translated text.
Olav Reinert <seroton10@gmail.com>
parents:
14920
diff
changeset
|
38 |
30943
a0e4df5a4d5d
tests: update test-i18n.t to not depend on the pager extension
Augie Fackler <augie@google.com>
parents:
26252
diff
changeset
|
39 pull Ruft \xc3\x84nderungen von der angegebenen Quelle ab (esc) |
a0e4df5a4d5d
tests: update test-i18n.t to not depend on the pager extension
Augie Fackler <augie@google.com>
parents:
26252
diff
changeset
|
40 update Aktualisiert das Arbeitsverzeichnis (oder wechselt die Version) |
16895
430714e2a876
help: test keyword search in translated text.
Olav Reinert <seroton10@gmail.com>
parents:
14920
diff
changeset
|
41 |
26252
a3edce86f430
test-i18n: always run non gettext tests
timeless@mozdev.org
parents:
22046
diff
changeset
|
42 #endif |
a3edce86f430
test-i18n: always run non gettext tests
timeless@mozdev.org
parents:
22046
diff
changeset
|
43 |
20152
84939b728749
i18n: add the tool to check Mercurial specific translation problems in *.po
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17015
diff
changeset
|
44 Check Mercurial specific translation problems in each *.po files, and |
84939b728749
i18n: add the tool to check Mercurial specific translation problems in *.po
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17015
diff
changeset
|
45 tool itself by doctest |
84939b728749
i18n: add the tool to check Mercurial specific translation problems in *.po
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17015
diff
changeset
|
46 |
84939b728749
i18n: add the tool to check Mercurial specific translation problems in *.po
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17015
diff
changeset
|
47 $ cd "$TESTDIR"/../i18n |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
36645
diff
changeset
|
48 $ "$PYTHON" check-translation.py *.po |
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
36645
diff
changeset
|
49 $ "$PYTHON" check-translation.py --doctest |
20152
84939b728749
i18n: add the tool to check Mercurial specific translation problems in *.po
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17015
diff
changeset
|
50 $ cd $TESTTMP |
34660
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
51 |
34688
a88166a4dce3
test-i18n: guard gettext test appropriately
Yuya Nishihara <yuya@tcha.org>
parents:
34660
diff
changeset
|
52 #if gettext |
a88166a4dce3
test-i18n: guard gettext test appropriately
Yuya Nishihara <yuya@tcha.org>
parents:
34660
diff
changeset
|
53 |
34660
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
54 Check i18n cache isn't reused after encoding change: |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
55 |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
56 $ cat > $TESTTMP/encodingchange.py << EOF |
36645
7bc33d677c0c
tests: fix various test-check-module-imports.t violations
Augie Fackler <augie@google.com>
parents:
34688
diff
changeset
|
57 > from mercurial.i18n import _ |
34660
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
58 > from mercurial import encoding, registrar |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
59 > cmdtable = {} |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
60 > command = registrar.command(cmdtable) |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
61 > @command(b'encodingchange', norepo=True) |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
62 > def encodingchange(ui): |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
63 > for encode in (b'ascii', b'UTF-8', b'ascii', b'UTF-8'): |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
64 > encoding.encoding = encode |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
65 > ui.write(b'%s\n' % _(b'(EXPERIMENTAL)')) |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
66 > EOF |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
67 |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
68 $ LANGUAGE=ja hg --config extensions.encodingchange=$TESTTMP/encodingchange.py encodingchange |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
69 (?????) |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
70 (\xe5\xae\x9f\xe9\xa8\x93\xe7\x9a\x84\xe5\xae\x9f\xe8\xa3\x85) (esc) |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
71 (?????) |
d00ec62d156f
i18n: cache translated messages per encoding
Yuya Nishihara <yuya@tcha.org>
parents:
32940
diff
changeset
|
72 (\xe5\xae\x9f\xe9\xa8\x93\xe7\x9a\x84\xe5\xae\x9f\xe8\xa3\x85) (esc) |
34688
a88166a4dce3
test-i18n: guard gettext test appropriately
Yuya Nishihara <yuya@tcha.org>
parents:
34660
diff
changeset
|
73 |
a88166a4dce3
test-i18n: guard gettext test appropriately
Yuya Nishihara <yuya@tcha.org>
parents:
34660
diff
changeset
|
74 #endif |