Skip to content

Test suite gaps found in the pre-release review #16

Description

@vaceslav

From the pre-release review. Coverage today: 91.3 % lines, 83.8 % branches (Analysis 98.6/93, Csv 94/92, Extraction 96/91, Import 91/86, Mapping 87/82, Xlsx 86.5/78, Abstractions 81/58).

Before the release

  • The two net8-failing cancellation tests (StopsInsideARowFullOfElementsItWantsNothingFrom, StopsInsideAValueAssembledFromCountlessEmptyRuns) arm on compressed package bytes, while the sheet deflates to a few hundred bytes — net8 and net10 compress the fixture differently, so the runtime's zlib decides the outcome, not the reader. Use incompressible content and assert on the cursor being poisoned. Unblocks Decide which target frameworks to support #4.
  • Typed workbook cells never go through extraction/import successfully: number → Integer/Decimal, serial → Date, t="b" → Boolean, t="e" error cells (ValueReading native paths uncovered). Every importer test is csv today.
  • Public API contracts: leaveOpen on every entry point, double Dispose, use after dispose (ObjectDisposedException), non-seekable streams into TabularFile/CsvCursor, cursor disposal when Import(Stream…) fails, TranslatedField argument validation, InChunks(0).
  • Guide promises with no test: MaxMetadataChars bound, "rows are views", AllOrNothing at import time (Correctness fixes found in the pre-release review #14), header row beyond the sheet's end, precheck Undetermined for an unprofiled culture and for exhausted uniqueness budget. One date-precheck test passes without reaching the code its name claims — fix its setup.
  • Invariant globalization — see Correctness fixes found in the pre-release review #14; add a CI leg or a test that runs the core flow with InvariantGlobalization.
  • Weakest classes worth a test each: SheetScanner CDATA/comments, XlsxCursor.LooksLikeDateFormat (5 of 28 conditions covered), MappedValue/RawCell equality, Windows1252Encoding 0x80–0x9F range.

After the release

  • Rename tests grouped by review round (ReviewFixesTests, SecondRoundFixesTests) into behaviour-named classes; dedupe copied helpers.
  • Property-based / fuzz tests: csv write→read round trip with random quoting and line endings; random xlsx generation through XlsxPackage.
  • A Stryker.NET mutation pass — expected survivors in date-format detection, ImportField fluent methods, the Windows-1252 table.
  • Flakiness candidates: allocation-ratio tests without warm-up, tests that walk the repository (obj/ layout), deadline-based tests.
  • Producer diversity in golden fixtures (LibreOffice, Google Sheets, Numbers, generator libraries) — the differential run in Mine the open-source readers' test suites for edge cases we do not cover #8 is the source.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions