Часть эпика #53 (W4). Все тесты зелёные: unit, race, integration.
Что починено
Известный долг:cmd/office/fetch/task_integration_test.go не компилировался (loader.TaskFields undefined) — метод давно заменён на loader.DetailForm. Тест переписан на актуальный API (DetailForm → FormFields.Primary/Secondary). go vet -tags=integration ./... и сборка с тегом проходят.
429 openresty: транзитные ответы edge (429/502/503/504) не ретраились вне bulk-тулов, из-за чего параллельный go test -tags=integration ./... падал. Теперь транспорт (getJSON/formRequest/deleteReq/postJSON/putJSON/multipart upload), Query и AuthenticateContext/ensureToken идут через retryRaw (DefaultRetryPolicy). Добавлены unit-тесты Transient/DoRetry.
Логи
go build ./... && go vet ./... && go vet -tags=integration ./... — OK
go test ./... — ok 11 пакетов, FAIL 0
go test -race ./... — ok 11, FAIL 0, data races 0
go test -tags=integration -v ./... (REST + ES 127.0.0.1:9200 + live MySQL DSN, ONLYOFFICE_PG_TEST_FILE_ID=22484/FOLDER_ID=649) — PASS 318, FAIL 0, SKIP 13
Часть эпика #53 (W4). Все тесты зелёные: unit, race, integration.
## Что починено
- **Известный долг:** `cmd/office/fetch/task_integration_test.go` не компилировался (`loader.TaskFields undefined`) — метод давно заменён на `loader.DetailForm`. Тест переписан на актуальный API (`DetailForm` → `FormFields.Primary/Secondary`). `go vet -tags=integration ./...` и сборка с тегом проходят.
- **429 openresty:** транзитные ответы edge (429/502/503/504) не ретраились вне bulk-тулов, из-за чего параллельный `go test -tags=integration ./...` падал. Теперь транспорт (`getJSON`/`formRequest`/`deleteReq`/`postJSON`/`putJSON`/multipart upload), `Query` и `AuthenticateContext`/`ensureToken` идут через `retryRaw` (`DefaultRetryPolicy`). Добавлены unit-тесты `Transient`/`DoRetry`.
## Логи
- `go build ./... && go vet ./... && go vet -tags=integration ./...` — OK
- `go test ./...` — ok 11 пакетов, FAIL 0
- `go test -race ./...` — ok 11, FAIL 0, data races 0
- `go test -tags=integration -v ./...` (REST + ES `127.0.0.1:9200` + live MySQL DSN, `ONLYOFFICE_PG_TEST_FILE_ID=22484`/`FOLDER_ID=649`) — PASS **318**, FAIL **0**, SKIP **13**
- Корневой пакет отдельно: 136 PASS / 0 FAIL (до фикса — 3 FAIL)
- gitleaks: no leaks found
### SKIP (корректные, с причиной)
- `TestIntegrationMinioFallback` — нет `MINIO_ACCESS_KEY/SECRET_KEY`
- `TestIntegrationMailList`, `TestIntegrationMailInboxDetail`, `TestIntegrationPreviewMailFromAPI` — пустой inbox на инстансе
- `TestIntegrationUpdateTaskTitleDescription`, `TestIntegrationTaskFieldsFromLiveAPI`, `TestIntegrationPreviewTaskFromAPI` — на инстансе 0 задач
- `TestIntegrationPreviewOpportunityFromAPI` — 0 opportunities
- `TestIntegrationPreviewFileFromAPI`, `TestIntegrationPreviewCSVFromDownloadedFile` — не задан `ONLYOFFICE_PROJECT_ID`
- `TestTXTToDOCXPreservesLines`, `TestMDDocxRoundTrip` — нет pandoc; `TestOptimizePDF` — нет фикстуры
## Изменённые файлы
`auth.go`, `http.go`, `request.go`, `retry.go`, `retry_test.go`, `cmd/office/fetch/task_integration_test.go`, `AGENTS.md`
- Route HTTP helpers (getJSON/formRequest/deleteReq/postJSON/putJSON/
multipart upload), Query and AuthenticateContext/ensureToken through the
deterministic 429/502/503/504 retry (retryRaw), so the integration suite
no longer fails on the shared openresty rate limit under parallel runs.
- Fix stale cmd/office/fetch integration test: loader.TaskFields was
replaced by loader.DetailForm (broke go vet -tags=integration).
- Add unit tests for Transient/DoRetry.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Часть эпика #53 (W4). Все тесты зелёные: unit, race, integration.
Что починено
cmd/office/fetch/task_integration_test.goне компилировался (loader.TaskFields undefined) — метод давно заменён наloader.DetailForm. Тест переписан на актуальный API (DetailForm→FormFields.Primary/Secondary).go vet -tags=integration ./...и сборка с тегом проходят.go test -tags=integration ./...падал. Теперь транспорт (getJSON/formRequest/deleteReq/postJSON/putJSON/multipart upload),QueryиAuthenticateContext/ensureTokenидут черезretryRaw(DefaultRetryPolicy). Добавлены unit-тестыTransient/DoRetry.Логи
go build ./... && go vet ./... && go vet -tags=integration ./...— OKgo test ./...— ok 11 пакетов, FAIL 0go test -race ./...— ok 11, FAIL 0, data races 0go test -tags=integration -v ./...(REST + ES127.0.0.1:9200+ live MySQL DSN,ONLYOFFICE_PG_TEST_FILE_ID=22484/FOLDER_ID=649) — PASS 318, FAIL 0, SKIP 13SKIP (корректные, с причиной)
TestIntegrationMinioFallback— нетMINIO_ACCESS_KEY/SECRET_KEYTestIntegrationMailList,TestIntegrationMailInboxDetail,TestIntegrationPreviewMailFromAPI— пустой inbox на инстансеTestIntegrationUpdateTaskTitleDescription,TestIntegrationTaskFieldsFromLiveAPI,TestIntegrationPreviewTaskFromAPI— на инстансе 0 задачTestIntegrationPreviewOpportunityFromAPI— 0 opportunitiesTestIntegrationPreviewFileFromAPI,TestIntegrationPreviewCSVFromDownloadedFile— не заданONLYOFFICE_PROJECT_IDTestTXTToDOCXPreservesLines,TestMDDocxRoundTrip— нет pandoc;TestOptimizePDF— нет фикстурыИзменённые файлы
auth.go,http.go,request.go,retry.go,retry_test.go,cmd/office/fetch/task_integration_test.go,AGENTS.md