annotate tests/test-username-newline.t @ 36563:5faeabb07cf5

debugcommands: support for triggering push protocol The mechanism for pushing to a remote is a bit more complicated than other commands. On SSH, we wait for a positive reply from the server before we start sending the bundle payload. This commit adds a mechanism to the "command" action in `hg debugwireproto` to trigger the "push protocol" and to specify a file whose contents should be submitted as the command payload. With this new feature, we implement a handful of tests for the "unbundle" command. We try to cover various server failures and hook/output scenarios so protocol behavior is as comprehensively tested as possible. Even with so much test output, we only cover bundle1 with Python hooks. There's still a lot of test coverage that needs to be implemented. But this is certainly a good start. Because there are so many new tests, we split these tests into their own test file. In order to make output deterministic, we need to disable the doublepipe primitive. We add an option to `hg debugwireproto` to do that. Because something in the bowels of the peer does a read of stderr, we still capture read I/O from stderr. So there is test coverage of what the server emits. The tests around I/O capture some wonkiness. For example, interleaved ui.write() and ui.write_err() calls are emitted in order. However, (presumably due to buffering), print() to sys.stdout and sys.stderr aren't in order. We currently only test bundle1 because bundle2 is substantially harder to test because it is more complicated (the server responds with a stream containing a bundle2 instead of a frame). Differential Revision: https://phab.mercurial-scm.org/D2471
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 26 Feb 2018 18:01:13 -0800
parents 5ac845ca059a
children 95c4cca641f6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
1 $ hg init
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
2 $ touch a
7035
9d023ef7b467 forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff changeset
3
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
4 $ unset HGUSER
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
5 $ echo "[ui]" >> .hg/hgrc
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
6 $ echo "username= foo" >> .hg/hgrc
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
7 $ echo " bar1" >> .hg/hgrc
7035
9d023ef7b467 forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff changeset
8
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
9 $ hg ci -Am m
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
10 adding a
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
11 abort: username 'foo\nbar1' contains a newline
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
12
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12301
diff changeset
13 [255]
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
14 $ rm .hg/hgrc
7035
9d023ef7b467 forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff changeset
15
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
16 $ HGUSER=`(echo foo; echo bar2)` hg ci -Am m
33616
5ac845ca059a commit: don't let failed commit with --addremove update dirstate (issue5645)
Martin von Zweigbergk <martinvonz@google.com>
parents: 12346
diff changeset
17 adding a
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
18 abort: username 'foo\nbar2' contains a newline
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
19
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12301
diff changeset
20 [255]
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
21 $ hg ci -Am m -u "`(echo foo; echo bar3)`"
33616
5ac845ca059a commit: don't let failed commit with --addremove update dirstate (issue5645)
Martin von Zweigbergk <martinvonz@google.com>
parents: 12346
diff changeset
22 adding a
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
23 transaction abort!
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
24 rollback completed
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
25 abort: username 'foo\nbar3' contains a newline!
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12301
diff changeset
26 [255]
7035
9d023ef7b467 forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff changeset
27