Skip to content

Add CI contract checks for the merged plugin artifact #104

Description

@kelchm

Motivation

CI builds the shipped single-DLL artifact with ILRepack, folding FanaBridge.Core and FanaBridge.Updater into merged/FanaBridge.dll. The existing test step still runs against the separate development assemblies.

Merge-sensitive behavior—type identity, BAML resource keys, and embedded-resource manifest names—therefore has no repeatable CI protection. These surfaces were verified manually for #103.

Scope

Add a post-merge contract check that runs in a separate process and loads the exact merged FanaBridge.dll produced by MergePlugin.

Keep this as a focused artifact-level smoke check rather than duplicating the normal unit suite. It should cover the merged plugin’s essential loading contracts:

  • The plugin entry type, FanaBridge.FanatecPlugin, is present.
  • Built-in wheel profiles can be enumerated and loaded.
  • Expected BAML resource keys are present.
  • Representative WPF controls can be constructed on an STA thread.

Wire the check into .github/workflows/build.yml after the merge step so packaging cannot proceed with a structurally broken artifact.

Acceptance criteria

  • A repeatable contract-check executable or equivalent harness loads the merged FanaBridge.dll in a separate process.
  • The check validates the plugin entry type, built-in profiles, BAML resources, and representative WPF construction.
  • The check exercises the merged artifact rather than the separate development assemblies.
  • CI runs the check after MergePlugin produces the merged DLL.
  • A contract failure fails the CI job with actionable diagnostics.
  • The existing development-assembly test suite continues to run normally.

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