Skip to content

test(integration): silent no-op passes survive #421 — 74 of 86 'passing' Vulkan integration tests do nothing; CrossBackendQuantGate is 100% inert #307

Description

@jamesburton

The #421 fix was incomplete

Issue #421 (upstream kkokosa#421, PR #428) fixed hardware-gated tests that report passed instead of skipped. That fix only touched tests/DotLLM.Tests.Unit/Cpu/Kernels/. The identical anti-pattern survives across the integration suite, where it matters more, because those are the tests that verify real models.

The pattern, inside a [SkippableFact]:

_output.WriteLine("[SKIP] fixture not found");
return;                       // <-- reports PASSED

instead of Skip.If(...).

Surviving instances, measured on this box (gfx1151, Vulkan available):

suite reported actually executed silent no-ops
RealGgufVulkanParityTests 9 passed 3 6
other integration Vulkan + CrossBackend* 77 passed 9 68

So of 86 "passing" integration tests, 74 did nothing. On a fixture-less CI runner the number would be higher still, and the suite would report green.

Roughly lines 69, 88, 111, 218, 247, 273, 291 of tests/DotLLM.Tests.Integration/Vulkan/RealGgufVulkanParityTests.cs, plus CrossBackendQuantGateTests and RealHfSafetensorsEndToEndVulkanTests.

This looks unintentional rather than a decision: the same class already uses Skip.If correctly for its Vulkan/SPIR-V availability gates. Only the fixture gates use the silent form.

The worst case: CrossBackendQuantGateTests is 100% inert

This is the class specifically designed to be the format × backend end-to-end matrix — CPU vs CUDA vs Vulkan perplexity agreement per QuantizationType. 105 cases, zero executed. 42 report skipped, 63 report passed.

No fixture exists for any of them. Worse, .docs/corpora/ — the directory its own skip message names as the place documenting how to generate them — does not exist in the repo.

So the intended safety net for cross-backend correctness is entirely notional, and reports green.

Acceptance criteria

  • Every fixture-gated integration test uses Skip.If/Skip.IfNot, so absent fixtures report skipped.
  • A run with no fixtures present reports 0 passed for these suites, not 63.
  • CrossBackendQuantGateTests' referenced fixture-generation recipe either exists at the path its skip message names, or the message points somewhere real.
  • Ideally a lint/analyzer or a test-of-tests that fails on return; following a [SKIP] log line inside a [SkippableFact], since this has now recurred once after being fixed.

References

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions