Skip to content

Wire fetch_corpus.py into CI so conformance tests run for real, not skip #5

Description

@Nathan-D-R

Every reader's conformance test suite skips silently when its local corpus directory is absent (the corpus lives out of tree / gitignored, by design - not checked into any repo). Confirmed currently skipping on a plain checkout across the whole vendor stack:

  • OpenTFRaw: crates/opentfraw/tests/conformance.rs - 'skipping: no Thermo fixture available'
  • OpenTimsTDF: crates/opentimstdf/tests/conformance.rs - 'skipping: no Bruker TDF cache present'
  • OpenARaw: crates/openaraw/tests/conformance.rs - 'skip: corpus not present'
  • OpenSXRaw: crates/opensxraw/tests/conformance.rs - 'skip: corpus not present'
  • OpenWRaw: crates/openwraw/tests/conformance.rs - 'skipping: no Waters bundle available'
  • OpenMassSpec itself: crates/openmassspec-io/tests/vendor2mzml.rs, crates/openmassspec-io-cli/tests/cli_centroid.rs - 'skipping: corpus not present'

None of these run for real in CI, so no decode path is exercised automatically anywhere in the suite - this is the biggest confidence gap across the readers (a regression in any decoder would only surface on someone's local machine with the corpus checked out).

The fix mechanism already exists: scripts/fetch_corpus.py in this repo is already 'a generalized port of OpenTFRaw's per-repo fetcher' - reads a vendor-agnostic sources.json, resolves PRIDE/FTP URLs, downloads into a local corpus dir, writes a manifest. It's just not wired into any CI workflow.

Proposed scope: check in a small curated fixture corpus (or a CI step that runs fetch_corpus.py against a minimal sources.json - one or two small files per vendor is enough to exercise the decode path) for each affected repo, and add the corpus-fetch step to each repo's ci.yml ahead of cargo test. Suite-wide effort - track per-repo follow-up issues from here once the approach is validated on one repo (OpenTFRaw is probably the best first target, since it already has a partial precedent via its 'validate-mzml' CI job that downloads a single file).

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