sapling/eden/scm/tests/test-basic.t
Jun Wu 62ba7447f6 ui: switch to Rust IO for default fout, ferr
Summary:
The Rust IO handles progress and streampager stuff. Switch to it so we don't
need to changing the `fout`, `ferr` when handling streampager in Python.

The chgserver logic is updated to just set raw fd 0, 1, 2 to update stdio,
since `fileno` is no longer exposed from Rust.

Manually tested the following commands, both without chg and with chg:
- lhg log -r . (no pager)
- lhg log (with streampager)
- lhg log --config pager.pager=less (with less pager)
- lhg commit (spawns pager)
- lhg debugprogress -s 100 --sleep 100 --with-output --pager=off (progress in stderr)
- lhg debugprogress -s 100 --sleep 100 --with-output --pager=on --config pager.interface=fullscreen (progress in streampager)
- lhg debugprogress -s 100 --sleep 100 --with-output --pager=on --config pager.pager='LESS= less' (progress is disabled with external pager)

Reviewed By: sfilipco

Differential Revision: D26612487

fbshipit-source-id: 8b4e36b614a0c080b93e41474f9a8fc33f890083
2021-02-23 22:33:48 -08:00

123 lines
2.4 KiB
Perl

#chg-compatible
$ disable treemanifest
Create a repository:
$ setconfig format.use-segmented-changelog=1
$ hg config
devel.all-warnings=true
devel.default-date=0 0
experimental.metalog=true
extensions.patchrmdir=
extensions.fsmonitor= (fsmonitor !)
extensions.treemanifest=!
format.use-zstore-commit-data=false
format.use-segmented-changelog=1
fsmonitor.detectrace=1 (fsmonitor !)
mutation.record=False
remotefilelog.reponame=reponame-default
remotefilelog.localdatarepack=True
remotefilelog.cachepath=$TESTTMP/default-hgcache
treemanifest.flatcompat=True
treemanifest.sendtrees=False
treemanifest.treeonly=False
treemanifest.rustmanifest=True
treemanifest.useruststore=True
ui.slash=True
ui.interactive=False
ui.mergemarkers=detailed
ui.promptecho=True
web.address=localhost
web\.ipv6=(?:True|False) (re)
workingcopy.enablerustwalker=True
$ hg init t
$ cd t
Prepare a changeset:
$ echo a > a
$ hg add a
$ hg status
A a
Writes to stdio succeed and fail appropriately
#if devfull
$ hg status 2>/dev/full
A a
$ hg status >/dev/full
abort: No space left on device* (glob)
[255]
#endif
Commands can succeed without a stdin
$ hg log -r tip 0<&-
commit: 000000000000
user:
date: Thu Jan 01 00:00:00 1970 +0000
#if devfull no-chg
$ hg status >/dev/full 2>&1
[1]
$ hg status ENOENT 2>/dev/full
[1]
#endif
#if devfull chg
$ hg status >/dev/full 2>&1
[255]
$ hg status ENOENT 2>/dev/full
[255]
#endif
$ hg commit -m test
This command is ancient:
$ hg history
commit: acb14030fe0a
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: test
Verify that updating to revision acb14030fe0a via commands.update() works properly
$ cat <<EOF > update_to_rev0.py
> from edenscm.mercurial import ui, hg, commands
> myui = ui.ui.load()
> repo = hg.repository(myui, path='.')
> commands.update(myui, repo, rev='acb14030fe0a')
> EOF
$ hg up null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg debugpython -- ./update_to_rev0.py
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg identify -n
72057594037927936
Poke around at hashes:
$ hg manifest --debug
b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a
$ hg cat a
a
Verify should succeed:
$ hg verify
verify for this repo format is not yet supported
At the end...
$ cd ..