5
5
from dataclasses import dataclass
6
6
from itertools import chain
7
7
from pathlib import Path
8
- from typing import TYPE_CHECKING , Any , Callable , Iterator , List , Optional , cast
8
+ from typing import TYPE_CHECKING , Any , Iterator , List , Optional , cast
9
9
10
10
from ....jsonrpc2 .protocol import rpc_method
11
11
from ....utils .async_tools import threaded
@@ -121,27 +121,12 @@ async def get_tests_from_workspace(
121
121
* args : Any ,
122
122
** kwargs : Any ,
123
123
) -> List [TestItem ]:
124
-
125
124
from robot .output .logger import LOGGER
126
- from robot .parsing import get_model
127
- from robot .parsing .suitestructure import SuiteStructureBuilder
128
125
from robot .running import TestCase , TestSuite
129
- from robot .running .builder .builders import (
130
- NoInitFileDirectoryParser ,
131
- RobotParser ,
132
- SuiteStructureParser ,
133
- TestSuiteBuilder ,
134
- )
126
+ from robot .running .builder .builders import RobotParser , TestSuiteBuilder
135
127
136
128
from ..utils .version import get_robot_version
137
129
138
- if get_robot_version () >= (6 , 0 ):
139
- from robot .running .builder .settings import (
140
- Defaults as TestDefaults , # pyright: reportMissingImports=false
141
- )
142
- else :
143
- from robot .running .builder .testsettings import TestDefaults
144
-
145
130
def get_document_text (source : str ) -> str :
146
131
if self .parent ._loop :
147
132
doc = self .parent .documents .get_sync (Uri .from_path (source ).normalized ())
@@ -150,112 +135,16 @@ def get_document_text(source: str) -> str:
150
135
151
136
return source
152
137
153
- class MyRobotParser (RobotParser ):
154
- def _get_source (self , source : str ) -> Any :
155
- return get_document_text (source )
156
-
157
- def _build (
158
- self ,
159
- suite : TestSuite ,
160
- source : str ,
161
- defaults : TestDefaults ,
162
- model : Optional [ast .AST ] = None ,
163
- get_model : Callable [..., Any ] = get_model ,
164
- ) -> TestSuite :
165
-
166
- from robot .running .builder .transformers import (
167
- SettingsBuilder ,
168
- SuiteBuilder ,
169
- )
138
+ def get_source (self : Any , source : str ) -> str :
139
+ return get_document_text (source )
170
140
171
- if defaults is None :
172
- defaults = TestDefaults ()
173
- if model is None :
174
- try :
175
- if get_robot_version () >= (6 , 0 ):
176
- model = get_model (
177
- self ._get_source (source ),
178
- data_only = True ,
179
- curdir = self ._get_curdir (source ),
180
- lang = self .lang ,
181
- )
182
- else :
183
- model = get_model (self ._get_source (source ), data_only = True , curdir = self ._get_curdir (source ))
184
- except (asyncio .CancelledError , SystemExit , KeyboardInterrupt ):
185
- raise
186
- except BaseException :
187
- pass
188
-
189
- if model is None :
190
- return suite
191
-
192
- SettingsBuilder (suite , defaults ).visit (model )
193
- SuiteBuilder (suite , defaults ).visit (model )
194
- suite .rpa = self ._get_rpa_mode (model )
195
- return suite
196
-
197
- class MyRestParser (MyRobotParser ):
198
- def _get_source (self , source : str ) -> Any :
199
- from robot .utils import read_rest_data
200
- from robot .utils .filereader import FileReader
201
-
202
- with FileReader (source ) as reader :
203
- return read_rest_data (reader )
204
-
205
- class MySuiteStructureParserWithLang (SuiteStructureParser ):
206
- def _get_parsers (self , extensions : List [str ], lang : Any , process_curdir : bool ) -> RobotParser :
207
- robot_parser = MyRobotParser (lang , process_curdir )
208
- rest_parser = MyRestParser (lang , process_curdir )
209
- parsers = {
210
- None : NoInitFileDirectoryParser (),
211
- "robot" : robot_parser ,
212
- "rst" : rest_parser ,
213
- "rest" : rest_parser ,
214
- }
215
- for ext in extensions :
216
- if ext not in parsers :
217
- parsers [ext ] = robot_parser
218
- return parsers
219
-
220
- def _validate_execution_mode (self , suite : Any ) -> None :
221
- super ()._validate_execution_mode (suite )
222
-
223
- class MySuiteStructureParser (SuiteStructureParser ):
224
- def _get_parsers (self , extensions : List [str ], process_curdir : bool ) -> RobotParser :
225
- robot_parser = MyRobotParser (process_curdir )
226
- rest_parser = MyRestParser (process_curdir )
227
- parsers = {
228
- None : NoInitFileDirectoryParser (),
229
- "robot" : robot_parser ,
230
- "rst" : rest_parser ,
231
- "rest" : rest_parser ,
232
- }
233
- for ext in extensions :
234
- if ext not in parsers :
235
- parsers [ext ] = robot_parser
236
- return parsers
237
-
238
- def _validate_execution_mode (self , suite : Any ) -> None :
239
- super ()._validate_execution_mode (suite )
240
-
241
- class MyTestSuiteBuilder (TestSuiteBuilder ):
242
- def _validate_test_counts (self , suite : TestSuite , multisource : bool = False ) -> None :
243
- # we don't need this
244
- pass
245
-
246
- def build (self , * paths : str ) -> TestSuite :
247
- structure = SuiteStructureBuilder (self .included_extensions , self .included_suites ).build (paths )
248
- if get_robot_version () >= (6 , 0 ):
249
- parser = MySuiteStructureParserWithLang (
250
- self .included_extensions , self .rpa , self .lang , self .process_curdir
251
- )
252
- else :
253
- parser = MySuiteStructureParser (self .included_extensions , self .rpa , self .process_curdir )
254
- suite = parser .parse (structure )
255
- if not self .included_suites and not self .allow_empty_suite :
256
- self ._validate_test_counts (suite , multisource = len (paths ) > 1 )
257
- suite .remove_empty_suites (preserve_direct_children = len (paths ) > 1 )
258
- return suite
141
+ RobotParser ._get_source = get_source
142
+
143
+ def _validate_test_counts (self : Any , suite : TestSuite , multisource : bool = False ) -> None :
144
+ # we don't need this
145
+ pass
146
+
147
+ TestSuiteBuilder ._validate_test_counts = _validate_test_counts
259
148
260
149
def generate (suite : TestSuite ) -> TestItem :
261
150
children : List [TestItem ] = []
@@ -337,11 +226,13 @@ def nonexisting_paths(paths: List[str]) -> Iterator[str]:
337
226
valid_paths = [i for i in normalize_paths (paths )]
338
227
339
228
if get_robot_version () >= (6 , 0 ):
340
- builder = MyTestSuiteBuilder (
341
- included_suites = suites if suites else None , rpa = rpa_mode , lang = languages
229
+ builder = TestSuiteBuilder (
230
+ included_suites = suites if suites else None ,
231
+ rpa = rpa_mode ,
232
+ lang = languages ,
342
233
)
343
234
else :
344
- builder = MyTestSuiteBuilder (included_suites = suites if suites else None , rpa = rpa_mode )
235
+ builder = TestSuiteBuilder (included_suites = suites if suites else None , rpa = rpa_mode )
345
236
346
237
suite : Optional [TestSuite ] = builder .build (* valid_paths ) if valid_paths else None
347
238
suite_item = [generate (suite )] if suite else []
@@ -370,11 +261,13 @@ def nonexisting_paths(paths: List[str]) -> Iterator[str]:
370
261
]
371
262
else :
372
263
if get_robot_version () >= (6 , 0 ):
373
- builder = MyTestSuiteBuilder (
374
- included_suites = suites if suites else None , rpa = rpa_mode , lang = languages
264
+ builder = TestSuiteBuilder (
265
+ included_suites = suites if suites else None ,
266
+ rpa = rpa_mode ,
267
+ lang = languages ,
375
268
)
376
269
else :
377
- builder = MyTestSuiteBuilder (included_suites = suites if suites else None , rpa = rpa_mode )
270
+ builder = TestSuiteBuilder (included_suites = suites if suites else None , rpa = rpa_mode )
378
271
return [generate (builder .build (str (workspace_path )))]
379
272
except (SystemExit , KeyboardInterrupt ):
380
273
raise
0 commit comments