Skip to content

test: continuous property-based fuzz via CsCheck (#81) - #203

Merged
Chris-Wolfgang merged 1 commit into
vNextfrom
thorough/fuzz-cscheck
Aug 8, 2026
Merged

test: continuous property-based fuzz via CsCheck (#81)#203
Chris-Wolfgang merged 1 commit into
vNextfrom
thorough/fuzz-cscheck

Conversation

@Chris-Wolfgang

Copy link
Copy Markdown
Owner

First of the thorough-review stacked PRs (stacked on the dep-bump #202). Adds a Tests.Fuzz project (CsCheck 4.0.0, net10.0) + fuzz.yaml (weekly cron), mirroring the ETL-DbClient pattern.

Two mapping invariants, fuzzed over many generated inputs:

  • QualifiedTableName bracket-quoting round-trips for arbitrary schema/table identifiers (un-quoting recovers the original — catches any escape that lets an identifier break out of its brackets).
  • Every mapped column's getter returns exactly what reflection reads from the property, across random record values (exercises the compiled / source-generated getter path).

Both hold at 20k local iterations; the scheduled run does 100k. Closes #81 (at vNext→main).

Copilot AI review requested due to automatic review settings July 28, 2026 23:09

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Chris-Wolfgang
Chris-Wolfgang force-pushed the thorough/fuzz-cscheck branch from 3e32e71 to 27e7e97 Compare August 2, 2026 23:59
@Chris-Wolfgang
Chris-Wolfgang changed the base branch from feat/bump-abstractions-0.20-testkit-0.13 to vNext August 3, 2026 00:00
Adds tests/Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz (net10.0, CsCheck 4.0.0) with two
mapping invariants asserted over large numbers of generated inputs:
- QualifiedTableName bracket-quoting round-trips for arbitrary schema/table
  identifiers (un-quoting recovers the original — catches any escaping bug that
  lets an identifier break out of its brackets).
- Every mapped column's getter returns exactly what reflection reads from the
  same property, across random record values (exercises the compiled /
  source-generated getter path).

Plus .github/workflows/fuzz.yaml (weekly cron + workflow_dispatch, CsCheck case
count from CsCheck_Iterations, reports uploaded as an artifact), mirroring the
ETL-DbClient fuzz pattern. Both properties hold at 20k local iterations.

Refs #81.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Chris-Wolfgang
Chris-Wolfgang force-pushed the thorough/fuzz-cscheck branch from 27e7e97 to 6bc9751 Compare August 3, 2026 01:56
@Chris-Wolfgang
Chris-Wolfgang changed the base branch from vNext to feat/sourcegen-descriptors August 3, 2026 01:56
Base automatically changed from feat/sourcegen-descriptors to vNext August 8, 2026 01:10
@Chris-Wolfgang
Chris-Wolfgang merged commit 20ec841 into vNext Aug 8, 2026
6 checks passed
@Chris-Wolfgang
Chris-Wolfgang deleted the thorough/fuzz-cscheck branch August 8, 2026 01:11
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.

2 participants