284 |
284 |
285 failfast = "--failfast" in argv |
285 failfast = "--failfast" in argv |
286 if failfast: |
286 if failfast: |
287 argv.remove("--failfast") |
287 argv.remove("--failfast") |
288 |
288 |
289 coverage = "--cover" in argv |
289 collectCoverage = "--cover" in argv |
290 if coverage: |
290 if collectCoverage: |
291 argv.remove("--cover") |
291 argv.remove("--cover") |
292 coverageErase = "--cover-erase" in argv |
292 coverageErase = "--cover-erase" in argv |
293 if coverageErase: |
293 if coverageErase: |
294 argv.remove("--cover-erase") |
294 argv.remove("--cover-erase") |
|
295 if "--cover-file" in argv: |
|
296 index = argv.index("--cover-file") |
|
297 covDataFile = argv[index + 1] |
|
298 del argv[index:index + 2] |
|
299 else: |
|
300 covDataFile = "" |
295 |
301 |
296 if argv and argv[0] == "--failed-only": |
302 if argv and argv[0] == "--failed-only": |
297 if discover: |
303 if discover: |
298 testFileName = "" |
304 testFileName = "" |
299 failed = argv[1:] |
305 failed = argv[1:] |
312 |
318 |
313 if testFileName: |
319 if testFileName: |
314 sys.path.insert(1, os.path.dirname(os.path.abspath(testFileName))) |
320 sys.path.insert(1, os.path.dirname(os.path.abspath(testFileName))) |
315 elif discoveryStart: |
321 elif discoveryStart: |
316 sys.path.insert(1, os.path.abspath(discoveryStart)) |
322 sys.path.insert(1, os.path.abspath(discoveryStart)) |
|
323 |
|
324 # setup test coverage |
|
325 if collectCoverage: |
|
326 if not covDataFile: |
|
327 if discover: |
|
328 covname = os.path.join(discoveryStart, "test") |
|
329 elif testFileName: |
|
330 covname = os.path.splitext( |
|
331 os.path.abspath(testFileName))[0] |
|
332 else: |
|
333 covname = "test" |
|
334 covDataFile = "{0}.coverage".format(covname) |
|
335 if not os.path.isabs(covDataFile): |
|
336 covDataFile = os.path.abspath(covDataFile) |
|
337 |
|
338 sys.path.insert( |
|
339 2, |
|
340 os.path.abspath(os.path.join( |
|
341 os.path.dirname(__file__), "..", "..", "DebugClients", "Python" |
|
342 )) |
|
343 ) |
|
344 from DebugClients.Python.coverage import Coverage |
|
345 cover = Coverage(data_file=covDataFile) |
|
346 if coverageErase: |
|
347 cover.erase() |
|
348 cover.start() |
|
349 else: |
|
350 cover = None |
317 |
351 |
318 try: |
352 try: |
319 testLoader = unittest.TestLoader() |
353 testLoader = unittest.TestLoader() |
320 if discover and not failed: |
354 if discover and not failed: |
321 if testCases: |
355 if testCases: |
352 for id, name, desc in _assembleTestCasesList(test) |
386 for id, name, desc in _assembleTestCasesList(test) |
353 ] |
387 ] |
354 } |
388 } |
355 writer.write(collectedTests) |
389 writer.write(collectedTests) |
356 |
390 |
357 # setup test coverage |
|
358 if coverage: |
|
359 if discover: |
|
360 covname = os.path.join(discoveryStart, "unittest") |
|
361 elif testFileName: |
|
362 covname = os.path.splitext( |
|
363 os.path.abspath(testFileName))[0] |
|
364 else: |
|
365 covname = "unittest" |
|
366 covDataFile = "{0}.coverage".format(covname) |
|
367 if not os.path.isabs(covDataFile): |
|
368 covDataFile = os.path.abspath(covDataFile) |
|
369 |
|
370 from DebugClients.Python.coverage import coverage as cov |
|
371 cover = cov(data_file=covDataFile) |
|
372 if coverageErase: |
|
373 cover.erase() |
|
374 else: |
|
375 cover = None |
|
376 |
|
377 testResult = EricTestResult(writer, failfast) |
391 testResult = EricTestResult(writer, failfast) |
378 startTestRun = getattr(testResult, 'startTestRun', None) |
392 startTestRun = getattr(testResult, 'startTestRun', None) |
379 if startTestRun is not None: |
393 if startTestRun is not None: |
380 startTestRun() |
394 startTestRun() |
381 try: |
395 try: |
382 if cover: |
|
383 cover.start() |
|
384 test.run(testResult) |
396 test.run(testResult) |
385 finally: |
397 finally: |
386 if cover: |
398 if cover: |
387 cover.stop() |
399 cover.stop() |
388 cover.save() |
400 cover.save() |