Add test coverage of build settings class
This commit is contained in:
@@ -39,7 +39,6 @@ from novelwriter.enum import nwBuildFmt
|
||||
from novelwriter.error import logException
|
||||
from novelwriter.common import checkUuid, isHandle, jsonEncode
|
||||
from novelwriter.constants import nwFiles, nwHeadFmt
|
||||
from novelwriter.core.item import NWItem
|
||||
from novelwriter.core.project import NWProject
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -208,15 +207,15 @@ class BuildSettings:
|
||||
def getInt(self, key: str) -> int:
|
||||
"""Type safe value access for integers."""
|
||||
value = self._settings.get(key, SETTINGS_TEMPLATE.get(key, (None, None)[1]))
|
||||
if isinstance(value, int):
|
||||
return value
|
||||
if isinstance(value, (int, float)):
|
||||
return int(value)
|
||||
return 0
|
||||
|
||||
def getFloat(self, key: str) -> float:
|
||||
"""Type safe value access for floats."""
|
||||
value = self._settings.get(key, SETTINGS_TEMPLATE.get(key, (None, None)[1]))
|
||||
if isinstance(value, float):
|
||||
return value
|
||||
if isinstance(value, (int, float)):
|
||||
return float(value)
|
||||
return 0.0
|
||||
|
||||
##
|
||||
@@ -282,8 +281,8 @@ class BuildSettings:
|
||||
self._changed = True
|
||||
return
|
||||
|
||||
def setSkipRoot(self, tHandle: str, state: bool):
|
||||
"""Set a specific root folder as skipped or not."""
|
||||
def setAllowRoot(self, tHandle: str, state: bool):
|
||||
"""Set a specific root folder as allowed or not."""
|
||||
if state is True:
|
||||
self._skipRoot.discard(tHandle)
|
||||
self._changed = True
|
||||
@@ -299,7 +298,7 @@ class BuildSettings:
|
||||
definition = SETTINGS_TEMPLATE[key]
|
||||
if not isinstance(value, definition[0]):
|
||||
return False
|
||||
if len(definition) == 4:
|
||||
if len(definition) == 4 and isinstance(value, (int, float)):
|
||||
value = min(max(value, definition[2]), definition[3])
|
||||
self._changed = value != self._settings[key]
|
||||
self._settings[key] = value
|
||||
@@ -330,10 +329,7 @@ class BuildSettings:
|
||||
|
||||
for item in project.tree:
|
||||
tHandle = item.itemHandle
|
||||
if not tHandle:
|
||||
continue
|
||||
if not isinstance(item, NWItem):
|
||||
result[tHandle] = (False, FilterMode.UNKNOWN)
|
||||
if tHandle is None:
|
||||
continue
|
||||
if item.isInactiveClass() or (item.itemRoot in self._skipRoot):
|
||||
result[tHandle] = (False, FilterMode.SKIPPED)
|
||||
@@ -401,7 +397,7 @@ class BuildSettings:
|
||||
self.setLastPath(data.get("path", None))
|
||||
self.setLastBuildName(data.get("build", ""))
|
||||
|
||||
buildFmt = str(data.get("build", ""))
|
||||
buildFmt = str(data.get("format", ""))
|
||||
if buildFmt in nwBuildFmt.__members__:
|
||||
self.setLastFormat(nwBuildFmt[buildFmt])
|
||||
|
||||
|
||||
@@ -423,7 +423,7 @@ class _FilterTab(QWidget):
|
||||
self._build.setValue(key[4:], state)
|
||||
self._setTreeItemMode()
|
||||
elif key.startswith("root:"):
|
||||
self._build.setSkipRoot(key[5:], state)
|
||||
self._build.setAllowRoot(key[5:], state)
|
||||
self._populateTree()
|
||||
return
|
||||
|
||||
@@ -512,14 +512,14 @@ class _FilterTab(QWidget):
|
||||
|
||||
# Root Classes
|
||||
self.filterOpt.addLabel(self.tr("Root Folders"))
|
||||
for tHandle, nwItem in self.theProject.tree.iterRoots(None):
|
||||
for nwItem in self.theProject.getProjectItems():
|
||||
if not nwItem.isInactiveClass():
|
||||
itemIcon = self.mainTheme.getItemIcon(
|
||||
nwItem.itemType, nwItem.itemClass, nwItem.itemLayout
|
||||
)
|
||||
self.filterOpt.addItem(
|
||||
itemIcon, nwItem.itemName, f"root:{tHandle}",
|
||||
default=self._build.isRootAllowed(tHandle)
|
||||
itemIcon, nwItem.itemName, f"root:{nwItem.itemHandle}",
|
||||
default=self._build.isRootAllowed(nwItem.itemHandle)
|
||||
)
|
||||
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user