comparison tests/test-hgweb-no-path-info.t @ 40161:3eea8e83c261

py3: tweak stdout writing in test-hgweb-no-path-info.t We want to write bytes for convenience. This requires sys.stdout.buffer. But using sys.stdout.buffer introducing buffered output. So we sprinkle code with sys.stdout.flush() to force immediate writes. After all that, Python 3 was emitting b'' prefixed output for errors. So we only print errors if there were some. There aren't, so b'' don't come into play and output is identical in Python 2 and 3. Differential Revision: https://phab.mercurial-scm.org/D4972
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 11 Oct 2018 23:07:23 +0200
parents 5abc47d4ca6b
children f80f7a67e176
comparison
equal deleted inserted replaced
40160:6037c49b8964 40161:3eea8e83c261
34 > print('---- STATUS') 34 > print('---- STATUS')
35 > print(status) 35 > print(status)
36 > print('---- HEADERS') 36 > print('---- HEADERS')
37 > print([i for i in headers if i[0] != 'ETag']) 37 > print([i for i in headers if i[0] != 'ETag'])
38 > print('---- DATA') 38 > print('---- DATA')
39 > sys.stdout.flush()
39 > return output.write 40 > return output.write
40 > 41 >
41 > env = { 42 > env = {
42 > 'wsgi.version': (1, 0), 43 > 'wsgi.version': (1, 0),
43 > 'wsgi.url_scheme': 'http', 44 > 'wsgi.url_scheme': 'http',
53 > 'SERVER_PORT': os.environ['HGPORT'], 54 > 'SERVER_PORT': os.environ['HGPORT'],
54 > 'SERVER_PROTOCOL': 'HTTP/1.0' 55 > 'SERVER_PROTOCOL': 'HTTP/1.0'
55 > } 56 > }
56 > 57 >
57 > def process(app): 58 > def process(app):
59 > try:
60 > stdout = sys.stdout.buffer
61 > except AttributeError:
62 > stdout = sys.stdout
58 > content = app(env, startrsp) 63 > content = app(env, startrsp)
59 > sys.stdout.write(output.getvalue()) 64 > stdout.write(output.getvalue())
60 > sys.stdout.write(''.join(content)) 65 > stdout.write(b''.join(content))
66 > stdout.flush()
61 > getattr(content, 'close', lambda : None)() 67 > getattr(content, 'close', lambda : None)()
62 > print('---- ERRORS') 68 > if errors.getvalue():
63 > print(errors.getvalue()) 69 > print('---- ERRORS')
70 > print(errors.getvalue())
71 > sys.stdout.flush()
64 > 72 >
65 > output = stringio() 73 > output = stringio()
66 > env['QUERY_STRING'] = 'style=atom' 74 > env['QUERY_STRING'] = 'style=atom'
67 > process(hgweb(b'.', name=b'repo')) 75 > process(hgweb(b'.', name=b'repo'))
68 > 76 >
128 </table> 136 </table>
129 </content> 137 </content>
130 </entry> 138 </entry>
131 139
132 </feed> 140 </feed>
133 ---- ERRORS
134
135 ---- STATUS 141 ---- STATUS
136 200 Script output follows 142 200 Script output follows
137 ---- HEADERS 143 ---- HEADERS
138 [('Content-Type', 'text/plain; charset=ascii')] 144 [('Content-Type', 'text/plain; charset=ascii')]
139 ---- DATA 145 ---- DATA
140 146
141 /repo/ 147 /repo/
142 148
143 ---- ERRORS
144
145 149
146 $ cd .. 150 $ cd ..