212 lines
5.8 KiB
Python
212 lines
5.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""novelWriter Test Config
|
|
"""
|
|
|
|
import sys
|
|
import pytest
|
|
import shutil
|
|
import os
|
|
|
|
from nwdummy import DummyMain
|
|
|
|
# from PyQt5.QtWidgets import QMessageBox
|
|
|
|
sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))
|
|
|
|
from nw.config import Config # noqa: E402
|
|
|
|
##
|
|
# Core Test Folders
|
|
##
|
|
|
|
@pytest.fixture(scope="session")
|
|
def tmpDir():
|
|
"""A temporary folder for the test session. This folder is
|
|
presistent after the test so that the status of generated files can
|
|
be checked. The folder is instead cleared before a new test session.
|
|
"""
|
|
testDir = os.path.dirname(__file__)
|
|
tempDir = os.path.join(testDir, "temp")
|
|
if os.path.isdir(tempDir):
|
|
shutil.rmtree(tempDir)
|
|
if not os.path.isdir(tempDir):
|
|
os.mkdir(tempDir)
|
|
return tempDir
|
|
|
|
# @pytest.fixture(scope="session")
|
|
# def nwRef():
|
|
# """The folder where all the reference files are stored for verifying
|
|
# the results of tests.
|
|
# """
|
|
# testDir = os.path.dirname(__file__)
|
|
# refDir = os.path.join(testDir, "reference")
|
|
# return refDir
|
|
|
|
##
|
|
# novelWriter Objects
|
|
##
|
|
|
|
# @pytest.fixture(scope="session")
|
|
# def tmpConf(nwTemp):
|
|
# """Create a temporary novelWriter configuration object.
|
|
# """
|
|
# theConf = Config()
|
|
# theConf.initConfig(nwTemp, nwTemp)
|
|
# theConf.setLastPath("")
|
|
# return theConf
|
|
|
|
@pytest.fixture(scope="session")
|
|
def tmpConf(tmpDir):
|
|
"""Create a temporary novelWriter configuration object.
|
|
"""
|
|
theConf = Config()
|
|
theConf.initConfig(tmpDir, tmpDir)
|
|
theConf.setLastPath("")
|
|
return theConf
|
|
|
|
# @pytest.fixture(scope="session")
|
|
# def nwConf(nwRef, nwTemp):
|
|
# """Temporary novelWriter configuration used for the dummy instance
|
|
# of novelWriter's main GUI.
|
|
# """
|
|
# theConf = Config()
|
|
# theConf.initConfig(nwRef, nwTemp)
|
|
# return theConf
|
|
|
|
@pytest.fixture(scope="session")
|
|
def dummyGUI(tmpConf):
|
|
"""Create a dummy instance of novelWriter's main GUI class.
|
|
"""
|
|
theDummy = DummyMain()
|
|
theDummy.mainConf = tmpConf
|
|
return theDummy
|
|
|
|
##
|
|
# Temporary Test Folders
|
|
##
|
|
|
|
# @pytest.fixture(scope="session")
|
|
# def nwTempProj(nwTemp):
|
|
# """A temporary folder for project tests.
|
|
# """
|
|
# projDir = os.path.join(nwTemp, "proj")
|
|
# if not os.path.isdir(projDir):
|
|
# os.mkdir(projDir)
|
|
# return projDir
|
|
|
|
# @pytest.fixture(scope="session")
|
|
# def nwTempGUI(nwTemp):
|
|
# """A temporary folder for GUI tests.
|
|
# """
|
|
# guiDir = os.path.join(nwTemp, "gui")
|
|
# if not os.path.isdir(guiDir):
|
|
# os.mkdir(guiDir)
|
|
# return guiDir
|
|
|
|
# @pytest.fixture(scope="session")
|
|
# def nwTempBuild(nwTemp):
|
|
# """A temporary folder for build tests.
|
|
# """
|
|
# buildDir = os.path.join(nwTemp, "build")
|
|
# if not os.path.isdir(buildDir):
|
|
# os.mkdir(buildDir)
|
|
# return buildDir
|
|
|
|
# @pytest.fixture(scope="function")
|
|
# def nwFuncTemp(nwTemp):
|
|
# """A temporary folder for a single test function.
|
|
# """
|
|
# funcDir = os.path.join(nwTemp, "ftemp")
|
|
# if os.path.isdir(funcDir):
|
|
# shutil.rmtree(funcDir)
|
|
# if not os.path.isdir(funcDir):
|
|
# os.mkdir(funcDir)
|
|
# yield funcDir
|
|
# if os.path.isdir(funcDir):
|
|
# shutil.rmtree(funcDir)
|
|
# return
|
|
|
|
##
|
|
# Temp Folders for Projects
|
|
##
|
|
|
|
# @pytest.fixture(scope="function")
|
|
# def nwMinimal(nwTemp):
|
|
# """A minimal novelWriter example project.
|
|
# """
|
|
# testDir = os.path.dirname(__file__)
|
|
# minimalStore = os.path.join(testDir, "minimal")
|
|
# minimalDir = os.path.join(nwTemp, "minimal")
|
|
# if os.path.isdir(minimalDir):
|
|
# shutil.rmtree(minimalDir)
|
|
# shutil.copytree(minimalStore, minimalDir)
|
|
# cacheDir = os.path.join(minimalDir, "cache")
|
|
# if os.path.isdir(cacheDir):
|
|
# shutil.rmtree(cacheDir)
|
|
# metaDir = os.path.join(minimalDir, "meta")
|
|
# if os.path.isdir(metaDir):
|
|
# shutil.rmtree(metaDir)
|
|
# yield minimalDir
|
|
# if os.path.isdir(minimalDir):
|
|
# shutil.rmtree(minimalDir)
|
|
# return
|
|
|
|
# @pytest.fixture(scope="function")
|
|
# def nwLipsum(nwTemp):
|
|
# """A medium sized novelWriter example project with a lot of Lorem
|
|
# Ipsum dummy text.
|
|
# """
|
|
# testDir = os.path.dirname(__file__)
|
|
# lipsumStore = os.path.join(testDir, "lipsum")
|
|
# lipsumDir = os.path.join(nwTemp, "lipsum")
|
|
# if os.path.isdir(lipsumDir):
|
|
# shutil.rmtree(lipsumDir)
|
|
# shutil.copytree(lipsumStore, lipsumDir)
|
|
# cacheDir = os.path.join(lipsumDir, "cache")
|
|
# if os.path.isdir(cacheDir):
|
|
# shutil.rmtree(cacheDir)
|
|
# metaDir = os.path.join(lipsumDir, "meta")
|
|
# if os.path.isdir(metaDir):
|
|
# shutil.rmtree(metaDir)
|
|
# yield lipsumDir
|
|
# if os.path.isdir(lipsumDir):
|
|
# shutil.rmtree(lipsumDir)
|
|
# return
|
|
|
|
# @pytest.fixture(scope="function")
|
|
# def nwOldProj(nwTemp):
|
|
# """A minimal movelWriter project using the old folder structure.
|
|
# """
|
|
# testDir = os.path.dirname(__file__)
|
|
# oldProjStore = os.path.join(testDir, "oldproj")
|
|
# oldProjDir = os.path.join(nwTemp, "oldproj")
|
|
# if os.path.isdir(oldProjDir):
|
|
# shutil.rmtree(oldProjDir)
|
|
# shutil.copytree(oldProjStore, oldProjDir)
|
|
# yield oldProjDir
|
|
# if os.path.isdir(oldProjDir):
|
|
# shutil.rmtree(oldProjDir)
|
|
# return
|
|
|
|
##
|
|
# Monkey Patch Dialogs
|
|
##
|
|
|
|
# @pytest.fixture(scope="function")
|
|
# def yesToAll(monkeypatch):
|
|
# """Make the message boxes/questions always say yes.
|
|
# """
|
|
# monkeypatch.setattr(
|
|
# QMessageBox, "question", lambda *args, **kwargs: QMessageBox.Yes
|
|
# )
|
|
# monkeypatch.setattr(
|
|
# QMessageBox, "information", lambda *args, **kwargs: QMessageBox.Yes
|
|
# )
|
|
# monkeypatch.setattr(
|
|
# QMessageBox, "warning", lambda *args, **kwargs: QMessageBox.Yes
|
|
# )
|
|
# monkeypatch.setattr(
|
|
# QMessageBox, "critical", lambda *args, **kwargs: QMessageBox.Yes
|
|
# )
|
|
# return
|