Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
mercurial-devel
Manage
Activity
Members
Labels
Plan
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
mercurial
mercurial-devel
Commits
d9f7753a
Commit
d9f7753a
authored
14 years ago
by
Matt Mackall
Browse files
Options
Downloads
Patches
Plain Diff
tests: unify test-hgweb-non-interactive
parent
31ea3ce8
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
tests/test-hgweb-non-interactive.out
+0
-17
0 additions, 17 deletions
tests/test-hgweb-non-interactive.out
tests/test-hgweb-non-interactive.t
+80
-73
80 additions, 73 deletions
tests/test-hgweb-non-interactive.t
with
80 additions
and
90 deletions
tests/test-hgweb-non-interactive.out
deleted
100644 → 0
+
0
−
17
View file @
31ea3ce8
changeset: 0:61c9426e69fe
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: test
---- 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']
This diff is collapsed.
Click to expand it.
tests/test-hgweb-non-interactive
→
tests/test-hgweb-non-interactive
.t
100755 → 100644
+
80
−
73
View file @
d9f7753a
#!/bin/sh
# Tests if hgweb can run without touching sys.stdin, as is required
# by the WSGI standard and strictly implemented by mod_wsgi.
mkdir
repo
cd
repo
hg init
echo
foo
>
bar
hg add bar
hg commit
-m
"test"
hg tip
cat
>
request.py
<<
EOF
from mercurial import dispatch
from mercurial.hgweb.hgweb_mod import hgweb
from mercurial.ui import ui
from mercurial import hg
from StringIO import StringIO
import os, sys
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()
Tests
if
hgweb
can
run
without
touching
sys
.
stdin
,
as
is
required
by
the
WSGI
standard
and
strictly
implemented
by
mod_wsgi
.
...
...
@@ -33,42 +3,79 @@
sys.stdin = FileLike(sys.stdin)
errors = StringIO()
input = StringIO()
output = StringIO()
def startrsp(status, headers):
print '---- STATUS'
print status
print '---- HEADERS'
print [i for i in headers if i[0] != 'ETag']
print '---- DATA'
return output.write
env = {
'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': '',
'SERVER_NAME': '127.0.0.1',
'SERVER_PORT': os.environ['HGPORT'],
'SERVER_PROTOCOL': 'HTTP/1.0'
}
i = hgweb('.')
i(env, startrsp)
print '---- ERRORS'
print errors.getvalue()
print '---- OS.ENVIRON wsgi variables'
print sorted([x for x in os.environ if x.startswith('wsgi')])
print '---- request.ENVIRON wsgi variables'
print sorted([x for x in i.repo.ui.environ if x.startswith('wsgi')])
EOF
python request.py
$
mkdir
repo
$
cd
repo
$
hg
init
$
echo
foo
>
bar
$
hg
add
bar
$
hg
commit
-
m "test"
$
cat
>
request
.
py
<<
EOF
>
from
mercurial
import
dispatch
>
from
mercurial
.
hgweb
.
hgweb_mod
import
hgweb
>
from
mercurial
.
ui
import
ui
>
from
mercurial
import
hg
>
from
StringIO
import
StringIO
>
import
os
,
sys
>
>
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
)
>
errors
=
StringIO
()
>
input
=
StringIO
()
>
output
=
StringIO
()
>
>
def
startrsp
(
status
,
headers
):
>
print
'
---- STATUS
'
>
print
status
>
print
'
---- HEADERS
'
>
print
[
i
for
i
in
headers
if
i
[
0
]
!=
'
ETag
']
>
print
'
---- DATA
'
>
return
output
.
write
>
>
env
=
{
>
'
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
':
'',
>
'
SERVER_NAME
':
'
127.0.0.1
',
>
'
SERVER_PORT
':
os
.
environ
['
HGPORT
'],
>
'
SERVER_PROTOCOL
':
'
HTTP/1.0
'
>
}
>
>
i
=
hgweb
('
.
')
>
i
(
env
,
startrsp
)
>
print
'
---- ERRORS
'
>
print
errors
.
getvalue
()
>
print
'
---- OS.ENVIRON wsgi variables
'
>
print
sorted
([
x
for
x
in
os
.
environ
if
x
.
startswith
('
wsgi
')])
>
print
'
---- request.ENVIRON wsgi variables
'
>
print
sorted
([
x
for
x
in
i
.
repo
.
ui
.
environ
if
x
.
startswith
('
wsgi
')])
>
EOF
$
python
request
.
py
----
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
']
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment