Commit Graph

5 Commits

Author SHA1 Message Date
amir 29b5d555b8 Add edge-case + stress test battery (14 tests)
Build & Release APK / build (push) Successful in 12m54s
Empty files, 20MB large file (byte-intact round-trip), 8-level deep nesting,
unicode folder names, 200-char filenames, no-extension files, idempotency/loop
guard (repeated syncs upload nothing), bulk update/delete/download (10 each),
KEEP_BOTH conflict, min-size + include-extension filters, whole-folder wipe.
All green on a Galaxy S23 against live Nextcloud.
2026-06-05 14:54:38 +00:00
amir 369e260158 Add 100-file volume test (subfolders + non-ASCII, 0 failures, no re-sync loop)
Build & Release APK / build (push) Successful in 12m53s
Verifies the engine handles 100+ files in one sync without failures and that a
follow-up sync is a clean no-op (no phantom re-uploads at volume).
2026-06-05 14:45:49 +00:00
amir 1ecae2c690 Fix WebDAV upload of non-ASCII/special filenames (URL + MOVE header encoding)
Build & Release APK / build (push) Successful in 12m50s
Volume test (100 files) surfaced it: files with non-ASCII names (e.g. 'naïve
café.txt') failed to upload — url() built a raw string, so the MOVE Destination
header carried non-ASCII chars that OkHttp rejects. Now url() percent-encodes
each path segment via HttpUrl.addPathSegments (also covers '&', spaces, CJK).
Regression test specialAndNonAsciiNames_upload added.
2026-06-05 14:38:52 +00:00
amir 556645226a Fix ARCHIVE delete (create _Deleted base) + full engine test matrix
Build & Release APK / build (push) Successful in 12m46s
Full-matrix on-device test (FullSyncEngineTest) drives the real SyncEngine
(in-memory Room + real local folder + live Nextcloud) across all directions,
all delete behaviors, updates, recursive/non-recursive, filters, conflicts,
and content integrity — 14 instrumented tests, all green on a Galaxy S23.

It caught a real bug: ARCHIVE delete moved files to _Deleted/ but never
created the _Deleted folder, so the MOVE failed for top-level files and they
were left in place. Now creates the _Deleted base before the move.
2026-06-05 10:21:51 +00:00
amir 1e5ae2c65f Add on-device Nextcloud integration test (real WebDAV round-trip)
Build & Release APK / build (push) Successful in 12m47s
Instrumented test driving the real NextcloudProvider over TLS: connect,
create dir, atomic upload (temp+MOVE), list+size, download+content, then the
backup guarantee — Upload-only + KEEP yields SKIP and the cloud copy is
verified still present; MIRROR yields DELETE_REMOTE and the real delete is
confirmed. Creds passed via instrumentation args (ncUrl/ncUser/ncPass), never
committed. Verified passing on a Galaxy S23 (Android 16) against live Nextcloud.
2026-06-05 09:54:02 +00:00