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.

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