Index: pyenvjasmine/runner.html
===================================================================
--- pyenvjasmine/runner.html	(revision 12)
+++ pyenvjasmine/runner.html	(revision 12)
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+          "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="file:///%(libDir)s/envjasmine/lib/jasmine/jasmine.css">
+
+    <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine/jasmine.js"></script>
+    <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine/jasmine-html.js"></script>
+    <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine-ajax/mock-ajax.js"></script>
+    <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine-ajax/spec-helper.js"></script>
+    <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine-jquery/jasmine-jquery.js"></script>
+
+    <script type="text/javascript" src="browser.runner.js"></script>
+
+    <script type="text/javascript">
+      (function () {
+          "use strict";
+          var jasmineEnv = jasmine.getEnv();
+          jasmineEnv.updateInterval = 1000;
+
+          var trivialReporter = new jasmine.TrivialReporter();
+          jasmineEnv.addReporter(trivialReporter);
+          jasmineEnv.specFilter = function (spec) {
+              return trivialReporter.specFilter(spec);
+          };
+
+          var currentWindowOnload = window.onload;
+
+          window.onload = function () {
+              if (currentWindowOnload) {
+                  currentWindowOnload();
+              }
+              execJasmine();
+          };
+
+          function execJasmine() {
+              jasmineEnv.execute();
+          }
+      })();
+
+      var EnvJasmine = {};
+      EnvJasmine.jsDir = "";
+      EnvJasmine.testDir = "%(testDir)s";
+
+      EnvJasmine.load = function (path) {
+          appendScript(path);
+      };
+
+      EnvJasmine.loadGlobal = function (path) {
+          appendScript(path);
+      };
+
+      function appendScript(path){
+          var script = document.createElement('script');
+          script.src = path;
+          script.type ='text/javascript';
+          document.getElementsByTagName('head')[0].appendChild(script);
+      }
+    </script>
+    <script type="text/javascript" src="%(browser_configfile)s"></script>
+  </head>
+  <body>
+  </body>
+</html>
Index: pyenvjasmine/runner.py
===================================================================
--- pyenvjasmine/runner.py	(revision 0)
+++ pyenvjasmine/runner.py	(revision 12)
@@ -7,5 +7,5 @@
     Get the environment parameter, depending on OS (Win/Unix).
     """
-    if os.name == 'nt': # not tested!
+    if os.name == 'nt':  # not tested!
         environment = '--environment=WIN'
     else:
@@ -23,5 +23,5 @@
 
     def __init__(self, rootdir=None, testdir=None, configfile=None,
-                    browser_configfile=None):
+                 browser_configfile=None):
         """
         Set up paths, by default everything is
@@ -39,13 +39,11 @@
                     the tests in browser.
         """
-        if rootdir is None:
-            here = os.path.dirname(__file__)
-            rootdir = os.path.join(here, 'envjasmine')
-        if testdir is None:
-            testdir = rootdir
-        self.testdir = testdir
-        self.rootdir = rootdir
+        here = os.path.dirname(__file__)
+        self.libdir = here
+        self.rootdir = rootdir or os.path.join(here, 'envjasmine')
+        self.testdir = testdir or self.rootdir
         self.configfile = configfile
         self.browser_configfile = browser_configfile
+        self.runner_html = os.path.join(here, 'runner.html')
 
     def run(self, spec=None, capture_output=True):
@@ -56,8 +54,6 @@
         """
         environment = get_environment()
-        rhino_path = os.path.join(self.rootdir,
-                                    'lib', 'rhino', 'js.jar')
-        envjasmine_js_path = os.path.join(self.rootdir,
-                                    'lib', 'envjasmine.js')
+        rhino_path = os.path.join(self.rootdir, 'lib', 'rhino', 'js.jar')
+        envjasmine_js_path = os.path.join(self.rootdir, 'lib', 'envjasmine.js')
         rootdir_param = '--rootDir=%s' % self.rootdir
         testdir_param = '--testDir=%s' % self.testdir
@@ -65,12 +61,20 @@
             self.write_browser_htmlfile()
 
-        command = ['java', '-Duser.timezone=US/Eastern',
-                '-Dfile.encoding=utf-8', '-jar', rhino_path,
-                envjasmine_js_path,
-                '--disableColor',
-                environment, rootdir_param, testdir_param
-                ]
+        command = [
+            'java',
+            '-Duser.timezone=US/Eastern',
+            '-Dfile.encoding=utf-8',
+            '-jar',
+            rhino_path,
+            envjasmine_js_path,
+            '--disableColor',
+            environment,
+            rootdir_param,
+            testdir_param
+            ]
+
         if self.configfile and os.path.exists(self.configfile):
             command.append('--configFile=%s' % self.configfile)
+
         # if we were asked to test only some of the spec files,
         # addd them to the command line:
@@ -79,13 +83,15 @@
                 spec = [spec]
             command.extend(spec)
+
         shell = False
+        stdout = None
+        stderr = None
         if capture_output:
+            # override if we want to capture the output of the test run
             stdout = subprocess.PIPE
             stderr = subprocess.PIPE
-        else:
-            stdout = None
-            stderr = None
-        p = subprocess.Popen(command, shell=shell,
-                            stdout=stdout, stderr=stderr)
+
+        p = subprocess.Popen(command, shell=shell, stdout=stdout,
+                             stderr=stderr)
         (res, stderr) = p.communicate()
         return res
@@ -93,71 +99,11 @@
     def write_browser_htmlfile(self):
         markup = self.create_testRunnerHtml()
-        with open("browser.runner.html",'w') as file:
+        with open("browser.runner.html", 'w') as file:
             file.write(markup)
 
     def create_testRunnerHtml(self):
-        return """
-        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-          "http://www.w3.org/TR/html4/loose.dtd">
-        <html>
-        <head>
-          <title></title>
-          <link rel="stylesheet" type="text/css" href="file:///%(libDir)s/envjasmine/lib/jasmine/jasmine.css">
-
-          <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine/jasmine.js"></script>
-          <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine/jasmine-html.js"></script>
-          <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine-ajax/mock-ajax.js"></script>
-          <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine-ajax/spec-helper.js"></script>
-          <script type="text/javascript" src="file:///%(libDir)s/envjasmine/lib/jasmine-jquery/jasmine-jquery.js"></script>
-
-          <script type="text/javascript" src="browser.runner.js"></script>
-          <script type="text/javascript">
-              (function () {
-                  "use strict";
-                  var jasmineEnv = jasmine.getEnv();
-                  jasmineEnv.updateInterval = 1000;
-
-                  var trivialReporter = new jasmine.TrivialReporter();
-                  jasmineEnv.addReporter(trivialReporter);
-                  jasmineEnv.specFilter = function (spec) {
-                      return trivialReporter.specFilter(spec);
-                  };
-
-                  var currentWindowOnload = window.onload;
-
-                  window.onload = function () {
-                      if (currentWindowOnload) {
-                          currentWindowOnload();
-                      }
-                      execJasmine();
-                  };
-
-                  function execJasmine() {
-                      jasmineEnv.execute();
-                  }
-              })();
-              var EnvJasmine = {};
-              EnvJasmine.jsDir = "";
-              EnvJasmine.testDir = "%(testDir)s";
-              EnvJasmine.load = function (path) {
-                  appendScript(path);
-              };
-              EnvJasmine.loadGlobal = function (path) {
-                  appendScript(path);
-              };
-              function appendScript(path){
-                  var script = document.createElement('script');
-                  script.src = path;
-                  script.type ='text/javascript';
-                  document.getElementsByTagName('head')[0].appendChild(script);
-              }
-          </script>
-          <script type="text/javascript" src="%(browser_configfile)s"></script>
-        </head>
-        <body>
-        </body>
-        </html>
-        """ %{"libDir": os.path.normpath(os.path.dirname(__file__)),
-              "testDir": os.path.normpath(self.testdir),
-              "browser_configfile": self.browser_configfile}
-
+        with open(self.runner_html, 'r') as runner_html:
+            html = runner_html.read()
+            return html % {"libDir": os.path.normpath(self.libdir),
+                           "testDir": os.path.normpath(self.testdir),
+                           "browser_configfile": self.browser_configfile}
