""" """ import logging import os import platform from qgis.core import QgsProject import subprocess import unittest from PyQt5 import QtWidgets from PyQt5 import uic from PyQt5.QtCore import Qt from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtWidgets import QTextBrowser, QApplication import coverage from core.constants import MAIN, LOGDIR, RSCDIR, CONTACT, TESTDIR, COVERAGE_DIR from path import Path logger = logging.getLogger("mncheck") Ui_Contact, _ = uic.loadUiType(MAIN / 'ui'/ 'dlg_contact.ui') class DlgContact(QtWidgets.QDialog): def __init__(self, parent=None): super().__init__(parent) self.createWidgets() def createWidgets(self): """ set up the interface """ self.ui = Ui_Contact() self.ui.setupUi(self) self.setWindowIcon(QIcon(MAIN / "icon.png")) self.ui.lbl_mn_logo.setPixmap(QPixmap(RSCDIR / "mn_logo_mini.png")) self.ui.lbl_warning_logo.setPixmap(QPixmap(RSCDIR / "warning_16.png")) self.ui.lbl_mail.setText(f"{CONTACT}") self.ui.lbl_mail.setTextFormat(Qt.RichText) self.ui.lbl_mail.setTextInteractionFlags(Qt.TextBrowserInteraction) self.ui.lbl_mail.setOpenExternalLinks(True) self.ui.btn_open_log_dir.clicked.connect(self.open_log_dir) self.ui.btn_test.setVisible(Path(MAIN / "test").isdir()) self.ui.btn_test.clicked.connect(self.run_tests) self._chk_dlg = QTextBrowser() self._chk_dlg.setMinimumSize(500, 400) self._chk_dlg.setWindowTitle("Checkup: Résultats") def open_log_dir(self): path = Path(LOGDIR).abspath() if platform.system() == "Windows": os.startfile(path) else: subprocess.Popen(["open", path]) def run_tests(self): cov = coverage.Coverage() cov.start() _initial_project = QgsProject.instance().absoluteFilePath() if _initial_project: QgsProject.instance().write(_initial_project) QApplication.setOverrideCursor(Qt.WaitCursor) loader = unittest.TestLoader() tests = loader.discover(Path(TESTDIR).abspath()) with open(LOGDIR / "checkup.txt", "w+") as f: runner = unittest.TextTestRunner(stream=f) runner.run(tests) cov.stop() cov.save() COVERAGE_DIR.mkdir_p() cov.html_report(directory=COVERAGE_DIR) if _initial_project: QgsProject.instance().clear() QgsProject.instance().read(_initial_project) QApplication.restoreOverrideCursor() with open(LOGDIR / "checkup.txt", "r") as f: self._chk_dlg.setText(f.read()) self._chk_dlg.show()