PyUnit/UnittestDialog.py

changeset 6897
701256697721
parent 6896
3716c4af48bb
child 6899
8c4cf9c405c7
equal deleted inserted replaced
6896:3716c4af48bb 6897:701256697721
135 self.fileHistory = [] 135 self.fileHistory = []
136 self.testNameHistory = [] 136 self.testNameHistory = []
137 self.running = False 137 self.running = False
138 self.savedModulelist = None 138 self.savedModulelist = None
139 self.savedSysPath = sys.path 139 self.savedSysPath = sys.path
140 self.savedCwd = os.getcwd()
140 if prog: 141 if prog:
141 self.insertProg(prog) 142 self.insertProg(prog)
142 143
143 self.rxPatterns = [ 144 self.rxPatterns = [
144 self.tr("^Failure: "), 145 self.tr("^Failure: "),
315 Private slot handling state changes of the 'discover' checkbox. 316 Private slot handling state changes of the 'discover' checkbox.
316 317
317 @param checked state of the checkbox 318 @param checked state of the checkbox
318 @type bool 319 @type bool
319 """ 320 """
320 self.startFailedButton.setEnabled( 321 # TODO: enable this code once the discover button is available
321 bool(self.__failedTests) and not checked) 322 # self.discoverButton.setEnabled(checked)
322 323
323 def on_buttonBox_clicked(self, button): 324 def on_buttonBox_clicked(self, button):
324 """ 325 """
325 Private slot called by a button of the button box clicked. 326 Private slot called by a button of the button box clicked.
326 327
338 """ 339 """
339 Public slot to start the test. 340 Public slot to start the test.
340 341
341 @keyparam failedOnly flag indicating to run only failed tests (boolean) 342 @keyparam failedOnly flag indicating to run only failed tests (boolean)
342 """ 343 """
343 # TODO: run only failed test ignoring test parameters when failedOnly is set
344 if self.running: 344 if self.running:
345 return 345 return
346 346
347 discover = self.discoverCheckBox.isChecked() 347 discover = self.discoverCheckBox.isChecked()
348 if discover: 348 if discover:
436 self.__venvManager.getVirtualenvVariant(venvName) 436 self.__venvManager.getVirtualenvVariant(venvName)
437 if not clientType: 437 if not clientType:
438 # assume Python 3 438 # assume Python 3
439 clientType = "Python3" 439 clientType = "Python3"
440 sysPath = [] 440 sysPath = []
441 if not discover and failedOnly and self.__failedTests: 441 if failedOnly and self.__failedTests:
442 failed = self.__failedTests[:] 442 failed = self.__failedTests[:]
443 if discover:
444 workdir = discoveryStart
445 discover = False
443 else: 446 else:
444 failed = [] 447 failed = []
445 self.__failedTests = [] 448 self.__failedTests = []
446 self.__dbs.remoteUTPrepare( 449 self.__dbs.remoteUTPrepare(
447 testFileName, self.testName, testName, failed, 450 testFileName, self.testName, testName, failed,
450 forProject=self.__forProject, workdir=workdir, 453 forProject=self.__forProject, workdir=workdir,
451 venvName=venvName, syspath=sysPath, 454 venvName=venvName, syspath=sysPath,
452 discover=discover, discoveryStart=discoveryStart) 455 discover=discover, discoveryStart=discoveryStart)
453 else: 456 else:
454 # we are running as an application 457 # we are running as an application
458 if discover and not discoveryStart:
459 E5MessageBox.critical(
460 self,
461 self.tr("Unittest"),
462 self.tr("You must enter a start directory for"
463 " auto-discovery."))
464 return
465
455 if testFileName: 466 if testFileName:
456 sys.path = [os.path.dirname(os.path.abspath(testFileName))] + \ 467 sys.path = [os.path.dirname(os.path.abspath(testFileName))] + \
457 self.savedSysPath 468 self.savedSysPath
458 469
459 # clean up list of imported modules to force a reimport upon 470 # clean up list of imported modules to force a reimport upon
463 if modname not in self.savedModulelist: 474 if modname not in self.savedModulelist:
464 # delete it 475 # delete it
465 del(sys.modules[modname]) 476 del(sys.modules[modname])
466 self.savedModulelist = sys.modules.copy() 477 self.savedModulelist = sys.modules.copy()
467 478
479 os.chdir(self.savedCwd)
480
468 # now try to generate the testsuite 481 # now try to generate the testsuite
469 try: 482 try:
483 if failedOnly and self.__failedTests:
484 failed = self.__failedTests[:]
485 if discover:
486 os.chdir(discoveryStart)
487 discover = False
488 else:
489 failed = []
470 if discover: 490 if discover:
471 if not discoveryStart:
472 E5MessageBox.critical(
473 self,
474 self.tr("Unittest"),
475 self.tr("You must enter a start directory for"
476 " auto-discovery."))
477 return
478
479 test = unittest.defaultTestLoader.discover(discoveryStart) 491 test = unittest.defaultTestLoader.discover(discoveryStart)
480 # testsList = self.__assembleTestCasesList(test) 492 # testsList = self.__assembleTestCasesList(test)
481 else: 493 else:
482 if testFileName: 494 if testFileName:
483 module = __import__(self.testName) 495 module = __import__(self.testName)
657 """ 669 """
658 self.stopTime = time.time() 670 self.stopTime = time.time()
659 self.timeTaken = float(self.stopTime - self.startTime) 671 self.timeTaken = float(self.stopTime - self.startTime)
660 self.running = False 672 self.running = False
661 673
662 failedAvailable = bool(self.__failedTests) and \ 674 failedAvailable = bool(self.__failedTests)
663 not self.discoverCheckBox.isChecked()
664 self.startButton.setEnabled(True) 675 self.startButton.setEnabled(True)
665 self.startFailedButton.setEnabled(failedAvailable) 676 self.startFailedButton.setEnabled(failedAvailable)
666 self.stopButton.setEnabled(False) 677 self.stopButton.setEnabled(False)
667 if failedAvailable: 678 if failedAvailable:
668 self.startFailedButton.setDefault(True) 679 self.startFailedButton.setDefault(True)

eric ide

mercurial