Patchwork [1,of,2] tests: add run-tests --changed option for running tests changed in revisions

login
register
mail settings
Submitter Mads Kiilerich
Date March 21, 2014, 2:32 a.m.
Message ID <2bac025396d7b49d98c9.1395369147@localhost.localdomain>
Download mbox | patch
Permalink /patch/4011/
State Accepted
Commit 3d1d16b19e7dd5e96e242daed86512429bc1d3f6
Headers show

Comments

Mads Kiilerich - March 21, 2014, 2:32 a.m.
# HG changeset patch
# User Mads Kiilerich <madski@unity3d.com>
# Date 1393549740 -3600
#      Fri Feb 28 02:09:00 2014 +0100
# Node ID 2bac025396d7b49d98c9c2298577e083a3f69750
# Parent  170d6d591a7dbc09bfe1b509dfd8f39991e653a9
tests: add run-tests --changed option for running tests changed in revisions

Convenient when polishing patches and changing details of how they change test
output.

This will probably break in weird ways for revsets with special quoting ... but
it is good enough for run-tests.

Usage example:
  yes | ./run-tests.py -li --changed qparent

Patch

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -141,6 +141,8 @@  def parseargs():
         help="skip tests listed in the specified blacklist file")
     parser.add_option("--whitelist", action="append",
         help="always run tests listed in the specified whitelist file")
+    parser.add_option("--changed", type="string",
+        help="run tests that are changed in parent rev or working directory")
     parser.add_option("-C", "--annotate", action="store_true",
         help="output files annotated with coverage")
     parser.add_option("-c", "--cover", action="store_true",
@@ -1181,7 +1183,13 @@  def main():
     checktools()
 
     if not args:
-        args = os.listdir(".")
+        if options.changed:
+            proc = Popen4('hg st --rev "%s" -man0 .' % options.changed,
+                          None, 0)
+            stdout, stderr = proc.communicate()
+            args = stdout.strip('\0').split('\0')
+        else:
+            args = os.listdir(".")
 
     tests = [t for t in args
              if t.startswith("test-")