test-basic.t
260 lines
| 5.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-basic.t
Matt Mackall
|
r11742 | Create a repository: | ||
Gregory Szorc
|
r37360 | #if no-extraextensions | ||
Matt Mackall
|
r20608 | $ hg config | ||
r48576 | chgserver.idletimeout=60 | |||
Pierre-Yves David
|
r25290 | devel.all-warnings=true | ||
r32410 | devel.default-date=0 0 | |||
FUJIWARA Katsunori
|
r33426 | extensions.fsmonitor= (fsmonitor !) | ||
r49523 | format.use-dirstate-v2=1 (dirstate-v2 !) | |||
Matt Harbison
|
r35394 | largefiles.usercache=$TESTTMP/.cache/largefiles | ||
lfs.usercache=$TESTTMP/.cache/lfs | ||||
Matt Mackall
|
r20608 | ui.slash=True | ||
ui.interactive=False | ||||
Martin von Zweigbergk
|
r46430 | ui.detailed-exit-code=True | ||
Boris Feld
|
r40506 | ui.merge=internal:merge | ||
FUJIWARA Katsunori
|
r21918 | ui.mergemarkers=detailed | ||
Yuya Nishihara
|
r23053 | ui.promptecho=True | ||
Valentin Gatien-Baron
|
r48731 | ui.ssh=* (glob) | ||
r46636 | ui.timeout.warn=15 | |||
Jun Wu
|
r31009 | web.address=localhost | ||
Jun Wu
|
r31010 | web\.ipv6=(?:True|False) (re) | ||
Gregory Szorc
|
r37027 | web.server-header=testing stub value | ||
Gregory Szorc
|
r37360 | #endif | ||
Martin Geisler
|
r13956 | $ hg init t | ||
Matt Mackall
|
r11742 | $ cd t | ||
Bryan O'Sullivan
|
r31964 | Prepare a changeset: | ||
Matt Mackall
|
r11742 | |||
$ echo a > a | ||||
$ hg add a | ||||
Bryan O'Sullivan
|
r31964 | |||
$ hg status | ||||
A a | ||||
Writes to stdio succeed and fail appropriately | ||||
#if devfull | ||||
$ hg status 2>/dev/full | ||||
A a | ||||
$ hg status >/dev/full | ||||
Simon Sapin
|
r49164 | abort: No space left on device* (glob) | ||
Bryan O'Sullivan
|
r31964 | [255] | ||
Saurabh Singh
|
r34449 | #endif | ||
Bryan O'Sullivan
|
r31964 | |||
Gregory Szorc
|
r35671 | #if devfull | ||
Saurabh Singh
|
r34449 | $ hg status >/dev/full 2>&1 | ||
[255] | ||||
$ hg status ENOENT 2>/dev/full | ||||
[255] | ||||
#endif | ||||
Yuya Nishihara
|
r46791 | On Python 3, stdio may be None: | ||
$ hg debuguiprompt --config ui.interactive=true 0<&- | ||||
Raphaël Gomès
|
r49117 | abort: Bad file descriptor (no-rhg !) | ||
abort: response expected (rhg !) | ||||
Yuya Nishihara
|
r46791 | [255] | ||
$ hg version -q 0<&- | ||||
Mercurial Distributed SCM * (glob) | ||||
Raphaël Gomès
|
r49117 | #if py3 no-rhg | ||
Yuya Nishihara
|
r46791 | $ hg version -q 1>&- | ||
abort: Bad file descriptor | ||||
[255] | ||||
#else | ||||
$ hg version -q 1>&- | ||||
#endif | ||||
$ hg unknown -q 1>&- | ||||
hg: unknown command 'unknown' | ||||
(did you mean debugknown?) | ||||
Martin von Zweigbergk
|
r46888 | [10] | ||
Yuya Nishihara
|
r46791 | |||
$ hg version -q 2>&- | ||||
Mercurial Distributed SCM * (glob) | ||||
$ hg unknown -q 2>&- | ||||
Martin von Zweigbergk
|
r46888 | [10] | ||
Yuya Nishihara
|
r46791 | |||
Martin Geisler
|
r12156 | $ hg commit -m test | ||
Matt Mackall
|
r11742 | |||
This command is ancient: | ||||
$ hg history | ||||
Martin Geisler
|
r12156 | changeset: 0:acb14030fe0a | ||
Matt Mackall
|
r11742 | tag: tip | ||
user: test | ||||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
Matt Mackall
|
r11742 | summary: test | ||
Mark Drago
|
r13568 | Verify that updating to revision 0 via commands.update() works properly | ||
$ cat <<EOF > update_to_rev0.py | ||||
Matt Harbison
|
r40405 | > from mercurial import commands, hg, ui as uimod | ||
> myui = uimod.ui.load() | ||||
Yuya Nishihara
|
r36656 | > repo = hg.repository(myui, path=b'.') | ||
Martin von Zweigbergk
|
r38499 | > commands.update(myui, repo, rev=b"0") | ||
Mark Drago
|
r13568 | > EOF | ||
$ hg up null | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
Matt Harbison
|
r39743 | $ "$PYTHON" ./update_to_rev0.py | ||
Mark Drago
|
r13568 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
$ hg identify -n | ||||
0 | ||||
Mads Kiilerich
|
r17346 | |||
Mark Drago
|
r13568 | |||
Matt Mackall
|
r11742 | Poke around at hashes: | ||
$ hg manifest --debug | ||||
b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a | ||||
$ hg cat a | ||||
a | ||||
Verify should succeed: | ||||
$ hg verify | ||||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
Raphaël Gomès
|
r50721 | checking dirstate | ||
Meirambek Omyrzak
|
r39525 | checked 1 changesets with 1 changes to 1 files | ||
Matt Mackall
|
r11742 | |||
Yuya Nishihara
|
r36261 | Repository root: | ||
$ hg root | ||||
$TESTTMP/t | ||||
$ hg log -l1 -T '{reporoot}\n' | ||||
$TESTTMP/t | ||||
Yuya Nishihara
|
r42610 | $ hg root -Tjson | sed 's|\\\\|\\|g' | ||
[ | ||||
{ | ||||
Yuya Nishihara
|
r42611 | "hgpath": "$TESTTMP/t/.hg", | ||
"reporoot": "$TESTTMP/t", | ||||
"storepath": "$TESTTMP/t/.hg/store" | ||||
Yuya Nishihara
|
r42610 | } | ||
] | ||||
Yuya Nishihara
|
r36261 | |||
Matt Mackall
|
r11742 | At the end... | ||
Mads Kiilerich
|
r16913 | |||
$ cd .. | ||||
Yuya Nishihara
|
r40580 | |||
Status message redirection: | ||||
$ hg init empty | ||||
status messages are sent to stdout by default: | ||||
$ hg outgoing -R t empty -Tjson 2>/dev/null | ||||
comparing with empty | ||||
searching for changes | ||||
[ | ||||
{ | ||||
"bookmarks": [], | ||||
"branch": "default", | ||||
"date": [0, 0], | ||||
"desc": "test", | ||||
"node": "acb14030fe0a21b60322c440ad2d20cf7685a376", | ||||
"parents": ["0000000000000000000000000000000000000000"], | ||||
"phase": "draft", | ||||
"rev": 0, | ||||
"tags": ["tip"], | ||||
"user": "test" | ||||
} | ||||
] | ||||
which can be configured to send to stderr, so the output wouldn't be | ||||
interleaved: | ||||
$ cat <<'EOF' >> "$HGRCPATH" | ||||
> [ui] | ||||
> message-output = stderr | ||||
> EOF | ||||
$ hg outgoing -R t empty -Tjson 2>/dev/null | ||||
[ | ||||
{ | ||||
"bookmarks": [], | ||||
"branch": "default", | ||||
"date": [0, 0], | ||||
"desc": "test", | ||||
"node": "acb14030fe0a21b60322c440ad2d20cf7685a376", | ||||
"parents": ["0000000000000000000000000000000000000000"], | ||||
"phase": "draft", | ||||
"rev": 0, | ||||
"tags": ["tip"], | ||||
"user": "test" | ||||
} | ||||
] | ||||
$ hg outgoing -R t empty -Tjson >/dev/null | ||||
comparing with empty | ||||
searching for changes | ||||
this option should be turned off by HGPLAIN= since it may break scripting use: | ||||
$ HGPLAIN= hg outgoing -R t empty -Tjson 2>/dev/null | ||||
comparing with empty | ||||
searching for changes | ||||
[ | ||||
{ | ||||
"bookmarks": [], | ||||
"branch": "default", | ||||
"date": [0, 0], | ||||
"desc": "test", | ||||
"node": "acb14030fe0a21b60322c440ad2d20cf7685a376", | ||||
"parents": ["0000000000000000000000000000000000000000"], | ||||
"phase": "draft", | ||||
"rev": 0, | ||||
"tags": ["tip"], | ||||
"user": "test" | ||||
} | ||||
] | ||||
but still overridden by --config: | ||||
$ HGPLAIN= hg outgoing -R t empty -Tjson --config ui.message-output=stderr \ | ||||
> 2>/dev/null | ||||
[ | ||||
{ | ||||
"bookmarks": [], | ||||
"branch": "default", | ||||
"date": [0, 0], | ||||
"desc": "test", | ||||
"node": "acb14030fe0a21b60322c440ad2d20cf7685a376", | ||||
"parents": ["0000000000000000000000000000000000000000"], | ||||
"phase": "draft", | ||||
"rev": 0, | ||||
"tags": ["tip"], | ||||
"user": "test" | ||||
} | ||||
] | ||||
Invalid ui.message-output option: | ||||
$ hg log -R t --config ui.message-output=bad | ||||
abort: invalid ui.message-output destination: bad | ||||
[255] | ||||
Underlying message streams should be updated when ui.fout/ferr are set: | ||||
$ cat <<'EOF' > capui.py | ||||
Gregory Szorc
|
r49728 | > import io | ||
> from mercurial import registrar | ||||
Yuya Nishihara
|
r40580 | > cmdtable = {} | ||
> command = registrar.command(cmdtable) | ||||
> @command(b'capui', norepo=True) | ||||
> def capui(ui): | ||||
> out = ui.fout | ||||
Gregory Szorc
|
r49728 | > ui.fout = io.BytesIO() | ||
Yuya Nishihara
|
r40580 | > ui.status(b'status\n') | ||
Gregory Szorc
|
r49728 | > ui.ferr = io.BytesIO() | ||
Yuya Nishihara
|
r40580 | > ui.warn(b'warn\n') | ||
> out.write(b'stdout: %s' % ui.fout.getvalue()) | ||||
> out.write(b'stderr: %s' % ui.ferr.getvalue()) | ||||
> EOF | ||||
$ hg --config extensions.capui=capui.py --config ui.message-output=stdio capui | ||||
stdout: status | ||||
stderr: warn | ||||