top_drives/tests
Jan-Peter von Hunnius 7ac889cbff Handle no-record cars and per-copy trash listing
Empty API responses (200 + empty body) mean "known car, no times
submitted yet" on the records site — typically newly released prize
cars. Previously each such car burned 3 retries with backoff and then
aborted the entire fetch; 27 cars in the current DB hit this.

- Add AppError::EmptyResponse { url } as a distinct, deterministic
  failure class; get_file fails immediately instead of retrying
- fetch_car downgrades EmptyResponse to a skip with an info log, so
  fetch completes; the next fetch picks the cars up automatically
  once records exist
- parse_car_times treats empty (or whitespace-only) timing files
  like missing files, eliminating "EOF while parsing a value at line
  1 column 0" parse errors from stale empty files

trash.csv Config column now lists only the copies to delete: for a
car whose one tune is a final build not best on any track (e.g.
owned 332 next to a best-on-213-tracks 323), only the dead tune is
shown instead of joining all owned configs. Categories 1 and 3 still
list all configs since the whole car goes.

Tests: empty response makes exactly 1 request and yields the
EmptyResponse variant; empty file parses Ok; partial-copy trash
shows only the deletable config.
2026-08-22 07:24:22 +02:00
..
http_tests.rs Handle no-record cars and per-copy trash listing 2026-08-22 07:24:22 +02:00
integration_tests.rs Enforce feature isolation and expand copy_count test coverage 2026-08-15 21:30:38 +02:00
proptest_tests.rs Fix review findings: wishlist qualifying count, improve docs, and lint cleanup 2026-08-15 18:58:12 +02:00