def runtest(self): fs = self._prepareMockFs() url = self.spec.get('url') if url is None: raise Exception("Missing URL in test spec.") expected_status = self.spec.get('status', 200) expected_headers = self.spec.get('headers') expected_output = self.spec.get('out') expected_contains = self.spec.get('out_contains') from werkzeug.test import Client from werkzeug.wrappers import BaseResponse from piecrust.serving.server import Server with mock_fs_scope(fs): server = Server(fs.path('/kitchen')) test_app = self._TestApp(server) client = Client(test_app, BaseResponse) resp = client.get(url) assert expected_status == resp.status_code if expected_headers: for k, v in expected_headers.items(): assert v == resp.headers.get(k) actual = resp.data.decode('utf8').rstrip() if expected_output: assert expected_output.rstrip() == actual if expected_contains: assert expected_contains.rstrip() in actual
# This is a utility module that can be used with any WSGI-compatible server # like Werkzeug or Gunicorn. It returns a WSGI app for serving a PieCrust # website located in the current working directory. import os from piecrust.serving.server import Server root_dir = os.getcwd() server = Server(root_dir, sub_cache_dir='prod', enable_debug_info=False) app = server.getWsgiApp()
def _get_piecrust_server(root_dir, **kwargs): server = Server(root_dir, **kwargs) app = server.getWsgiApp() return app
def get_app(root_dir, sub_cache_dir='prod', enable_debug_info=False): server = Server(root_dir, sub_cache_dir=sub_cache_dir, enable_debug_info=enable_debug_info) app = server.getWsgiApp() return app