[Request] [+- ] D8938: run-tests: refactor filtering logic for --retest flag
khanchi97 (Sushil khanchi)
phabricator at mercurial-scm.org
Sat Aug 22 11:05:39 UTC 2020
khanchi97 created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
How I got to this:
While re-running failed tests using --retest I noticed that the output:
"running x tests using y parallel processes".
was not actually correct, because x was the total number of tests present
in the directory, but it should be the number of failed tests. Although
it would run only the failed tests and later will say that remaining tests
were skipped.
This patch change and move the logic for filtering failed test for
--retest option and make sure that we create instances of
class Test only for the tests we need to run.
As mentioned in the deleted text (in this patch itself) the logic
for --retest should be outside of TestSuite.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D8938
AFFECTED FILES
tests/run-tests.py
tests/test-run-tests.t
CHANGE DETAILS
diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t
--- a/tests/test-run-tests.t
+++ b/tests/test-run-tests.t
@@ -497,7 +497,7 @@
====================
$ rt --retest
- running 2 tests using 1 parallel processes
+ running 1 tests using 1 parallel processes
--- $TESTTMP/test-failure.t
+++ $TESTTMP/test-failure.t.err
@@ -512,7 +512,7 @@
ERROR: test-failure.t output changed
!
Failed test-failure.t: output changed
- # Ran 2 tests, 1 skipped, 1 failed.
+ # Ran 1 tests, 0 skipped, 1 failed.
python hash seed: * (glob)
[1]
@@ -521,7 +521,7 @@
$ mkdir output
$ mv test-failure.t.err output
$ rt --retest --outputdir output
- running 2 tests using 1 parallel processes
+ running 1 tests using 1 parallel processes
--- $TESTTMP/test-failure.t
+++ $TESTTMP/output/test-failure.t.err
@@ -536,7 +536,7 @@
ERROR: test-failure.t output changed
!
Failed test-failure.t: output changed
- # Ran 2 tests, 1 skipped, 1 failed.
+ # Ran 1 tests, 0 skipped, 1 failed.
python hash seed: * (glob)
[1]
diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -2336,7 +2336,6 @@
jobs=1,
whitelist=None,
blacklist=None,
- retest=False,
keywords=None,
loop=False,
runs_per_test=1,
@@ -2364,9 +2363,6 @@
backwards compatible behavior which reports skipped tests as part
of the results.
- retest denotes whether to retest failed tests. This arguably belongs
- outside of TestSuite.
-
keywords denotes key words that will be used to filter which tests
to execute. This arguably belongs outside of TestSuite.
@@ -2377,7 +2373,6 @@
self._jobs = jobs
self._whitelist = whitelist
self._blacklist = blacklist
- self._retest = retest
self._keywords = keywords
self._loop = loop
self._runs_per_test = runs_per_test
@@ -2407,10 +2402,6 @@
result.addSkip(test, 'blacklisted')
continue
- if self._retest and not os.path.exists(test.errpath):
- result.addIgnore(test, 'not retesting')
- continue
-
if self._keywords:
with open(test.path, 'rb') as f:
t = f.read().lower() + test.bname.lower()
@@ -3253,6 +3244,21 @@
tests.append({'path': t})
else:
tests.append({'path': t})
+
+ if self.options.retest:
+ retest_args = []
+ for test in tests:
+ if 'case' in test:
+ casestr = b'#'.join(test['case'])
+ errpath = b'%s#%s.err' % (test['path'], casestr)
+ else:
+ errpath = b'%s.err' % test['path']
+ if self.options.outputdir:
+ errpath = os.path.join(self.options.outputdir, errpath)
+
+ if os.path.exists(errpath):
+ retest_args.append(test)
+ tests = retest_args
return tests
def _runtests(self, testdescs):
@@ -3298,7 +3304,6 @@
jobs=jobs,
whitelist=self.options.whitelisted,
blacklist=self.options.blacklist,
- retest=self.options.retest,
keywords=kws,
loop=self.options.loop,
runs_per_test=self.options.runs_per_test,
To: khanchi97, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20200822/197d1b1c/attachment-0001.html>
More information about the Mercurial-patches
mailing list