eric7/Testing/Interfaces/UnittestExecutor.py

Sun, 05 Jun 2022 17:17:44 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 05 Jun 2022 17:17:44 +0200
branch
eric7-maintenance
changeset 9131
bc0c1b6d6adb
child 9192
a763d57e23bc
permissions
-rw-r--r--

Corrected the VCS tracing state of the recently merged files.

9131
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the executor for the standard 'unittest' framework.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import contextlib
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import json
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import os
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import re
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from PyQt6.QtCore import pyqtSlot, QProcess
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from EricNetwork.EricJsonStreamReader import EricJsonReader
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from .TestExecutorBase import TestExecutorBase, TestResult, TestResultCategory
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 class UnittestExecutor(TestExecutorBase):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Class implementing the executor for the standard 'unittest' framework.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 module = "unittest"
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 name = "unittest"
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 runner = os.path.join(os.path.dirname(__file__), "UnittestRunner.py")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 def __init__(self, testWidget):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Constructor
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @param testWidget reference to the unit test widget
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @type TestingWidget
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 super().__init__(testWidget)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.__statusCategoryMapping = {
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 "failure": TestResultCategory.FAIL,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 "error": TestResultCategory.FAIL,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 "skipped": TestResultCategory.SKIP,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 "expected failure": TestResultCategory.OK,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 "unexpected success": TestResultCategory.FAIL,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 "success": TestResultCategory.OK,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 }
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__statusDisplayMapping = {
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 "failure": self.tr("Failure"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 "error": self.tr("Error"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 "skipped": self.tr("Skipped"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 "expected failure": self.tr("Expected Failure"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 "unexpected success": self.tr("Unexpected Success"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 "success": self.tr("Success"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 }
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.__testWidget = testWidget
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 def getVersions(self, interpreter):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 Public method to get the test framework version and version information
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 of its installed plugins.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @param interpreter interpreter to be used for the test
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @type str
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @return dictionary containing the framework name and version and the
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 list of available plugins with name and version each
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @rtype dict
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 proc = QProcess()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 proc.start(interpreter, [UnittestExecutor.runner, "versions"])
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 if proc.waitForFinished(3000):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 exitCode = proc.exitCode()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 if exitCode == 0:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 versionsStr = self.readAllOutput(proc)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 with contextlib.suppress(json.JSONDecodeError):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 return json.loads(versionsStr)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 return {}
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 def hasCoverage(self, interpreter):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 Public method to get the test framework version and version information
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 of its installed plugins.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 @param interpreter interpreter to be used for the test
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @type str
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @return flag indicating the availability of coverage functionality
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @rtype bool
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 return True
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 def createArguments(self, config):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 Public method to create the arguments needed to start the test process.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @param config configuration for the test execution
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 @type TestConfig
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 @return list of process arguments
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 @rtype list of str
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 args = [
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 UnittestExecutor.runner,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 "runtest",
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.reader.address(),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 str(self.reader.port()),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 ]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 if config.discover:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 args.extend([
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 "discover",
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 "--start-directory",
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 config.discoveryStart,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 ])
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 if config.failFast:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 args.append("--failfast")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 if config.collectCoverage:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 args.append("--cover")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 if config.eraseCoverage:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 args.append("--cover-erase")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 if config.coverageFile:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 args.append("--cover-file")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 args.append(config.coverageFile)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 if config.failedOnly:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 args.append("--failed-only")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 if config.testFilename:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 args.append(config.testFilename)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 args.extend(self.__testWidget.getFailedTests())
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 elif config.testFilename:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 args.append(config.testFilename)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 args.append(config.testName if config.testName else "suite")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 return args
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 def start(self, config, pythonpath):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 Public method to start the testing process.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 @param config configuration for the test execution
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 @type TestConfig
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 @param pythonpath list of directories to be added to the Python path
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 @type list of str
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.reader = EricJsonReader(name="Unittest Reader", parent=self)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 self.reader.dataReceived.connect(self.__processData)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 super().start(config, pythonpath)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 def finished(self):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 Public method handling the unit test process been finished.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 This method should read the results (if necessary) and emit the signal
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 testFinished.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 self.reader.close()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 output = self.readAllOutput()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 self.testFinished.emit([], output)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 @pyqtSlot(object)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 def __processData(self, data):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 Private slot to process the received data.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 @param data data object received
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 @type dict
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 # error collecting tests
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 if data["event"] == "collecterror":
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 self.collectError.emit([("", data["error"])])
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 # tests collected
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 elif data["event"] == "collected":
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 self.collected.emit([
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 (t["id"], t["name"], t["description"]) for t in data["tests"]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 ])
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 # test started
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 elif data["event"] == "started":
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 self.startTest.emit(
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 (data["id"], data["name"], data["description"])
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 )
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 # test result
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 elif data["event"] == "result":
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 filename, lineno = None, None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 tracebackLines = data.get("traceback", "").splitlines()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 if tracebackLines:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 # find the last entry matching the pattern
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 for index in range(len(tracebackLines) - 1, -1, -1):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 fmatch = re.search(r'File "(.*?)", line (\d*?),.*',
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 tracebackLines[index])
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 if fmatch:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 break
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 if fmatch:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 filename = fmatch.group(1)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 lineno = int(fmatch.group(2))
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 message = data.get("shortmsg", "")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 if not message and tracebackLines:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 message = tracebackLines[-1].split(":", 1)[1].strip()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 self.testResult.emit(TestResult(
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 category=self.__statusCategoryMapping[data["status"]],
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 status=self.__statusDisplayMapping[data["status"]],
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 name=data["name"],
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 id=data["id"],
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 description=data["description"],
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 message=message,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 extra=tracebackLines,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 duration=data.get("duration_ms", None),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 filename=filename,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 lineno=lineno,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 subtestResult=data.get("subtest", False)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 ))
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 # test run finished
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 elif data["event"] == "finished":
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 self.testRunFinished.emit(data["tests"], data["duration_s"])
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 # coverage data
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 elif data["event"] == "coverage":
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 self.coverageDataSaved.emit(data["file"])

eric ide

mercurial