Test-only; no production code changes. internal/blobgen and internal/types had no negative or boundary coverage.
Added in blobgen_test: Writer-to-Reader round trips at the 64 KiB age-segment edges (sizes 0, 1, 65535, 65536, 65537, 4*65536+123) for random and compressible data, checking plaintext, BytesRead/BytesWritten, and both hashes by decrypting; a wrong-identity open (*age.NoIdentityMatchError); truncation and one-byte corruption of a multi-segment blob across every region; trailing bytes, empty input and garbage; rejected/accepted compression levels; nil, empty and invalid recipients; a failing destination. In types_test: Value/Scan round trips, NULL, wrong-type and malformed Scan, Parse and IsZero for FileID and BlobID.
Scope and disclosures:
Scoped to internal/blobgen and internal/types test files per the task brief; case 12 (a verify --deep hash-mismatch test in internal/vaultik) is therefore not included here.
The "cut right after the age header and nonce" truncation is excluded: it reads as valid and empty today and is the regression case for #152.
Multi-recipient read-back (case 5) is already covered by the existing TestMultipleRecipients.
internal/crypto and CompressStream/CompressData were removed by #151 and are skipped.
Reworded two writer_test.go messages that overstated what the double hash prevents; no assertion weakened.
make check green.
Model: opus-4-8
Test-only; no production code changes. `internal/blobgen` and `internal/types` had no negative or boundary coverage.
Added in `blobgen_test`: Writer-to-Reader round trips at the 64 KiB age-segment edges (sizes 0, 1, 65535, 65536, 65537, 4*65536+123) for random and compressible data, checking plaintext, `BytesRead`/`BytesWritten`, and both hashes by decrypting; a wrong-identity open (`*age.NoIdentityMatchError`); truncation and one-byte corruption of a multi-segment blob across every region; trailing bytes, empty input and garbage; rejected/accepted compression levels; nil, empty and invalid recipients; a failing destination. In `types_test`: `Value`/`Scan` round trips, NULL, wrong-type and malformed `Scan`, `Parse` and `IsZero` for `FileID` and `BlobID`.
Scope and disclosures:
- Scoped to `internal/blobgen` and `internal/types` test files per the task brief; case 12 (a `verify --deep` hash-mismatch test in `internal/vaultik`) is therefore not included here.
- The "cut right after the age header and nonce" truncation is excluded: it reads as valid and empty today and is the regression case for https://git.eeqj.de/sneak/vaultik/issues/152.
- Multi-recipient read-back (case 5) is already covered by the existing `TestMultipleRecipients`.
- `internal/crypto` and `CompressStream`/`CompressData` were removed by https://git.eeqj.de/sneak/vaultik/issues/151 and are skipped.
- Reworded two `writer_test.go` messages that overstated what the double hash prevents; no assertion weakened.
`make check` green.
Model: opus-4-8
Test-only. internal/blobgen and internal/types had no negative or
boundary coverage. Adds, in package blobgen_test: Writer-to-Reader round
trips at the 64 KiB age-segment edges for random and compressible data,
checking plaintext, byte counts and the reader/writer hashes by
decrypting; a wrong-identity open; truncation and single-byte corruption
of a multi-segment blob at every region; trailing bytes, empty input and
garbage; rejected and accepted compression levels; nil, empty and invalid
recipients; and a failing destination. In package types_test: Value/Scan
round trips, NULL, wrong-type and malformed Scan, Parse and IsZero for
FileID and BlobID.
internal/crypto and CompressStream/CompressData no longer exist and are
skipped. The "cut right after the age header and nonce" truncation is
excluded: it reads as valid and empty today and belongs to #152. Reworded
two writer_test.go messages that overstated what the double hash prevents.
Model: opus-4-8
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.
Test-only; no production code changes.
internal/blobgenandinternal/typeshad no negative or boundary coverage.Added in
blobgen_test: Writer-to-Reader round trips at the 64 KiB age-segment edges (sizes 0, 1, 65535, 65536, 65537, 4*65536+123) for random and compressible data, checking plaintext,BytesRead/BytesWritten, and both hashes by decrypting; a wrong-identity open (*age.NoIdentityMatchError); truncation and one-byte corruption of a multi-segment blob across every region; trailing bytes, empty input and garbage; rejected/accepted compression levels; nil, empty and invalid recipients; a failing destination. Intypes_test:Value/Scanround trips, NULL, wrong-type and malformedScan,ParseandIsZeroforFileIDandBlobID.Scope and disclosures:
internal/blobgenandinternal/typestest files per the task brief; case 12 (averify --deephash-mismatch test ininternal/vaultik) is therefore not included here.TestMultipleRecipients.internal/cryptoandCompressStream/CompressDatawere removed by #151 and are skipped.writer_test.gomessages that overstated what the double hash prevents; no assertion weakened.make checkgreen.Model: opus-4-8
PASS
Model: opus-4-8