Release SyncVito 1.0.7
This commit is contained in:
1 parent
3d6ab87ce3
commit
a04db4ee96
10 files changed
+278
-28
No files matched your search
@@ -1,6 +1,8 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from syncvito.models import ConflictMode, DeleteMode, SyncDirection, SyncTask
|
||||
from syncvito.state_store import StateStore
|
||||
from syncvito.sync_engine import SyncEngine
|
||||
@@ -10,6 +12,37 @@ def _engine(tmp_path: Path) -> SyncEngine:
|
||||
return SyncEngine(StateStore(tmp_path / "state.json"))
|
||||
|
||||
|
||||
@pytest.mark.parametrize("winerror", [None, 5])
|
||||
def test_access_denied_is_not_reported_as_file_lock(
|
||||
tmp_path: Path, monkeypatch: pytest.MonkeyPatch, winerror: int | None
|
||||
) -> None:
|
||||
source = tmp_path / "source"
|
||||
target = tmp_path / "target"
|
||||
source.mkdir()
|
||||
(source / "geschuetzt.txt").write_text("geschützt")
|
||||
(source / "lesbar.txt").write_text("lesbar")
|
||||
from syncvito import sync_engine
|
||||
|
||||
copy = sync_engine._atomic_copy
|
||||
|
||||
def copy_with_denied_file(source_path: Path, target_path: Path) -> None:
|
||||
if source_path.name == "geschuetzt.txt":
|
||||
error = PermissionError(13, "Zugriff verweigert", str(source_path))
|
||||
if winerror is not None:
|
||||
error.winerror = winerror
|
||||
raise error
|
||||
copy(source_path, target_path)
|
||||
|
||||
monkeypatch.setattr(sync_engine, "_atomic_copy", copy_with_denied_file)
|
||||
result = _engine(tmp_path).synchronize(SyncTask(name="AppData", source=str(source), target=str(target)))
|
||||
|
||||
assert not result.successful
|
||||
assert not result.blocked
|
||||
assert len(result.errors) == 1
|
||||
assert str(source / "geschuetzt.txt") in result.errors[0]
|
||||
assert (target / "lesbar.txt").read_text() == "lesbar"
|
||||
|
||||
|
||||
def test_one_way_copy_and_mirror_delete(tmp_path: Path) -> None:
|
||||
source = tmp_path / "source"
|
||||
target = tmp_path / "target"
|
||||
|
||||
Reference in new issue
Block a user