Patchwork [v2] run-tests: allow automatic test discovery when providing folder as argument

login
register
mail settings
Submitter matthieu.laneuville@octobus.net
Date Nov. 3, 2017, 10:51 p.m.
Message ID <223d34cb2d2a1c1c6705.1509749480@carbon>
Download mbox | patch
Permalink /patch/25381/
State Accepted
Headers show

Comments

matthieu.laneuville@octobus.net - Nov. 3, 2017, 10:51 p.m.
# HG changeset patch
# User Matthieu Laneuville <matthieu.laneuville@octobus.net>
# Date 1508422437 -32400
#      Thu Oct 19 23:13:57 2017 +0900
# Node ID 223d34cb2d2a1c1c67053f4613cb76803a485573
# Parent  7ebf850d3166a64ff33b4b85adb481b533ddbf86
# EXP-Topic hg122
run-tests: allow automatic test discovery when providing folder as argument

Currently `run-tests.py` automatically discovers test only in the current
directory if no argument is provided. This patch makes it possible to pass a
number of tests and folders as arguments.
Yuya Nishihara - Nov. 4, 2017, 7:23 a.m.
On Sat, 04 Nov 2017 07:51:20 +0900, matthieu.laneuville@octobus.net wrote:
> # HG changeset patch
> # User Matthieu Laneuville <matthieu.laneuville@octobus.net>
> # Date 1508422437 -32400
> #      Thu Oct 19 23:13:57 2017 +0900
> # Node ID 223d34cb2d2a1c1c67053f4613cb76803a485573
> # Parent  7ebf850d3166a64ff33b4b85adb481b533ddbf86
> # EXP-Topic hg122
> run-tests: allow automatic test discovery when providing folder as argument

Queued, thanks.

Patch

diff -r 7ebf850d3166 -r 223d34cb2d2a tests/run-tests.py
--- a/tests/run-tests.py	Sat Oct 21 16:50:57 2017 +0900
+++ b/tests/run-tests.py	Thu Oct 19 23:13:57 2017 +0900
@@ -2510,6 +2510,16 @@  class TestRunner(object):
             else:
                 args = os.listdir(b'.')
 
+        expanded_args = []
+        for arg in args:
+            if os.path.isdir(arg):
+                if not arg.endswith(b'/'):
+                    arg += b'/'
+                expanded_args.extend([arg + a for a in os.listdir(arg)])
+            else:
+                expanded_args.append(arg)
+        args = expanded_args
+
         tests = []
         for t in args:
             if not (os.path.basename(t).startswith(b'test-')
diff -r 7ebf850d3166 -r 223d34cb2d2a tests/test-run-tests.t
--- a/tests/test-run-tests.t	Sat Oct 21 16:50:57 2017 +0900
+++ b/tests/test-run-tests.t	Thu Oct 19 23:13:57 2017 +0900
@@ -1261,6 +1261,24 @@  support for running a test outside the c
   .
   # Ran 1 tests, 0 skipped, 0 failed.
 
+support for automatically discovering test if arg is a folder
+  $ mkdir tmp && cd tmp
+
+  $ cat > test-uno.t << EOF
+  >   $ echo line
+  >   line
+  > EOF
+
+  $ cp test-uno.t test-dos.t
+  $ cd ..
+  $ cp -R tmp tmpp
+  $ cp tmp/test-uno.t test-solo.t
+
+  $ $PYTHON $TESTDIR/run-tests.py tmp/ test-solo.t tmpp
+  .....
+  # Ran 5 tests, 0 skipped, 0 failed.
+  $ rm -rf tmp tmpp
+
 support for running run-tests.py from another directory
   $ mkdir tmp && cd tmp
   $ cat > useful-file.sh << EOF