8 """ |
8 """ |
9 |
9 |
10 from __future__ import unicode_literals |
10 from __future__ import unicode_literals |
11 |
11 |
12 import os |
12 import os |
13 import sys |
|
14 |
13 |
15 from PyQt5.QtCore import pyqtSlot, Qt |
14 from PyQt5.QtCore import pyqtSlot, Qt |
16 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMenu, QHeaderView, \ |
15 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMenu, QHeaderView, \ |
17 QTreeWidgetItem, QApplication |
16 QTreeWidgetItem, QApplication |
18 |
17 |
21 from E5Gui.E5ProgressDialog import E5ProgressDialog |
20 from E5Gui.E5ProgressDialog import E5ProgressDialog |
22 |
21 |
23 from .Ui_PyCoverageDialog import Ui_PyCoverageDialog |
22 from .Ui_PyCoverageDialog import Ui_PyCoverageDialog |
24 |
23 |
25 import Utilities |
24 import Utilities |
26 if sys.version_info[0] == 2: |
25 from coverage import coverage |
27 from DebugClients.Python.coverage import coverage |
26 from coverage.misc import CoverageException |
28 from DebugClients.Python.coverage.misc import CoverageException |
|
29 else: |
|
30 from DebugClients.Python3.coverage import coverage |
|
31 from DebugClients.Python3.coverage.misc import CoverageException |
|
32 |
27 |
33 |
28 |
34 class PyCoverageDialog(QDialog, Ui_PyCoverageDialog): |
29 class PyCoverageDialog(QDialog, Ui_PyCoverageDialog): |
35 """ |
30 """ |
36 Class implementing a dialog to display the collected code coverage data. |
31 Class implementing a dialog to display the collected code coverage data. |
172 files = [fn] |
167 files = [fn] |
173 self.path = os.path.dirname(cfn) |
168 self.path = os.path.dirname(cfn) |
174 files.sort() |
169 files.sort() |
175 |
170 |
176 cover = coverage(data_file=self.cfn) |
171 cover = coverage(data_file=self.cfn) |
177 cover.use_cache(True) |
|
178 cover.load() |
172 cover.load() |
179 |
173 |
180 # set the exclude pattern |
174 # set the exclude pattern |
181 self.excludeCombo.clear() |
175 self.excludeCombo.clear() |
182 self.excludeCombo.addItems(self.excludeList) |
176 self.excludeCombo.addItems(self.excludeList) |
320 """ |
314 """ |
321 itm = self.resultList.currentItem() |
315 itm = self.resultList.currentItem() |
322 fn = itm.text(0) |
316 fn = itm.text(0) |
323 |
317 |
324 cover = coverage(data_file=self.cfn) |
318 cover = coverage(data_file=self.cfn) |
325 cover.use_cache(True) |
|
326 cover.exclude(self.excludeList[0]) |
319 cover.exclude(self.excludeList[0]) |
327 cover.load() |
320 cover.load() |
328 cover.annotate([fn], None, True) |
321 cover.annotate([fn], None, True) |
329 |
322 |
330 def __annotateAll(self): |
323 def __annotateAll(self): |
343 for index in range(amount): |
336 for index in range(amount): |
344 itm = self.resultList.topLevelItem(index) |
337 itm = self.resultList.topLevelItem(index) |
345 files.append(itm.text(0)) |
338 files.append(itm.text(0)) |
346 |
339 |
347 cover = coverage(data_file=self.cfn) |
340 cover = coverage(data_file=self.cfn) |
348 cover.use_cache(True) |
|
349 cover.exclude(self.excludeList[0]) |
341 cover.exclude(self.excludeList[0]) |
350 cover.load() |
342 cover.load() |
351 |
343 |
352 # now process them |
344 # now process them |
353 progress = E5ProgressDialog( |
345 progress = E5ProgressDialog( |
372 |
364 |
373 This method erases the collected coverage data that is |
365 This method erases the collected coverage data that is |
374 stored in the .coverage file. |
366 stored in the .coverage file. |
375 """ |
367 """ |
376 cover = coverage(data_file=self.cfn) |
368 cover = coverage(data_file=self.cfn) |
377 cover.use_cache(True) |
|
378 cover.load() |
369 cover.load() |
379 cover.erase() |
370 cover.erase() |
380 |
371 |
381 self.reloadButton.setEnabled(False) |
372 self.reloadButton.setEnabled(False) |
382 self.resultList.clear() |
373 self.resultList.clear() |