diff piecrust/serving/server.py @ 391:3e4bb57d8506

tests: Add support for testing the Chef server. * Make the server be functional without calling `getWsgiApp`. * Add new type of test files that use a Werkzeug test client.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 17 May 2015 10:48:41 -0700
parents 3a184fbc900b
children 2bb5327c4c1f
line wrap: on
line diff
--- a/piecrust/serving/server.py	Sun May 17 08:30:19 2015 -0700
+++ b/piecrust/serving/server.py	Sun May 17 10:48:41 2015 -0700
@@ -12,6 +12,7 @@
 from werkzeug.wrappers import Request, Response
 from werkzeug.wsgi import ClosingIterator, wrap_file
 from jinja2 import FileSystemLoader, Environment
+from piecrust import CACHE_DIR
 from piecrust.app import PieCrust
 from piecrust.rendering import QualifiedPage, PageRenderingContext, render_page
 from piecrust.sources.base import MODE_PARSING
@@ -62,8 +63,8 @@
         self.enable_debug_info = enable_debug_info
         self.run_sse_check = run_sse_check
         self.static_preview = static_preview
-        self._out_dir = None
-        self._page_record = None
+        self._page_record = ServeRecord()
+        self._out_dir = os.path.join(root_dir, CACHE_DIR, 'server')
         self._proc_loop = None
         self._mimetype_map = load_mimetype_map()
 
@@ -71,9 +72,9 @@
         # Bake all the assets so we know what we have, and so we can serve
         # them to the client. We need a temp app for this.
         app = PieCrust(root_dir=self.root_dir, debug=self.debug)
-        app._useSubCacheDir(self.sub_cache_dir)
+        if self.sub_cache_dir:
+            app._useSubCacheDir(self.sub_cache_dir)
         self._out_dir = os.path.join(app.sub_cache_dir, 'server')
-        self._page_record = ServeRecord()
 
         if not self.run_sse_check or self.run_sse_check():
             # When using a server with code reloading, some implementations
@@ -120,7 +121,8 @@
 
         # Create the app for this request.
         app = PieCrust(root_dir=self.root_dir, debug=self.debug)
-        app._useSubCacheDir(self.sub_cache_dir)
+        if self.sub_cache_dir:
+            app._useSubCacheDir(self.sub_cache_dir)
         app.config.set('site/root', '/')
         app.config.set('server/is_serving', True)
         if (app.config.get('site/enable_debug_info') and