serve: make tests compatible with chg
chg only supports 'hg serve' when the options to the serve command
follow the 'hg serve'. For example, 'hg -R <repo> serve ..' is unsupported.
This leads to issues with chg running for the following tests:
- test-bundle2-exchange.t
- test-clone-uncompressed.t
- test-hgweb-csp.t
- test-http-bad-server.t
- test-http-bundle1.t
- test-http-protocol.t
- test-http.t
There was an effort made earlier to fix this issue for chg and the tests were
fixed to confirm to the compatible pattern. But the new tests did not take care
of the same and hence, fail. Hopefully, there will be continuous build setup
for chg after all tests are made compatible with chg so that we can avoid such
issues.
Test Plan:
Ran the aforementioned tests with and without '--chg' option.
Differential Revision: https://phab.mercurial-scm.org/D946
--- a/tests/test-bundle2-exchange.t Sun Oct 01 12:10:48 2017 -0400
+++ b/tests/test-bundle2-exchange.t Wed Oct 04 18:39:26 2017 -0700
@@ -1029,7 +1029,7 @@
> [server]
> bundle1 = false
> EOF
- $ hg -R bundle2onlyserver serve -p $HGPORT -d --pid-file=hg.pid
+ $ hg serve -R bundle2onlyserver -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
$ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT not-bundle2
requesting all changes
@@ -1053,7 +1053,7 @@
> [server]
> bundle1gd = false
> EOF
- $ hg -R bundle2onlyserver serve -p $HGPORT -d --pid-file=hg.pid
+ $ hg serve -R bundle2onlyserver -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
$ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
--- a/tests/test-clone-uncompressed.t Sun Oct 01 12:10:48 2017 -0400
+++ b/tests/test-clone-uncompressed.t Wed Oct 04 18:39:26 2017 -0700
@@ -74,7 +74,7 @@
Streaming of secrets can be overridden by server config
$ cd server
- $ hg --config server.uncompressedallowsecret=true serve -p $HGPORT -d --pid-file=hg.pid
+ $ hg serve --config server.uncompressedallowsecret=true -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid > $DAEMON_PIDS
$ cd ..
@@ -90,7 +90,7 @@
Verify interaction between preferuncompressed and secret presence
$ cd server
- $ hg --config server.preferuncompressed=true serve -p $HGPORT -d --pid-file=hg.pid
+ $ hg serve --config server.preferuncompressed=true -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid > $DAEMON_PIDS
$ cd ..
@@ -106,7 +106,7 @@
Clone not allowed when full bundles disabled and can't serve secrets
$ cd server
- $ hg --config server.disablefullbundle=true serve -p $HGPORT -d --pid-file=hg.pid
+ $ hg serve --config server.disablefullbundle=true -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid > $DAEMON_PIDS
$ cd ..
@@ -154,7 +154,7 @@
$ touch repo/f1
$ $TESTDIR/seq.py 50000 > repo/f2
$ hg -R repo ci -Aqm "0"
- $ hg -R repo serve -p $HGPORT1 -d --pid-file=hg.pid --config extensions.delayer=delayer.py
+ $ hg serve -R repo -p $HGPORT1 -d --pid-file=hg.pid --config extensions.delayer=delayer.py
$ cat hg.pid >> $DAEMON_PIDS
clone while modifying the repo between stating file with write lock and
--- a/tests/test-hgweb-csp.t Sun Oct 01 12:10:48 2017 -0400
+++ b/tests/test-hgweb-csp.t Wed Oct 04 18:39:26 2017 -0700
@@ -110,7 +110,7 @@
$ killdaemons.py
- $ hg -R repo1 serve -p $HGPORT -d --pid-file=hg.pid --config "web.csp=image-src 'self'; script-src https://example.com/ 'nonce-%nonce%'"
+ $ hg serve -R repo1 -p $HGPORT -d --pid-file=hg.pid --config "web.csp=image-src 'self'; script-src https://example.com/ 'nonce-%nonce%'"
$ cat hg.pid > $DAEMON_PIDS
static page sends CSP
--- a/tests/test-http-bad-server.t Sun Oct 01 12:10:48 2017 -0400
+++ b/tests/test-http-bad-server.t Wed Oct 04 18:39:26 2017 -0700
@@ -32,7 +32,7 @@
Failure to accept() socket should result in connection related error message
- $ hg --config badserver.closebeforeaccept=true serve -p $HGPORT -d --pid-file=hg.pid
+ $ hg serve --config badserver.closebeforeaccept=true -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -47,7 +47,7 @@
Failure immediately after accept() should yield connection related error message
- $ hg --config badserver.closeafteraccept=true serve -p $HGPORT -d --pid-file=hg.pid
+ $ hg serve --config badserver.closeafteraccept=true -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid > $DAEMON_PIDS
TODO: this usually outputs good results, but sometimes emits abort:
@@ -67,7 +67,7 @@
Failure to read all bytes in initial HTTP request should yield connection related error message
- $ hg --config badserver.closeafterrecvbytes=1 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeafterrecvbytes=1 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -84,7 +84,7 @@
Same failure, but server reads full HTTP request line
- $ hg --config badserver.closeafterrecvbytes=40 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeafterrecvbytes=40 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
abort: error: bad HTTP status line: ''
@@ -101,7 +101,7 @@
Failure on subsequent HTTP request on the same socket (cmd?batch)
- $ hg --config badserver.closeafterrecvbytes=210 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeafterrecvbytes=210 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
abort: error: bad HTTP status line: ''
@@ -139,7 +139,7 @@
Failure to read getbundle HTTP request
- $ hg --config badserver.closeafterrecvbytes=292 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeafterrecvbytes=292 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
requesting all changes
@@ -196,7 +196,7 @@
Now do a variation using POST to send arguments
- $ hg --config experimental.httppostargs=true --config badserver.closeafterrecvbytes=315 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config experimental.httppostargs=true --config badserver.closeafterrecvbytes=315 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -247,7 +247,7 @@
Server sends a single character from the HTTP response line
- $ hg --config badserver.closeaftersendbytes=1 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=1 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -271,7 +271,7 @@
Server sends an incomplete capabilities response body
- $ hg --config badserver.closeaftersendbytes=180 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=180 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -301,7 +301,7 @@
Server sends incomplete headers for batch request
- $ hg --config badserver.closeaftersendbytes=695 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=695 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
TODO this output is horrible
@@ -350,12 +350,17 @@
Server sends an incomplete HTTP response body to batch request
- $ hg --config badserver.closeaftersendbytes=760 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=760 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
TODO client spews a stack due to uncaught ValueError in batch.results()
+#if no-chg
$ hg clone http://localhost:$HGPORT/ clone 2> /dev/null
[1]
+#else
+ $ hg clone http://localhost:$HGPORT/ clone 2> /dev/null
+ [255]
+#endif
$ killdaemons.py $DAEMON_PIDS
@@ -395,7 +400,7 @@
Server sends incomplete headers for getbundle response
- $ hg --config badserver.closeaftersendbytes=895 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=895 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
TODO this output is terrible
@@ -461,7 +466,7 @@
Server sends empty HTTP body for getbundle
- $ hg --config badserver.closeaftersendbytes=933 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=933 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -524,7 +529,7 @@
Server sends partial compression string
- $ hg --config badserver.closeaftersendbytes=945 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=945 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -589,7 +594,7 @@
Server sends partial bundle2 header magic
- $ hg --config badserver.closeaftersendbytes=954 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=954 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -613,7 +618,7 @@
Server sends incomplete bundle2 stream params length
- $ hg --config badserver.closeaftersendbytes=963 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=963 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -638,7 +643,7 @@
Servers stops after bundle2 stream params header
- $ hg --config badserver.closeaftersendbytes=966 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=966 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -663,7 +668,7 @@
Server stops sending after bundle2 part header length
- $ hg --config badserver.closeaftersendbytes=975 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=975 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -689,7 +694,7 @@
Server stops sending after bundle2 part header
- $ hg --config badserver.closeaftersendbytes=1022 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=1022 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -719,7 +724,7 @@
Server stops after bundle2 part payload chunk size
- $ hg --config badserver.closeaftersendbytes=1031 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=1031 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -750,7 +755,7 @@
Server stops sending in middle of bundle2 payload chunk
- $ hg --config badserver.closeaftersendbytes=1504 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=1504 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -782,7 +787,7 @@
Server stops sending after 0 length payload chunk size
- $ hg --config badserver.closeaftersendbytes=1513 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=1513 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -819,7 +824,7 @@
Server stops sending after 0 part bundle part header (indicating end of bundle2 payload)
This is before the 0 size chunked transfer part that signals end of HTTP response.
- $ hg --config badserver.closeaftersendbytes=1710 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=1710 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
@@ -862,7 +867,7 @@
Server sends a size 0 chunked-transfer size without terminating \r\n
- $ hg --config badserver.closeaftersendbytes=1713 serve -p $HGPORT -d --pid-file=hg.pid -E error.log
+ $ hg serve --config badserver.closeaftersendbytes=1713 -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ clone
--- a/tests/test-http-bundle1.t Sun Oct 01 12:10:48 2017 -0400
+++ b/tests/test-http-bundle1.t Wed Oct 04 18:39:26 2017 -0700
@@ -357,7 +357,7 @@
Check error reporting while pulling/cloning
$ $RUNTESTDIR/killdaemons.py
- $ hg -R test serve -p $HGPORT -d --pid-file=hg3.pid -E error.log --config extensions.crash=${TESTDIR}/crashgetbundler.py
+ $ hg serve -R test -p $HGPORT -d --pid-file=hg3.pid -E error.log --config extensions.crash=${TESTDIR}/crashgetbundler.py
$ cat hg3.pid >> $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ abort-clone
requesting all changes
@@ -368,7 +368,7 @@
disable pull-based clones
- $ hg -R test serve -p $HGPORT1 -d --pid-file=hg4.pid -E error.log --config server.disablefullbundle=True
+ $ hg serve -R test -p $HGPORT1 -d --pid-file=hg4.pid -E error.log --config server.disablefullbundle=True
$ cat hg4.pid >> $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT1/ disable-pull-clone
requesting all changes
--- a/tests/test-http-protocol.t Sun Oct 01 12:10:48 2017 -0400
+++ b/tests/test-http-protocol.t Wed Oct 04 18:39:26 2017 -0700
@@ -10,7 +10,7 @@
$ hg -q commit -A -m initial
$ cd ..
- $ hg -R server serve -p $HGPORT -d --pid-file hg.pid
+ $ hg serve -R server -p $HGPORT -d --pid-file hg.pid
$ cat hg.pid >> $DAEMON_PIDS
compression formats are advertised in compression capability
@@ -25,7 +25,7 @@
server.compressionengines can replace engines list wholesale
- $ hg --config server.compressionengines=none -R server serve -p $HGPORT -d --pid-file hg.pid
+ $ hg serve --config server.compressionengines=none -R server -p $HGPORT -d --pid-file hg.pid
$ cat hg.pid > $DAEMON_PIDS
$ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=none$' > /dev/null
@@ -33,7 +33,7 @@
Order of engines can also change
- $ hg --config server.compressionengines=none,zlib -R server serve -p $HGPORT -d --pid-file hg.pid
+ $ hg serve --config server.compressionengines=none,zlib -R server -p $HGPORT -d --pid-file hg.pid
$ cat hg.pid > $DAEMON_PIDS
$ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=none,zlib$' > /dev/null
@@ -41,7 +41,7 @@
Start a default server again
- $ hg -R server serve -p $HGPORT -d --pid-file hg.pid
+ $ hg serve -R server -p $HGPORT -d --pid-file hg.pid
$ cat hg.pid > $DAEMON_PIDS
Server should send application/mercurial-0.1 to clients if no Accept is used
@@ -113,7 +113,7 @@
Now test protocol preference usage
$ killdaemons.py
- $ hg --config server.compressionengines=none,zlib -R server serve -p $HGPORT -d --pid-file hg.pid
+ $ hg serve --config server.compressionengines=none,zlib -R server -p $HGPORT -d --pid-file hg.pid
$ cat hg.pid > $DAEMON_PIDS
No Accept will send 0.1+zlib, even though "none" is preferred b/c "none" isn't supported on 0.1
--- a/tests/test-http.t Sun Oct 01 12:10:48 2017 -0400
+++ b/tests/test-http.t Wed Oct 04 18:39:26 2017 -0700
@@ -345,7 +345,7 @@
check abort error reporting while pulling/cloning
$ $RUNTESTDIR/killdaemons.py
- $ hg -R test serve -p $HGPORT -d --pid-file=hg3.pid -E error.log --config extensions.crash=${TESTDIR}/crashgetbundler.py
+ $ hg serve -R test -p $HGPORT -d --pid-file=hg3.pid -E error.log --config extensions.crash=${TESTDIR}/crashgetbundler.py
$ cat hg3.pid >> $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/ abort-clone
requesting all changes
@@ -356,7 +356,7 @@
disable pull-based clones
- $ hg -R test serve -p $HGPORT1 -d --pid-file=hg4.pid -E error.log --config server.disablefullbundle=True
+ $ hg serve -R test -p $HGPORT1 -d --pid-file=hg4.pid -E error.log --config server.disablefullbundle=True
$ cat hg4.pid >> $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT1/ disable-pull-clone
requesting all changes