diff -r f1d7dd7ae471 -r 339bb8c8007d eric7/Unittest/Interfaces/UnittestRunner.py --- a/eric7/Unittest/Interfaces/UnittestRunner.py Sat May 14 18:56:52 2022 +0200 +++ b/eric7/Unittest/Interfaces/UnittestRunner.py Sun May 15 18:08:31 2022 +0200 @@ -293,13 +293,22 @@ if coverageErase: argv.remove("--cover-erase") - if not discover: - testFileName, testName = argv[:2] - del argv[:2] + if argv and argv[0] == "--failed-only": + if discover: + testFileName = "" + failed = argv[1:] + else: + testFileName = argv[1] + failed = argv[2:] else: - testFileName = testName = "" - - testCases = argv[:] + failed = [] + if discover: + testFileName = testName = "" + else: + testFileName, testName = argv[:2] + del argv[:2] + + testCases = argv[:] if testFileName: sys.path.insert(1, os.path.dirname(os.path.abspath(testFileName))) @@ -308,7 +317,7 @@ try: testLoader = unittest.TestLoader() - if discover: + if discover and not failed: if testCases: test = testLoader.loadTestsFromNames(testCases) else: @@ -319,18 +328,15 @@ os.path.basename(testFileName))[0]) else: module = None - # TODO: implement 'failed only' -# if failedOnly and self.__failedTests: -# if module: -# failed = [t.split(".", 1)[1] -# for t in self.__failedTests] -# else: -# failed = list(self.__failedTests) -# test = testLoader.loadTestsFromNames( -# failed, module) -# else: - test = testLoader.loadTestsFromName( - testName, module) + if failed: + if module: + failed = [t.split(".", 1)[1] + for t in failed] + test = testLoader.loadTestsFromNames( + failed, module) + else: + test = testLoader.loadTestsFromName( + testName, module) except Exception as err: print("Exception:", str(err)) writer.write({