Skip to content

feat: test archive integrity without extracting - #143

Merged
nextestudios merged 1 commit into
mainfrom
feature/66-archive-test
Sep 27, 2026
Merged

nextestudios merged 1 commit into
mainfrom
feature/66-archive-test

Conversation

@nextestudios

Copy link
Copy Markdown
Owner

Summary

  • New Test integrity action (North on an archive in the file list, or in the menu inside an open archive).
  • IArchiveService.TestAsync / SafeExtractor.TestAsync: reads every file entry through the same path as extraction and discards the data (Stream.Null). The read/verify loop (limits on bytes actually read, declared size, CRC, AE-2 CRC-0 skip) was factored into CopyVerified, shared by extraction and test, so both enforce the same checks. Nothing is written: no dedicated folder, no staging.
  • One ItemResult per entry: succeeded (CRC matched), succeeded with NoChecksum (TAR/GZ/AES AE-2: read fully, nothing to compare), failed (with the reason), not processed (after cancel or a fatal stream error).
  • Runs in the operation queue (OperationKind.TestArchive) with progress and cancel; password-protected archives use the existing password keyboard (wrong password asks again). The result dialog lists counts, names failing entries and states it is not a virus scan.
  • README/GUIDE (both languages), docs/archive-support.md and both changelogs updated. README no longer lists ZIP AES/ZIP64 as unvalidated (done in test: validate ZIP64 extraction with generated fixtures #131 and feat: validate WinZip AES ZIP extraction #137).

Tested in CI

  • ArchiveTestTests: corrupted ZIP names the failing entry and the temp dir is unchanged; good ZIP reports OK; TAR entries flagged as no checksum; cancelling from a progress report stops and marks the rest not processed.
  • Journey: Actions → Test integrity on a corrupted ZIP shows the failing entry, the "not a virus scan" note and extracts nothing.

Manual checks

  • None beyond the usual visual review of the result dialog.

Closes #66

🤖 Generated with Claude Code

@nextestudios
nextestudios force-pushed the feature/66-archive-test branch from fd0fc1e to e63ab5d Compare September 27, 2026 04:57
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nextestudios
nextestudios force-pushed the feature/66-archive-test branch from e63ab5d to 0ec6c36 Compare September 27, 2026 05:02
@nextestudios
nextestudios merged commit e352402 into main Sep 27, 2026
1 check passed
@nextestudios
nextestudios deleted the feature/66-archive-test branch September 27, 2026 05:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: add archive integrity testing

1 participant