""" """ import logging import os import platform 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 path import Path from MnCheck.core.constants import MAIN, LOGDIR, RSCDIR, CONTACT, TESTDIR, COVERAGE_DIR from qgis.core import QgsProject #@UnresolvedImport 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()