Mercurial > p > roundup > code
view test/test_demo.py @ 6548:de5f5f9c02f2
Fix spurious content-ty on 304; xfail css Cache-Control
Using wsgiref.validate.validator to verify http/wsgi responses.
It discovered that a 304 was returning a content-type header but
shouldn't. Fixed that.
For some unknown reason I can't reproduce on my devel
platform, travis-ci is throwing:
> self.assertEqual(f.headers['Cache-Control'], 'public, max-age=4838400')
E AssertionError: 'public, max-age=3600' != 'public, max-age=4838400'
E - public, max-age=3600
E ? ^
E + public, max-age=4838400
E ? ++ ^^
in test_liveserver test_cache_control_css. I have no idea why this is
happening. The 3600 value isn't in the code base or tracker template
that I see. While I was trying to figure out if the wsgi server later
was an issue, I came across the validator. Maybe it will throw some
light on this error?
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 09 Dec 2021 20:11:58 -0500 |
| parents | 5a3a386aa8e7 |
| children | 77eb1a41fc06 |
line wrap: on
line source
import unittest import os, sys, shutil from roundup.demo import install_demo, run_demo import roundup.scripts.roundup_server # https://stackoverflow.com/questions/4219717/how-to-assert-output-with-nosetest-unittest-in-python # lightly modified from contextlib import contextmanager _py3 = sys.version_info[0] > 2 if _py3: from io import StringIO # py3 else: from StringIO import StringIO # py2 @contextmanager def captured_output(): new_out, new_err = StringIO(), StringIO() old_out, old_err = sys.stdout, sys.stderr try: sys.stdout, sys.stderr = new_out, new_err yield sys.stdout, sys.stderr finally: sys.stdout, sys.stderr = old_out, old_err class TestDemo(unittest.TestCase): def setUp(self): self.home = os.path.abspath('_test_demo') def tearDown(self): try: shutil.rmtree(self.home) except FileNotFoundError: pass def testDemoClassic(self): with captured_output() as (out, err): install_demo(self.home, 'anydbm', 'classic') output = out.getvalue().strip() print(output) # dummy up the return of get_server so the serve_forever method # raises keyboard interrupt exiting the server so the test exits. gs = roundup.scripts.roundup_server.ServerConfig.get_server def raise_KeyboardInterrupt(): raise KeyboardInterrupt def test_get_server(self): httpd = gs(self) httpd.serve_forever = raise_KeyboardInterrupt return httpd roundup.scripts.roundup_server.ServerConfig.get_server = test_get_server # Run under context manager to capture output of startup text. with captured_output() as (out, err): run_demo(self.home) output = out.getvalue().strip() print(output) # if the server installed and started this will be the # last line in the output. self.assertIn("Keyboard Interrupt: exiting", output.split('\n')) def testDemoMinimal(self): with captured_output() as (out, err): # use a modified path that resolves when install_demo(self.home, 'sqlite', '../templates/minimal') output = out.getvalue().strip() print(output) # verify that db was set properly by reading config with open(self.home + "/config.ini", "r") as f: config_lines = f.readlines() self.assertIn("backend = sqlite\n", config_lines) # dummy up the return of get_server so the serve_forever method # raises keyboard interrupt exiting the server so the test exits. gs = roundup.scripts.roundup_server.ServerConfig.get_server def raise_KeyboardInterrupt(): raise KeyboardInterrupt def test_get_server(self): httpd = gs(self) httpd.serve_forever = raise_KeyboardInterrupt return httpd roundup.scripts.roundup_server.ServerConfig.get_server = test_get_server # Run under context manager to capture output of startup text. with captured_output() as (out, err): run_demo(self.home) output = out.getvalue().strip() print(output) # if the server installed and started this will be the # last line in the output. self.assertIn("Keyboard Interrupt: exiting", output.split('\n')) def testDemoJinja(self): with captured_output() as (out, err): install_demo(self.home, 'anydbm', 'jinja2') output = out.getvalue().strip() print(output) # verify that template was set to jinja2 by reading config with open(self.home + "/config.ini", "r") as f: config_lines = f.readlines() self.assertIn("template_engine = jinja2\n", config_lines) # dummy up the return of get_server so the serve_forever method # raises keyboard interrupt exiting the server so the test exits. gs = roundup.scripts.roundup_server.ServerConfig.get_server def raise_KeyboardInterrupt(): raise KeyboardInterrupt def test_get_server(self): httpd = gs(self) httpd.serve_forever = raise_KeyboardInterrupt return httpd roundup.scripts.roundup_server.ServerConfig.get_server = test_get_server # Run under context manager to capture output of startup text. with captured_output() as (out, err): run_demo(self.home) output = out.getvalue().strip() print(output) # if the server installed and started this will be the # last line in the output. self.assertIn("Keyboard Interrupt: exiting", output.split('\n'))
