Skip to content

Isolate mutation-heavy tests in generated dummy packages #88

Description

@Gabriel-Darbord

Problem

Some tests create, update, rename, or remove classes and methods while exercising MCP mutation tools. Even when the tests restore the final source state, Iceberg can keep repository packages marked dirty because it observed transient source changes through image announcements.

This makes local image state noisy after test runs: the repository can appear modified even when the actual change list is empty. It also increases the chance that later repository tooling enters expensive or fragile Iceberg diff paths.

Preferred direction

Use generated dummy packages/classes for mutation-heavy tests instead of mutating versioned MCP fixture packages directly.

A possible model:

  • keep MCP-Tests-Resources as immutable source-of-truth fixtures;
  • copy required fixture classes and methods into a generated dummy package during setUp;
  • run mutation tests against the generated package;
  • remove the generated package/classes in tearDown;
  • assert the generated package is gone afterward.

Non-goals

  • Do not make test_run refresh or clean Iceberg state.
  • Do not hide the problem by marking Iceberg packages clean in tearDown.
  • Avoid broad announcement suppression as the primary strategy; announcements are opaque and may be behavior under test.

Acceptance criteria

  • Mutation-heavy tests no longer leave versioned MCP packages dirty when their final source state is unchanged.
  • Immutable fixture packages remain stable source-of-truth data.
  • Generated dummy packages/classes are cleaned up after tests.
  • Announcement-sensitive tests, such as history/debugger behavior, are not masked by global announcement suppression.
  • The approach is documented in shared test helpers so future mutation tests use the same pattern.

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