Fix inconsistent clearing of lockfiles in projects

This commit is contained in:
Veronica Berglyd Olsen
2023-07-24 23:29:39 +02:00
parent 7965e3365b
commit 1752d5c5cb
4 changed files with 10 additions and 7 deletions
-1
View File
@@ -407,7 +407,6 @@ class NWProject(QObject):
self._options.saveSettings()
self._tree.writeToCFile()
self._session.appendSession(idleTime)
self._storage.clearLockFile()
self._storage.closeSession()
self.clearProject()
self._lockedBy = None
+4 -3
View File
@@ -67,6 +67,7 @@ class NWStorage:
"""Reset internal variables."""
self._storagePath = None
self._runtimePath = None
self._lockFilePath = None
self._openMode = self.MODE_INACTIVE
return
@@ -146,7 +147,7 @@ class NWStorage:
def closeSession(self):
"""Run tasks related to closing the session."""
# Clear lockfile
self.clearLockFile()
self.clear()
return
@@ -189,7 +190,7 @@ class NWStorage:
if item.suffix == ".nwd" and isHandle(item.stem)
] if contentPath else []
def readLockFile(self) -> list:
def readLockFile(self) -> list[str]:
"""Read the project lock file."""
if self._lockFilePath is None:
return ["ERROR"]
@@ -198,7 +199,7 @@ class NWStorage:
return []
try:
lines = self._lockFilePath.read_text(encoding="utf-8").split(";")
lines = self._lockFilePath.read_text(encoding="utf-8").strip().split(";")
except Exception:
logger.error("Failed to read project lockfile")
logException()
+5 -2
View File
@@ -29,6 +29,7 @@ from tools import C, cmpFiles, writeFile, buildTestProject, XML_IGNORE
from novelwriter import CONFIG
from novelwriter.enum import nwItemClass, nwItemType, nwItemLayout
from novelwriter.constants import nwFiles
from novelwriter.core.tree import NWTree
from novelwriter.core.index import NWIndex
from novelwriter.core.project import NWProject
@@ -172,7 +173,8 @@ def testCoreProject_Open(monkeypatch, caplog, mockGUI, fncPath, mockRnd):
assert theProject.openProject(fncPath) is False
# Fail on lock file
assert theProject._storage.writeLockFile()
theProject.storage._lockFilePath = fncPath / nwFiles.PROJ_LOCK
assert theProject.storage.writeLockFile() is True
assert theProject.openProject(fncPath) is False
assert isinstance(theProject.getLockStatus(), list)
@@ -185,7 +187,8 @@ def testCoreProject_Open(monkeypatch, caplog, mockGUI, fncPath, mockRnd):
theProject.closeProject()
# Force open with lockfile
assert theProject._storage.writeLockFile()
theProject.storage._lockFilePath = fncPath / nwFiles.PROJ_LOCK
assert theProject.storage.writeLockFile() is True
assert theProject.openProject(fncPath, overrideLock=True) is True
theProject.closeProject()
assert theProject.getLockStatus() is None
+1 -1
View File
@@ -92,7 +92,7 @@ def testCoreStorage_OpenProjectInPlace(mockGUI, fncPath, mockRnd):
assert isinstance(storage.getXmlWriter(), ProjectXMLWriter)
# Get content
assert sorted(storage.scanContent()) == sorted([C.hTitlePage, C.hChapterDoc, C.hSceneDoc])
assert sorted(storage.scanContent()) == [C.hTitlePage, C.hChapterDoc, C.hSceneDoc]
# Get document
assert storage.getDocument(C.hSceneDoc).readDocument() == "### New Scene\n\n"