import cgi from io import BytesIO def check(content): data = """---123 Content-Disposition: form-data; name="upload"; filename="fake.txt" Content-Type: text/plain %s ---123-- """ % content environ = { 'CONTENT_LENGTH': str(len(data)), 'CONTENT_TYPE': 'multipart/form-data; boundary=-123', 'REQUEST_METHOD': 'POST', } # assert gen_result(data, environ) == {'upload': content.encode('latin1')} fake_stdin = BytesIO(data.encode('ascii')) fake_stdin.seek(0) form = cgi.FieldStorage(fp=fake_stdin, environ=environ, encoding='ascii') return form def main(): maxline = 1 << 16 check('x' * 512) # OK check('x' * 1010) # ResourceWarning check('x' * (maxline - 1)) # ResourceWarning if __name__ == '__main__': main()