##// END OF EJS Templates
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs...
interfaces: convert `repository.irevisiondelta` from zope `Attribute` attrs This is the same transformation as b455dfddfed0 did for dirstate.

File last commit:

r49731:42d2b31c default
r53366:2aada52e default
Show More
test-hgweb-non-interactive.t
95 lines | 2.6 KiB | text/troff | Tads3Lexer
/ tests / test-hgweb-non-interactive.t
Matt Mackall
tests: unify test-hgweb-non-interactive
r12440 Tests if hgweb can run without touching sys.stdin, as is required
by the WSGI standard and strictly implemented by mod_wsgi.
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init repo
Matt Mackall
tests: unify test-hgweb-non-interactive
r12440 $ cd repo
$ echo foo > bar
$ hg add bar
$ hg commit -m "test"
$ cat > request.py <<EOF
timeless
py3: use absolute_import in test-hgweb-non-interactive.t
r28859 > import os
> import sys
> from mercurial import (
> dispatch,
Matt Harbison
py3: avoid b'' output in test-hgweb-non-interactive.t...
r39949 > encoding,
timeless
py3: use absolute_import in test-hgweb-non-interactive.t
r28859 > hg,
> ui as uimod,
timeless
pycompat: switch to util.stringio for py3 compat
r28861 > util,
timeless
py3: use absolute_import in test-hgweb-non-interactive.t
r28859 > )
Manuel Jacob
pycompat: change users of pycompat.{stdin,stdout,stderr} to use procutil.std*...
r45598 > from mercurial.utils import (
> procutil,
> )
timeless
py3: use absolute_import in test-hgweb-non-interactive.t
r28859 > ui = uimod.ui
FUJIWARA Katsunori
tests: fix style issue of importing hgweb in embedded code fragments...
r40239 > from mercurial.hgweb import hgweb_mod
timeless
pycompat: switch to util.stringio for py3 compat
r28861 > stringio = util.stringio
Matt Mackall
tests: unify test-hgweb-non-interactive
r12440 >
> class FileLike(object):
> def __init__(self, real):
> self.real = real
> def fileno(self):
> print >> sys.__stdout__, 'FILENO'
> return self.real.fileno()
> def read(self):
> print >> sys.__stdout__, 'READ'
> return self.real.read()
> def readline(self):
> print >> sys.__stdout__, 'READLINE'
> return self.real.readline()
>
> sys.stdin = FileLike(sys.stdin)
timeless
pycompat: switch to util.stringio for py3 compat
r28861 > errors = stringio()
> input = stringio()
> output = stringio()
Matt Mackall
tests: unify test-hgweb-non-interactive
r12440 >
> def startrsp(status, headers):
Augie Fackler
tests: fix simple heredoc print statements to work on Py3...
r33686 > print('---- STATUS')
> print(status)
> print('---- HEADERS')
> print([i for i in headers if i[0] != 'ETag'])
> print('---- DATA')
Adrian Buehlmann
check-code: add 'no tab indent' check for unified tests...
r12743 > return output.write
Matt Mackall
tests: unify test-hgweb-non-interactive
r12440 >
> env = {
Adrian Buehlmann
check-code: add 'no tab indent' check for unified tests...
r12743 > 'wsgi.version': (1, 0),
> 'wsgi.url_scheme': 'http',
> 'wsgi.errors': errors,
> 'wsgi.input': input,
> 'wsgi.multithread': False,
> 'wsgi.multiprocess': False,
> 'wsgi.run_once': False,
> 'REQUEST_METHOD': 'GET',
> 'SCRIPT_NAME': '',
> 'PATH_INFO': '',
> 'QUERY_STRING': '',
Jun Wu
tests: use LOCALIP...
r31008 > 'SERVER_NAME': '$LOCALIP',
Adrian Buehlmann
check-code: add 'no tab indent' check for unified tests...
r12743 > 'SERVER_PORT': os.environ['HGPORT'],
> 'SERVER_PROTOCOL': 'HTTP/1.0'
Matt Mackall
tests: unify test-hgweb-non-interactive
r12440 > }
>
FUJIWARA Katsunori
tests: fix style issue of importing hgweb in embedded code fragments...
r40239 > i = hgweb_mod.hgweb(b'.')
Gregory Szorc
hgweb: consume generator inside context manager (issue4756)...
r26247 > for c in i(env, startrsp):
> pass
Matt Harbison
py3: avoid b'' output in test-hgweb-non-interactive.t...
r39949 > sys.stdout.flush()
Manuel Jacob
pycompat: change users of pycompat.{stdin,stdout,stderr} to use procutil.std*...
r45598 > procutil.stdout.write(b'---- ERRORS\n')
> procutil.stdout.write(b'%s\n' % errors.getvalue())
Augie Fackler
tests: fix simple heredoc print statements to work on Py3...
r33686 > print('---- OS.ENVIRON wsgi variables')
> print(sorted([x for x in os.environ if x.startswith('wsgi')]))
> print('---- request.ENVIRON wsgi variables')
Gregory Szorc
hgweb: use separate repo instances per thread...
r26220 > with i._obtainrepo() as repo:
Matt Harbison
py3: avoid b'' output in test-hgweb-non-interactive.t...
r39949 > print(sorted([encoding.strfromlocal(x) for x in repo.ui.environ
> if x.startswith(b'wsgi')]))
Matt Mackall
tests: unify test-hgweb-non-interactive
r12440 > EOF
Matt Harbison
tests: quote PYTHON usage...
r39743 $ "$PYTHON" request.py
Matt Mackall
tests: unify test-hgweb-non-interactive
r12440 ---- STATUS
200 Script output follows
---- HEADERS
[('Content-Type', 'text/html; charset=ascii')]
---- DATA
---- ERRORS
---- OS.ENVIRON wsgi variables
[]
---- request.ENVIRON wsgi variables
['wsgi.errors', 'wsgi.input', 'wsgi.multiprocess', 'wsgi.multithread', 'wsgi.run_once', 'wsgi.url_scheme', 'wsgi.version']
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..