CodeForPhilly / CodeForPhilly/codeforphilly-ng

flaky api tests: git clone from shared full-data fixture repo loses objects mid-copy under parallel workers

Ouverte
#171 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
TypeScript
Étoiles
1
Forks
1
Merge moyen
5 j 3 h
PR mergées (30 j)
9

Description

Seen twice on 2026-09-09 in CI on the same commit (`96b71ef`, merge of #157, which touched only `apps/web`):

- push run: `tests/slug-redirect.test.ts > never intercepts /api/* paths`
- pull_request run: `tests/avatar-upload.test.ts > 404s for a missing person` and `> rejects unsupported MIME types with 422`

All with the same error from `apps/api/tests/helpers/seed-fixtures.ts` cloning the bare fixture repo created by `tests/helpers/test-full-repo.ts`:

```
Error: Command failed: git clone /tmp/cfp-full-data-XXXX/data.git /tmp/cfp-seed-wt-YYYY
fatal: failed to copy file to '/tmp/cfp-seed-wt-YYYY/.git/objects/71/fdd3...': No such file or directory
```

Different test files, different temp dirs, same shape: a local `git clone` (hardlink/copy of loose objects) races with something mutating the source repo's object store while it runs. Suspects: another worker's transaction on the same shared fixture repo (gitsheets 2.x Rust core landed on `develop` via #151 and may repack/prune loose objects), or a cleanup `rm` in a sibling file's `afterEach`. Locally the suite passes with `--maxWorkers=2`; CI uses the default worker count.

Options: give each test file its own fixture repo (no shared source), clone with `--no-hardlinks`/`file://` (forces a pack transfer instead of per-object copies), or serialize the clone behind a lock. Re-running the job passes, so this is a flake, not a regression, but it will keep failing release CI at random.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01RdRwHvDupRLV8GuJpYKzEr

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Start with apps/api/tests/helpers/seed-fixtures.ts and tests/helpers/test-full-repo.ts, then reproduce the listed slug-redirect and avatar-upload tests using CI's default worker count. Trace shared fixture creation, cloning, and cleanup while parallel workers run; done means those tests no longer intermittently fail during git clone and the full parallel suite remains stable.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
git, typescript
Domaine
ci-cd, testing
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
52/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.