Lines Matching refs:self

54     def __init__(self, *args, **kwargs):
55 self.currentResult = None
56 self.running = 0
57 self.__rollbackImporter = RollbackImporter()
58 self.test_suite = None
61 self.directory_to_read = ''
62 self.top_level_dir = ''
63 self.test_file_glob_pattern = 'test*.py'
65 self.initGUI(*args, **kwargs)
67 def errorDialog(self, title, message):
71 def getDirectoryToDiscover(self):
75 def runClicked(self):
77 if self.running: return
78 if not self.test_suite:
79 self.errorDialog("Test Discovery", "You discover some tests first!")
81 self.currentResult = GUITestResult(self)
82 self.totalTests = self.test_suite.countTestCases()
83 self.running = 1
84 self.notifyRunning()
85 self.test_suite.run(self.currentResult)
86 self.running = 0
87 self.notifyStopped()
89 def stopClicked(self):
91 if self.currentResult:
92 self.currentResult.stop()
94 def discoverClicked(self):
95 self.__rollbackImporter.rollbackImports()
96 directory = self.getDirectoryToDiscover()
99 self.directory_to_read = directory
104 top_level_dir = self.top_level_dir or None
105 tests = unittest.defaultTestLoader.discover(directory, self.test_file_glob_pattern, top_level_dir)
106 self.test_suite = tests
110 self.errorDialog("Unable to run test '%s'" % directory,
113 self.notifyTestsDiscovered(self.test_suite)
117 def notifyTestsDiscovered(self, test_suite):
121 def notifyRunning(self):
125 def notifyStopped(self):
129 def notifyTestFailed(self, test, err):
133 def notifyTestErrored(self, test, err):
137 def notifyTestSkipped(self, test, reason):
141 def notifyTestFailedExpectedly(self, test, err):
145 def notifyTestStarted(self, test):
149 def notifyTestFinished(self, test):
159 def __init__(self, callback):
160 unittest.TestResult.__init__(self)
161 self.callback = callback
163 def addError(self, test, err):
164 unittest.TestResult.addError(self, test, err)
165 self.callback.notifyTestErrored(test, err)
167 def addFailure(self, test, err):
168 unittest.TestResult.addFailure(self, test, err)
169 self.callback.notifyTestFailed(test, err)
171 def addSkip(self, test, reason):
172 super(GUITestResult,self).addSkip(test, reason)
173 self.callback.notifyTestSkipped(test, reason)
175 def addExpectedFailure(self, test, err):
176 super(GUITestResult,self).addExpectedFailure(test, err)
177 self.callback.notifyTestFailedExpectedly(test, err)
179 def stopTest(self, test):
180 unittest.TestResult.stopTest(self, test)
181 self.callback.notifyTestFinished(test)
183 def startTest(self, test):
184 unittest.TestResult.startTest(self, test)
185 self.callback.notifyTestStarted(test)
192 def __init__(self):
193 self.previousModules = sys.modules.copy()
195 def rollbackImports(self):
197 if not modname in self.previousModules:
211 def __init__(self, master, top_level_dir, test_file_glob_pattern, *args, **kwargs):
212 self.top_level_dir = top_level_dir
213 self.dirVar = tk.StringVar()
214 self.dirVar.set(top_level_dir)
216 self.test_file_glob_pattern = test_file_glob_pattern
217 self.testPatternVar = tk.StringVar()
218 self.testPatternVar.set(test_file_glob_pattern)
220 simpledialog.Dialog.__init__(self, master, title="Discover Settings",
223 def body(self, master):
225 self.e1 = tk.Entry(master, textvariable=self.dirVar)
226 self.e1.grid(row = 0, column=1)
228 command=lambda: self.selectDirClicked(master)).grid(row=0,column=3)
231 self.e2 = tk.Entry(master, textvariable = self.testPatternVar)
232 self.e2.grid(row = 1, column=1)
235 def selectDirClicked(self, master):
238 self.dirVar.set(dir_path)
240 def apply(self):
241 self.top_level_dir = self.dirVar.get()
242 self.test_file_glob_pattern = self.testPatternVar.get()
247 def initGUI(self, root, initialTestName):
251 self.root = root
253 self.statusVar = tk.StringVar()
254 self.statusVar.set("Idle")
257 self.runCountVar = tk.IntVar()
258 self.failCountVar = tk.IntVar()
259 self.errorCountVar = tk.IntVar()
260 self.skipCountVar = tk.IntVar()
261 self.expectFailCountVar = tk.IntVar()
262 self.remainingCountVar = tk.IntVar()
264 self.top = tk.Frame()
265 self.top.pack(fill=tk.BOTH, expand=1)
266 self.createWidgets()
268 def getDirectoryToDiscover(self):
271 def settingsClicked(self):
272 d = DiscoverSettingsDialog(self.top, self.top_level_dir, self.test_file_glob_pattern)
273 self.top_level_dir = d.top_level_dir
274 self.test_file_glob_pattern = d.test_file_glob_pattern
276 def notifyTestsDiscovered(self, test_suite):
278 self.runCountVar.set(0)
279 self.failCountVar.set(0)
280 self.errorCountVar.set(0)
281 self.remainingCountVar.set(discovered)
282 self.progressBar.setProgressFraction(0.0)
283 self.errorListbox.delete(0, tk.END)
284 self.statusVar.set("Discovering tests from %s. Found: %s" %
285 (self.directory_to_read, discovered))
286 self.stopGoButton['state'] = tk.NORMAL
288 def createWidgets(self):
295 statusFrame = tk.Frame(self.top, relief=tk.SUNKEN, borderwidth=2)
297 tk.Label(statusFrame, width=1, textvariable=self.statusVar).pack(side=tk.TOP, fill=tk.X)
300 leftFrame = tk.Frame(self.top, borderwidth=3)
309 self.progressBar = ProgressBar(progressFrame, relief=tk.SUNKEN,
311 self.progressBar.pack(fill=tk.X, expand=1)
315 buttonFrame = tk.Frame(self.top, borderwidth=3)
319 command=self.discoverClicked).pack(fill=tk.X)
322 self.stopGoButton = tk.Button(buttonFrame, text="Start",
323 command=self.runClicked, state=tk.DISABLED)
324 self.stopGoButton.pack(fill=tk.X)
327 command=self.top.quit).pack(side=tk.BOTTOM, fill=tk.X)
329 command=self.settingsClicked).pack(side=tk.BOTTOM, fill=tk.X)
332 for label, var in (('Run:', self.runCountVar),
333 ('Failures:', self.failCountVar),
334 ('Errors:', self.errorCountVar),
335 ('Skipped:', self.skipCountVar),
336 ('Expected Failures:', self.expectFailCountVar),
337 ('Remaining:', self.remainingCountVar),
348 self.errorListbox = tk.Listbox(listFrame, foreground='red',
351 self.errorListbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=1,
353 listScroll = tk.Scrollbar(listFrame, command=self.errorListbox.yview)
355 self.errorListbox.bind("<Double-1>",
356 lambda e, self=self: self.showSelectedError())
357 self.errorListbox.configure(yscrollcommand=listScroll.set)
359 def errorDialog(self, title, message):
360 messagebox.showerror(parent=self.root, title=title,
363 def notifyRunning(self):
364 self.runCountVar.set(0)
365 self.failCountVar.set(0)
366 self.errorCountVar.set(0)
367 self.remainingCountVar.set(self.totalTests)
368 self.errorInfo = []
369 while self.errorListbox.size():
370 self.errorListbox.delete(0)
372 #self.stopGoButton.config(command=self.stopClicked, text="Stop")
373 self.stopGoButton.config(state=tk.DISABLED)
374 self.progressBar.setProgressFraction(0.0)
375 self.top.update_idletasks()
377 def notifyStopped(self):
378 self.stopGoButton.config(state=tk.DISABLED)
379 #self.stopGoButton.config(command=self.runClicked, text="Start")
380 self.statusVar.set("Idle")
382 def notifyTestStarted(self, test):
383 self.statusVar.set(str(test))
384 self.top.update_idletasks()
386 def notifyTestFailed(self, test, err):
387 self.failCountVar.set(1 + self.failCountVar.get())
388 self.errorListbox.insert(tk.END, "Failure: %s" % test)
389 self.errorInfo.append((test,err))
391 def notifyTestErrored(self, test, err):
392 self.errorCountVar.set(1 + self.errorCountVar.get())
393 self.errorListbox.insert(tk.END, "Error: %s" % test)
394 self.errorInfo.append((test,err))
396 def notifyTestSkipped(self, test, reason):
397 super(TkTestRunner, self).notifyTestSkipped(test, reason)
398 self.skipCountVar.set(1 + self.skipCountVar.get())
400 def notifyTestFailedExpectedly(self, test, err):
401 super(TkTestRunner, self).notifyTestFailedExpectedly(test, err)
402 self.expectFailCountVar.set(1 + self.expectFailCountVar.get())
405 def notifyTestFinished(self, test):
406 self.remainingCountVar.set(self.remainingCountVar.get() - 1)
407 self.runCountVar.set(1 + self.runCountVar.get())
408 fractionDone = float(self.runCountVar.get())/float(self.totalTests)
409 fillColor = len(self.errorInfo) and "red" or "green"
410 self.progressBar.setProgressFraction(fractionDone, fillColor)
412 def showSelectedError(self):
413 selection = self.errorListbox.curselection()
416 txt = self.errorListbox.get(selected)
417 window = tk.Toplevel(self.root)
420 test, error = self.errorInfo[selected]
437 def __init__(self, *args, **kwargs):
438 tk.Frame.__init__(self, *args, **kwargs)
439 self.canvas = tk.Canvas(self, height='20', width='60',
441 self.canvas.pack(fill=tk.X, expand=1)
442 self.rect = self.text = None
443 self.canvas.bind('<Configure>', self.paint)
444 self.setProgressFraction(0.0)
446 def setProgressFraction(self, fraction, color='blue'):
447 self.fraction = fraction
448 self.color = color
449 self.paint()
450 self.canvas.update_idletasks()
452 def paint(self, *args):
453 totalWidth = self.canvas.winfo_width()
454 width = int(self.fraction * float(totalWidth))
455 height = self.canvas.winfo_height()
456 if self.rect is not None: self.canvas.delete(self.rect)
457 if self.text is not None: self.canvas.delete(self.text)
458 self.rect = self.canvas.create_rectangle(0, 0, width, height,
459 fill=self.color)
460 percentString = "%3.0f%%" % (100.0 * self.fraction)
461 self.text = self.canvas.create_text(totalWidth/2, height/2,