test(files): live-тест файлового dedup (#63) #65

Merged
eSlider merged 3 commits from test/w6-file-dedup#63 into main 2026-09-16 23:03:24 +01:00
Owner

Что сделано (W6/#63)

Живой интеграционный тест файлового dedup + две починки, вскрытые на портале.

Тест

  • TestIntegrationFileDedup (//go:build integration): throwaway-проект
    (go-onlyoffice-test-*, удаляется в cleanup) → две папки + project root →
    дубли одного stem|ext (в т.ч. дубль в одну папку) →
    FindProjectDuplicates (within + cross) находит группу →
    DeleteFilesByDedupKey/ApplyDedupGroups удаляют лишние →
    survivor и удаления подтверждены polling-ом.
  • Проверка IsTrashFolderTitle и mergeProjectRootForDedupe на живом дереве
    (root ровно один раз, root-файлы входят в cross-группу).
  • Setup-запросы (create folder/upload) ретраят временный post-create 500
    портала — не ослабляет ассерты.

Починки

  • fix(files): пропускать пустой dedup-ключ (dotfiles) — .env/.gitignore
    и т.п. дают FileDedupKey="", и within/cross считали их группой дублей и
    удаляли лишние. + unit TestFindDuplicatesSkipsEmptyKey.
  • fix(files): ретраить transient-ответы при удалении файлов —
    DeleteDavItems (ApplyDedupGroups/DeleteFilesByDedupKey) не шёл через
    DoRetry и падал на 429.

Как проверено

  • go build ./... — зелёный.
  • go test -tags=integration -run TestIntegrationFileDedup -v . — PASS (дважды).
  • Unit TestFileDedupKey|TestFindFilesByDedupKey|TestFindWithinFolderDuplicates|TestCrossFolderPrefersNonTrash|TestMergeProjectRootForDedupe|TestIsTrashFolderTitle|TestFindDuplicatesSkipsEmptyKey — PASS.
  • Throwaway-проекты после прогона не остаются (проверено).
## Что сделано (W6/#63) Живой интеграционный тест файлового dedup + две починки, вскрытые на портале. ### Тест - `TestIntegrationFileDedup` (`//go:build integration`): throwaway-проект (`go-onlyoffice-test-*`, удаляется в cleanup) → две папки + project root → дубли одного stem|ext (в т.ч. дубль в одну папку) → `FindProjectDuplicates` (within + cross) находит группу → `DeleteFilesByDedupKey`/`ApplyDedupGroups` удаляют лишние → survivor и удаления подтверждены polling-ом. - Проверка `IsTrashFolderTitle` и `mergeProjectRootForDedupe` на живом дереве (root ровно один раз, root-файлы входят в cross-группу). - Setup-запросы (create folder/upload) ретраят временный post-create 500 портала — не ослабляет ассерты. ### Починки - `fix(files): пропускать пустой dedup-ключ (dotfiles)` — `.env`/`.gitignore` и т.п. дают `FileDedupKey=""`, и within/cross считали их группой дублей и удаляли лишние. + unit `TestFindDuplicatesSkipsEmptyKey`. - `fix(files): ретраить transient-ответы при удалении файлов` — `DeleteDavItems` (ApplyDedupGroups/DeleteFilesByDedupKey) не шёл через `DoRetry` и падал на 429. ### Как проверено - `go build ./...` — зелёный. - `go test -tags=integration -run TestIntegrationFileDedup -v .` — PASS (дважды). - Unit `TestFileDedupKey|TestFindFilesByDedupKey|TestFindWithinFolderDuplicates|TestCrossFolderPrefersNonTrash|TestMergeProjectRootForDedupe|TestIsTrashFolderTitle|TestFindDuplicatesSkipsEmptyKey` — PASS. - Throwaway-проекты после прогона не остаются (проверено).
eSlider added 3 commits 2026-09-16 22:47:59 +01:00
TestIntegrationFileDedup: throwaway-проект, две папки + root, дубли по
stem|ext, FindProjectDuplicates/mergeProjectRootForDedupe,
ApplyDedupGroups/DeleteFilesByDedupKey, survivor и удаления подтверждены
polling-ом. Папки/аплоады ретраят временный post-create 500 портала.
Файлы без stem (.env, .gitignore, .npmrc) давали FileDedupKey="", и
findWithinFolderDuplicates/findCrossFolderDuplicates считали их одной
группой дублей и удаляли лишние. Пустой ключ больше не образует группу.
fix(files): ретраить transient-ответы при удалении файлов (#63)
Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 4s
Tests / Test (Go stable) (pull_request) Successful in 20s
Tests / Test (Go 1.25) (pull_request) Successful in 20s
5588c2d3f7
DeleteDavItems (через ApplyDedupGroups/DeleteFilesByDedupKey) ходил в
deleteJSON напрямую и падал на 429/502/503/504. Теперь каждый delete идёт
через DoRetry, как остальные bulk-пути.
eSlider merged commit 6f85c206cf into main 2026-09-16 23:03:24 +01:00
eSlider deleted branch test/w6-file-dedup#63 2026-09-16 23:03:24 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eSlider/go-onlyoffice#65