tests/test-serve.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 21 Jan 2022 11:15:56 +0100
changeset 48614 3efc8644dd00
parent 48314 6f43569729d4
child 50320 9c5e743e400c
permissions -rw-r--r--
test-http-bad-server: refactor the reading logic to avoid early return Our ultimate goal is to add another way to define the connection needs to be closed. To do so, we need the "read" code to be more unified. Differential Revision: https://phab.mercurial-scm.org/D12045
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 20008
diff changeset
     1
#require serve
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
     2
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
     3
  $ hgserve()
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
     4
  > {
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
     5
  >    hg serve -a localhost -d --pid-file=hg.pid -E errors.log -v $@ \
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
     6
  >        | sed -e "s/:$HGPORT1\\([^0-9]\\)/:HGPORT1\1/g" \
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
     7
  >              -e "s/:$HGPORT2\\([^0-9]\\)/:HGPORT2\1/g" \
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
     8
  >              -e 's/http:\/\/[^/]*\//http:\/\/localhost\//'
37846
89793289c891 tests: remove pid file by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37156
diff changeset
     9
  >    if [ -f hg.pid ]; then
89793289c891 tests: remove pid file by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37156
diff changeset
    10
  >        killdaemons.py hg.pid
89793289c891 tests: remove pid file by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37156
diff changeset
    11
  >    fi
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    12
  >    echo % errors
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    13
  >    cat errors.log
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    14
  > }
4504
c68e6486f295 Add test reproducing a bug in "hg serve -v"
Joel Rosdahl <joel@rosdahl.net>
parents:
diff changeset
    15
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    16
  $ hg init test
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    17
  $ cd test
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    18
  $ echo '[web]' > .hg/hgrc
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    19
  $ echo 'accesslog = access.log' >> .hg/hgrc
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    20
  $ echo "port = $HGPORT1" >> .hg/hgrc
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    21
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    22
Without -v
6300
874ca958025b test-serve: replace copy/paste with shell function
Patrick Mezard <pmezard@gmail.com>
parents: 6262
diff changeset
    23
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    24
  $ hg serve -a localhost -p $HGPORT -d --pid-file=hg.pid -E errors.log
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    25
  $ cat hg.pid >> "$DAEMON_PIDS"
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    26
  $ if [ -f access.log ]; then
16487
4fe874697a4d tests: fix incorrect markup of continued lines of sh commands
Mads Kiilerich <mads@kiilerich.com>
parents: 16364
diff changeset
    27
  >     echo 'access log created - .hg/hgrc respected'
4fe874697a4d tests: fix incorrect markup of continued lines of sh commands
Mads Kiilerich <mads@kiilerich.com>
parents: 16364
diff changeset
    28
  > fi
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    29
  access log created - .hg/hgrc respected
4504
c68e6486f295 Add test reproducing a bug in "hg serve -v"
Joel Rosdahl <joel@rosdahl.net>
parents:
diff changeset
    30
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    31
errors
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    32
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    33
  $ cat errors.log
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    34
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    35
With -v
4835
9858477ed74c serve: respect settings from .hg/hgrc
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4506
diff changeset
    36
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    37
  $ hgserve
31769
594dd384803c test-serve: make the 'listening at *' lines optional
Matt Harbison <matt_harbison@yahoo.com>
parents: 31008
diff changeset
    38
  listening at http://localhost/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    39
  % errors
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    40
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    41
With -v and -p HGPORT2
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    42
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    43
  $ hgserve -p "$HGPORT2"
31769
594dd384803c test-serve: make the 'listening at *' lines optional
Matt Harbison <matt_harbison@yahoo.com>
parents: 31008
diff changeset
    44
  listening at http://localhost/ (bound to *$LOCALIP*:HGPORT2) (glob) (?)
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    45
  % errors
4504
c68e6486f295 Add test reproducing a bug in "hg serve -v"
Joel Rosdahl <joel@rosdahl.net>
parents:
diff changeset
    46
47773
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    47
With -v and -p daytime
5971
6d5ecf824a65 tests for hg serve prefix option
Michele Cella <michele.cella@gmail.com>
parents: 5384
diff changeset
    48
47773
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    49
# On some system this will fails because port < 1024 are not bindable by normal
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    50
# users.
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    51
#
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    52
# On some others the kernel is configured to allow any user to bind them and
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    53
# this will work fine
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    54
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    55
#if no-windows
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    56
  $ KILLQUIETLY=Y
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    57
  $ hgserve -p daytime
47773
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    58
  abort: cannot start server at 'localhost:13': Permission denied (?)
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    59
  abort: child process failed to start (?)
48314
6f43569729d4 tests: accept alternative privileged port allocation failure
pacien <pacien.trangirard@pacien.net>
parents: 47773
diff changeset
    60
  abort: no port number associated with service 'daytime' (?)
47773
a8deb9dc39da tests: make test-serve works on system that allow user to bind low port
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45839
diff changeset
    61
  listening at http://localhost/ (bound to $LOCALIP:13) (?)
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    62
  % errors
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    63
  $ KILLQUIETLY=N
20008
e54a078153f7 tests: skip tests that require not having root (issue4089)
Matt Mackall <mpm@selenic.com>
parents: 18602
diff changeset
    64
#endif
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    65
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    66
With --prefix foo
10633
3318431f2ab4 test-serve: Show if port config and option are correctly used
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6461
diff changeset
    67
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    68
  $ hgserve --prefix foo
31769
594dd384803c test-serve: make the 'listening at *' lines optional
Matt Harbison <matt_harbison@yahoo.com>
parents: 31008
diff changeset
    69
  listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    70
  % errors
12076
49463314c24f mail/hgweb: support service names for ports (issue2350)
Brodie Rao <brodie@bitheap.org>
parents: 10633
diff changeset
    71
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    72
With --prefix /foo
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    73
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    74
  $ hgserve --prefix /foo
31769
594dd384803c test-serve: make the 'listening at *' lines optional
Matt Harbison <matt_harbison@yahoo.com>
parents: 31008
diff changeset
    75
  listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    76
  % errors
5971
6d5ecf824a65 tests for hg serve prefix option
Michele Cella <michele.cella@gmail.com>
parents: 5384
diff changeset
    77
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    78
With --prefix foo/
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    79
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    80
  $ hgserve --prefix foo/
31769
594dd384803c test-serve: make the 'listening at *' lines optional
Matt Harbison <matt_harbison@yahoo.com>
parents: 31008
diff changeset
    81
  listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    82
  % errors
5971
6d5ecf824a65 tests for hg serve prefix option
Michele Cella <michele.cella@gmail.com>
parents: 5384
diff changeset
    83
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    84
With --prefix /foo/
5971
6d5ecf824a65 tests for hg serve prefix option
Michele Cella <michele.cella@gmail.com>
parents: 5384
diff changeset
    85
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    86
  $ hgserve --prefix /foo/
31769
594dd384803c test-serve: make the 'listening at *' lines optional
Matt Harbison <matt_harbison@yahoo.com>
parents: 31008
diff changeset
    87
  listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
13540
3ecadce9173d tests: convert test-serve to new format
Patrick Mezard <pmezard@gmail.com>
parents: 12578
diff changeset
    88
  % errors
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16487
diff changeset
    89
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37846
diff changeset
    90
  $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
37156
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
    91
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
    92
With out of bounds accesses
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
    93
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
    94
  $ rm access.log
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
    95
  $ hg serve -a localhost -p $HGPORT -d --prefix some/dir \
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
    96
  >    --pid-file=hg.pid -E errors.log
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
    97
  $ cat hg.pid >> "$DAEMON_PIDS"
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
    98
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
    99
  $ hg id http://localhost:$HGPORT/some/dir7
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
   100
  abort: HTTP Error 404: Not Found
45839
ebee234d952a errors: set detailed exit code to 100 for some remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 45067
diff changeset
   101
  [100]
37156
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
   102
  $ hg id http://localhost:$HGPORT/some
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
   103
  abort: HTTP Error 404: Not Found
45839
ebee234d952a errors: set detailed exit code to 100 for some remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 45067
diff changeset
   104
  [100]
37156
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
   105
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
   106
  $ cat access.log errors.log
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
   107
  $LOCALIP - - [$LOGDATE$] "GET /some/dir7?cmd=capabilities HTTP/1.1" 404 - (glob)
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
   108
  $LOCALIP - - [$LOGDATE$] "GET /some?cmd=capabilities HTTP/1.1" 404 - (glob)
7de7bd407251 server: ensure the incoming request falls under the prefix value
Matt Harbison <matt_harbison@yahoo.com>
parents: 31771
diff changeset
   109
45034
b1a1702262c9 py3: fix crash when server address is 0.0.0.0 (issue6362)
Manuel Jacob <me@manueljacob.de>
parents: 39707
diff changeset
   110
  $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
b1a1702262c9 py3: fix crash when server address is 0.0.0.0 (issue6362)
Manuel Jacob <me@manueljacob.de>
parents: 39707
diff changeset
   111
b1a1702262c9 py3: fix crash when server address is 0.0.0.0 (issue6362)
Manuel Jacob <me@manueljacob.de>
parents: 39707
diff changeset
   112
issue6362: Previously, this crashed on Python 3
b1a1702262c9 py3: fix crash when server address is 0.0.0.0 (issue6362)
Manuel Jacob <me@manueljacob.de>
parents: 39707
diff changeset
   113
45067
9a062913bab6 tests: stablize test-serve.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 45034
diff changeset
   114
  $ hg serve -a 0.0.0.0 -d --pid-file=hg.pid
9a062913bab6 tests: stablize test-serve.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 45034
diff changeset
   115
  listening at http://*:$HGPORT1/ (bound to *:$HGPORT1) (glob) (?)
9a062913bab6 tests: stablize test-serve.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 45034
diff changeset
   116
9a062913bab6 tests: stablize test-serve.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 45034
diff changeset
   117
  $ cat hg.pid > "$DAEMON_PIDS"
9a062913bab6 tests: stablize test-serve.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 45034
diff changeset
   118
  $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
45034
b1a1702262c9 py3: fix crash when server address is 0.0.0.0 (issue6362)
Manuel Jacob <me@manueljacob.de>
parents: 39707
diff changeset
   119
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16487
diff changeset
   120
  $ cd ..