1. Alex Willmer
  2. trac-ticketlinks


ecarter  committed 1918958

0.11-stable: Add support for running tests under figleaf. Thanks to Tim for the original work on this.

  • Participants
  • Parent commits d706c12
  • Branches 0.11-stable

Comments (0)

Files changed (2)


View file
 This is particularly useful when a test fails and you want to explore the environment to debug the problem.
+ == Test Coverage ==
+You can now determine statement coverage of unittests and functional tests.  But you'll have to run them separately for now.
+`figleaf` will need to be on your `PATH`.  Set the `FIGLEAF` environment variable to the figleaf command.
+Create a figleaf-exclude file with filename patterns to exclude.  For example:
+Then run the tests something like this:
+export FIGLEAF=figleaf
+figleaf ./trac/test.py -v --skip-functional-tests
+mv .figleaf .figleaf.unittests
+python trac/tests/functional/testcases.py -v
+mv .figleaf .figleaf.functional
+figleaf2html --exclude-patterns=../figleaf-exclude .figleaf.functional .figleaf.unittests
+Also, this is very slow; on a decent machine, 10 minutes for the functional tests is normal.
+To run without figleaf, be sure to unset `FIGLEAF`.

File trac/tests/functional/testenv.py

View file
     def start(self):
         """Starts the webserver"""
-        server = Popen([sys.executable, "./trac/web/standalone.py",
+        if 'FIGLEAF' in os.environ:
+            exe = os.environ['FIGLEAF']
+        else:
+            exe = sys.executable
+        server = Popen([exe, "./trac/web/standalone.py",
                         "--port=%s" % self.port, "-s",
                         "--basic-auth=trac,%s," % self.htpasswd,
                 call(["taskkill", "/f", "/pid", str(self.pid)],
                      stdin=PIPE, stdout=PIPE, stderr=PIPE)
-                os.kill(self.pid, signal.SIGTERM)
+                os.kill(self.pid, signal.SIGINT)
                     os.waitpid(self.pid, 0)
                 except OSError, e: