src/eric7/Testing/Interfaces/PytestExecutor.py

Wed, 20 Dec 2023 10:49:45 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 20 Dec 2023 10:49:45 +0100
branch
eric7
changeset 10426
1150e67efb5a
parent 10415
af9a6dac2611
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Testing
- Corrected some source code documentation.

9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9546
diff changeset
3 # Copyright (c) 2022 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the executor for the 'pytest' framework.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import contextlib
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import json
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import os
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
14 from PyQt6.QtCore import QProcess, pyqtSlot
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
16 from eric7.EricNetwork.EricJsonStreamReader import EricJsonReader
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
17
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
18 from .TestExecutorBase import TestExecutorBase, TestResult, TestResultCategory
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
21 class PytestExecutor(TestExecutorBase):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 Class implementing the executor for the 'pytest' framework.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
25
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 module = "pytest"
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 name = "pytest"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
28
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 runner = os.path.join(os.path.dirname(__file__), "PytestRunner.py")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
30
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
31 def __init__(self, testWidget):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
32 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
33 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
35 @param testWidget reference to the unit test widget
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
36 @type TestingWidget
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
37 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
38 super().__init__(testWidget)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
39
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
40 self.__statusDisplayMapping = {
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
41 "failed": self.tr("Failure"),
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
42 "skipped": self.tr("Skipped"),
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
43 "xfailed": self.tr("Expected Failure"),
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
44 "xpassed": self.tr("Unexpected Success"),
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
45 "passed": self.tr("Success"),
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
46 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
48 self.__config = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
49
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 def getVersions(self, interpreter):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 Public method to get the test framework version and version information
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 of its installed plugins.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @param interpreter interpreter to be used for the test
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @type str
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 @return dictionary containing the framework name and version and the
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 list of available plugins with name and version each
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @rtype dict
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 proc = QProcess()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 proc.start(interpreter, [PytestExecutor.runner, "versions"])
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 if proc.waitForFinished(3000):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 exitCode = proc.exitCode()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 if exitCode == 0:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 outputLines = self.readAllOutput(proc).splitlines()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 for line in outputLines:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 if line.startswith("{") and line.endswith("}"):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 with contextlib.suppress(json.JSONDecodeError):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 return json.loads(line)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 return {}
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
74 def hasCoverage(self, interpreter):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
75 """
10426
1150e67efb5a Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10415
diff changeset
76 Public method to check, if the collection of coverage data is available.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
78 @param interpreter interpreter to be used for the test
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
79 @type str
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
80 @return flag indicating the availability of coverage functionality
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
81 @rtype bool
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
82 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
83 versions = self.getVersions(interpreter)
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
84 if "plugins" in versions:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85 return any(plugin["name"] == "pytest-cov" for plugin in versions["plugins"])
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
87 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10050
diff changeset
89 def supportsPatterns(self, interpreter): # noqa: U100
9313
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
90 """
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
91 Public method to indicate the support for test filtering using test name
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
92 patterns or a test name pattern expression.
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
93
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
94 @param interpreter interpreter to be used for the test
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
95 @type str
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
96 @return flag indicating support of markers
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
97 @rtype bool
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
98 """
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
99 return True
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
100
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10050
diff changeset
101 def supportsMarkers(self, interpreter): # noqa: U100
9311
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
102 """
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
103 Public method to indicate the support for test filtering using markers and/or
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
104 marker expressions.
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
105
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
106 @param interpreter interpreter to be used for the test
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
107 @type str
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
108 @return flag indicating support of markers
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
109 @rtype bool
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
110 """
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
111 return True
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
112
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
113 def getMarkers(self, interpreter, workdir):
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
114 """
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
115 Public method to get the list of defined markers.
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
116
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
117 @param interpreter interpreter to be used for the test
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
118 @type str
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
119 @param workdir name of the working directory
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
120 @type str
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
121 @return dictionary containing the marker as key and the associated description
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
122 as value
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
123 @rtype dict
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
124 """
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
125 proc = QProcess()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
126 proc.setWorkingDirectory(workdir)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
127 proc.start(interpreter, [PytestExecutor.runner, "markers"])
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
128 if proc.waitForFinished(3000):
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
129 exitCode = proc.exitCode()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
130 if exitCode == 0:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
131 outputLines = self.readAllOutput(proc).splitlines()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
132 for line in outputLines:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
133 if line.startswith("{") and line.endswith("}"):
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
134 with contextlib.suppress(json.JSONDecodeError):
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
135 return json.loads(line)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
136
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
137 return {}
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
138
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
139 def createArguments(self, config):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
140 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
141 Public method to create the arguments needed to start the test process.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
143 @param config configuration for the test execution
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
144 @type TestConfig
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
145 @return list of process arguments
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
146 @rtype list of str
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
147 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
148 #
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
149 # collectCoverage: --cov= + --cov-report= to suppress report generation
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
150 # eraseCoverage: --cov-append if eraseCoverage is False
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
151 # coverageFile
9175
21e2be5f0b41 Changed code to use the 'trove-classifiers' package instead of a local text file copy or a download from PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
152 #
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
153 args = [
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
154 PytestExecutor.runner,
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
155 "runtest",
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
156 self.reader.address(),
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
157 str(self.reader.port()),
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
158 "--quiet",
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
159 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
161 if config.failFast:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
162 args.append("--exitfirst")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
164 if config.failedOnly:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
165 args.append("--last-failed")
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
166 else:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
167 args.append("--cache-clear")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
169 if not config.discoverOnly and config.collectCoverage:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170 args.extend(["--cov=.", "--cov-report="])
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
171 if not config.eraseCoverage:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
172 args.append("--cov-append")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173
9311
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
174 if config.testMarkerExpression:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
175 args.append("-m")
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
176 args.append(config.testMarkerExpression)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
177
9313
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
178 if config.testNamePattern:
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
179 args.append("-k")
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
180 args.append(config.testNamePattern)
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
181
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
182 if config.discoverOnly:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
183 args.append("--collect-only")
9313
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
184
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
185 if config.testCases:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
186 args.extend(config.testCases)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
187 elif config.testFilename:
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
188 if config.testName:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
189 args.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
190 "{0}::{1}".format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
191 config.testFilename, config.testName.replace(".", "::")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
193 )
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
194 else:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
195 args.append(config.testFilename)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
196
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
197 return args
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
198
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
199 def discover(self, config, pythonpath):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
200 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
201 Public method to start the test discovery process.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
202
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
203 @param config configuration for the test discovery
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
204 @type TestConfig
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
205 @param pythonpath list of directories to be added to the Python path
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
206 @type list of str
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
207 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
208 self.reader = EricJsonReader(name="Pytest Reader", parent=self)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
209 self.reader.dataReceived.connect(self.__processData)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
210
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
211 self.__config = config
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
212
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
213 pythonpath.insert(0, os.path.abspath(config.discoveryStart))
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
214 self.__rootdir = config.discoveryStart
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
215
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
216 super().discover(config, pythonpath)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
217
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
218 def start(self, config, pythonpath):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
219 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
220 Public method to start the testing process.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
221
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
222 @param config configuration for the test execution
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
223 @type TestConfig
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
224 @param pythonpath list of directories to be added to the Python path
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
225 @type list of str
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
226 """
9546
9ab5b929408b Corrected a string used for debugging in the Pytest Executor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
227 self.reader = EricJsonReader(name="Pytest Reader", parent=self)
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
228 self.reader.dataReceived.connect(self.__processData)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
229
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
230 self.__config = config
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
231
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
232 if config.discoveryStart:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
233 pythonpath.insert(0, os.path.abspath(config.discoveryStart))
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
234 elif config.testFilename:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
235 pythonpath.insert(0, os.path.abspath(os.path.dirname(config.testFilename)))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
236
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
237 if config.discover:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
238 self.__rootdir = config.discoveryStart
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
239 elif config.testFilename:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
240 self.__rootdir = os.path.dirname(config.testFilename)
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
241 else:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
242 self.__rootdir = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
243
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
244 super().start(config, pythonpath)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
245
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
246 def startDebug(self, config, pythonpath, debugger):
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
247 """
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
248 Public method to start the test run with debugger support.
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
249
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
250 @param config configuration for the test execution
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
251 @type TestConfig
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
252 @param pythonpath list of directories to be added to the Python path
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
253 @type list of str
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
254 @param debugger refference to the debugger interface
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
255 @type DebugUI
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
256 """
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
257 self.reader = EricJsonReader(name="Pytest Reader", parent=self)
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
258 self.reader.dataReceived.connect(self.__processData)
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
259
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
260 self.__config = config
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
261
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
262 if config.discoveryStart:
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
263 pythonpath.insert(0, os.path.abspath(config.discoveryStart))
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
264 elif config.testFilename:
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
265 pythonpath.insert(0, os.path.abspath(os.path.dirname(config.testFilename)))
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
266
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
267 if config.discover:
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
268 self.__rootdir = config.discoveryStart
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
269 elif config.testFilename:
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
270 self.__rootdir = os.path.dirname(config.testFilename)
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
271 else:
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
272 self.__rootdir = ""
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
273
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
274 super().startDebug(config, pythonpath, debugger)
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
275
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
276 def finished(self):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
277 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
278 Public method handling the unit test process been finished.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
279
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
280 This method should read the results (if necessary) and emit the signal
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
281 testFinished.
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
282 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
283 if self.__config.collectCoverage:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
284 self.coverageDataSaved.emit(os.path.join(self.__rootdir, ".coverage"))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
285
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
286 self.__config = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
287
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
288 self.reader.close()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
289
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
290 output = self.readAllOutput()
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
291 self.testFinished.emit([], output)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
292
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
293 super().finished()
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
294
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
295 @pyqtSlot(object)
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
296 def __processData(self, data):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
297 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
298 Private slot to process the received data.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
299
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
300 @param data data object received
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
301 @type dict
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
302 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
303 # test configuration
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
304 if data["event"] == "config":
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
305 self.__rootdir = data["root"]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
306
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
307 # error collecting tests
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
308 elif data["event"] == "collecterror":
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
309 name = self.__normalizeModuleName(data["nodeid"])
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
310 self.collectError.emit([(name, data["report"])])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
311
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
312 # tests collected
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
313 elif data["event"] == "collected":
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
314 self.collected.emit(
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
315 [
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
316 (
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
317 data["nodeid"],
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
318 self.__nodeid2testname(data["nodeid"]),
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
319 "",
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
320 os.path.join(self.__rootdir, data["filename"]),
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
321 data["linenumber"],
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
322 self.__nodeid2testpath(data["nodeid"]),
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
323 )
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
324 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
325 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
327 # test started
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
328 elif data["event"] == "starttest":
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
329 self.startTest.emit(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
330 (data["nodeid"], self.__nodeid2testname(data["nodeid"]), "")
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
331 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
332
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
333 # test result
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
334 elif data["event"] == "result":
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
335 if data["status"] in ("failed", "xpassed") or data["with_error"]:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
336 category = TestResultCategory.FAIL
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
337 elif data["status"] in ("passed", "xfailed"):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
338 category = TestResultCategory.OK
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
339 else:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
340 category = TestResultCategory.SKIP
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
341
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
342 status = (
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
343 self.tr("Error")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
344 if data["with_error"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
345 else self.__statusDisplayMapping[data["status"]]
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
346 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
347
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
348 message = data.get("message", "")
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
349 extraText = data.get("report", "")
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
350 reportPhase = data.get("report_phase")
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
351 if reportPhase in ("setup", "teardown"):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352 message = self.tr("ERROR at {0}: {1}", "phase, message").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
353 reportPhase, message
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
354 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355 extraText = self.tr("ERROR at {0}: {1}", "phase, extra text").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356 reportPhase, extraText
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
357 )
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
358 sections = data.get("sections", [])
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
359 if sections:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
360 extraText += "\n"
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
361 for heading, text in sections:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
362 extraText += "----- {0} -----\n{1}".format(heading, text)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363
10050
3750abc45d5e Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
364 duration = data.get("duration_s")
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
365 if duration:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
366 # convert to ms
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
367 duration *= 1000
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
368
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
369 filename = data["filename"]
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
370 if self.__rootdir:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
371 filename = os.path.join(self.__rootdir, filename)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
372
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
373 self.testResult.emit(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
374 TestResult(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
375 category=category,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
376 status=status,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
377 name=self.__nodeid2testname(data["nodeid"]),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
378 id=data["nodeid"],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
379 description="",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
380 message=message,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
381 extra=extraText.rstrip().splitlines(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
382 duration=duration,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
383 filename=filename,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
384 lineno=data.get("linenumber", 0) + 1,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
385 # pytest reports 0-based line numbers
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
387 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
388
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
389 # test run finished
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
390 elif data["event"] == "finished":
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
391 self.testRunFinished.emit(data["tests"], data["duration_s"])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
392
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
393 def __normalizeModuleName(self, name):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
394 r"""
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
395 Private method to convert a module name reported by pytest to Python
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
396 conventions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
398 This method strips the extensions '.pyw' and '.py' first and replaces
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
399 '/' and '\' thereafter.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
400
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
401 @param name module name reported by pytest
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
402 @type str
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
403 @return module name iaw. Python conventions
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
404 @rtype str
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
405 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
406 return (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
407 name.replace(".pyw", "")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
408 .replace(".py", "")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
409 .replace("/", ".")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
410 .replace("\\", ".")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
411 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
412
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
413 def __nodeid2testname(self, nodeid):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
414 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
415 Private method to convert a nodeid to a test name.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
416
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
417 @param nodeid nodeid to be converted
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
418 @type str
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
419 @return test name
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
420 @rtype str
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
421 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
422 module, name = nodeid.split("::", 1)
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
423 module = self.__normalizeModuleName(module)
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
424 name = name.replace("::", ".")
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
425 testname, name = "{0}.{1}".format(module, name).rsplit(".", 1)
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
426 return "{0} ({1})".format(name, testname)
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
427
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
428 def __nodeid2testpath(self, nodeid):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
429 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
430 Private method to convert a nodeid to a test path list.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
431
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
432 @param nodeid nodeid to be converted
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
433 @type str
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
434 @return test path list
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
435 @rtype list of str
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
436 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
437 module, name = nodeid.split("::", 1)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
438 module = self.__normalizeModuleName(module)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
439 name = "{0}.{1}".format(module, name.replace("::", "."))
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
440 return name.split(".")

eric ide

mercurial