Skip to content

Selfie JVM Snapshot Garbage Collection is overly zealous when using multiple test suites in gradle #574

@aelfric

Description

@aelfric

In a project I was using a separate integrationTest source set with the JVM Test Suite approach recommended by Gradle link to instructions.

When done this way, the integration test sources will be in src/integrationTest instead of src/test. The classes in src/test will not be on the classpath of the integration tests.

When running Selfie with JUnit5, the current garbage collection logic is hardcoded to only look for *.ss files in src/test/ and performs a Class.forName(...)  to see if that test still exists and has tests that match the snapshot. If it doesn't find a match, it deletes the file. 

Since the unit tests are invisible on the integrationTest classpath, though, Class.forName(...) throws a ClassNotFoundException so selfie assumes this is a stale file and deletes. As a consequence, all the unit test snapshots are deleted when running the integrationTest task.

Is there some way to get the correct source root from Junit or something like that to avoid deleting unmanaged files?

A reproducer of the described issue can be found here with instructions in the README https://github.com/aelfric/selfie-bug-report-reproducer

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingjvm

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions