Releases: skippy-io/skippy
v0.0.25
v0.0.24
Highlights
Other Noteworthy Changes
- JUnit 5 versions
5.0,5.1,5.2and5.3are no longer supported - JUnit 4 versions
4.10and4.11are no longer supported - Support for JUnit 4 is now provided as
@Ruleinstead of@ClassRule
JUnit 4 integration (new):
public class MyTest {
@Rule
public TestRule skippyRule = Skippy.predictWithSkippy();
...
}
JUnit 4 integration (old):
public class MyTest {
@ClassRule
public static TestRule skippyRule = Skippy.predictWithSkippy();
...
}
What's Changed
- issues/162: added skeleton for skippy-gradle-android by @fmck3516 in #181
- issues/162: feat(android): Add AndroidTestSourceSetCollector by @Link184 in #182
- housekeeping: some work on naming and code-level documentation by @fmck3516 in #184
- Issues/186: skippyClean: add support for --rerun option by @fmck3516 in #188
- issues/133 (part 1): Make predictions based on Class instance instead of class name by @fmck3516 in #190
- issues/133: part 2 - allow build plugins to pass parameters to JUnit … by @fmck3516 in #191
- issues/133: part 3 - introduction of ClassFileSelector by @fmck3516 in #192
- issues/133: part 4 - changed signature of ClassFileSelector by @fmck3516 in #193
- issues/133: Add support for duplicate class names across output directories by @fmck3516 in #195
- issues/133: follow-ups by @fmck3516 in #197
- issues/185: bugfix by @fmck3516 in #198
New Contributors
Full Changelog: v0.0.23...v0.0.24
v0.0.23
What's Changed
- issues/170: Gradle &
@Nestedtests: Propagate test failures to parents by @fmck3516 in #171 - issues/172: Replace propagation of test failures with reasoning over … by @fmck3516 in #173
- issues/174: Replace result field in test-imact-analysis.json with tags array by @fmck3516 in #175
- issues/176: Replace failed-tests.txt with tags.txt by @fmck3516 in #177
- Issues/161: add support for
@AlwaysRunannotation to complemented automated extension registry by @fmck3516 in #178 - issues/179: skippyClean must write config.json by @fmck3516 in #180
Full Changelog: v0.0.22...v0.0.23
v0.0.22
v0.0.21
v0.0.20
v0.0.19
Highlights
This release introduces the SkippyRepositoryExtension interface. It allows projects to customize the way Skippy reads and writes data.
Skippy's default behavior:
- It stores and retrieves all data in / from the .skippy folder.
- It only retains the latest Test Impact Analysis and.
- It only retains the JaCoCo execution data files that are referenced by the latest Test Impact Analysis.
The default settings are designed for small projects that do not require code coverage reports, and thus, do not store JaCoCo execution data files. Those projects will typically disable the coverageForSkippedTests setting. While these defaults support projects of any size and allow for the storage of JaCoCo data files for experimental purposes, they are not recommended for large projects or those needing to store such files long-term. Doing so could significantly increase the size of your Git repository.
Large projects aiming to store and permanently retain Test Impact Analysis instances and JaCoCo execution data files can register a custom SkippyRepositoryExtension. This extension enables the storage of these artifacts outside the project’s repository using systems such as databases, network file systems, or blob storage solutions like AWS S3.
Example for a custom SkippyRepositoryExtension: FileSystemBackedRepositoryExtension
Gradle Configuration
To enable this feature in Gradle, add the following to your build.gradle file:
buildscript {
dependencies {
classpath 'com.example:my-repository-extension:1.0.0'
}
}
skippy {
repository = 'com.example.MyRepositoryExtension'
}
dependencies {
testImplementation 'com.example:my-repository-extension:1.0.0'
}Maven Configuration
To enable this feature in Maven, add the following to your pom.xml file:
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>my-repository-extension</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<plugin>
<groupId>io.skippy</groupId>
<artifactId>skippy-maven</artifactId>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>my-repository-extension</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<configuration>
<repository>com.example.MyRepositoryExtension</repository>
</configuration>
</plugin>Other noteworthy changes
The setting saveExecutionData has been renamed to coverageForSkippedTest to highlight the purpose instead of the implementation details.
Gradle example:
skippy {
coverageForSkippedTests = true
}Maven example:
<plugin>
<groupId>io.skippy</groupId>
<artifactId>skippy-maven</artifactId>
...
<configuration>
<coverageForSkippedTest>true</coverageForSkippedTest>
</configuration>
...
</plugin>Resolved Issues
- #150: Allow projects to customize SkippyRepository's default behavior
v0.0.18
Highlights
This release introduces support for generating coverage reports that include coverage for skipped tests. This feature is particularly useful for corporate CI pipelines with strict code coverage requirements.
Gradle Configuration
To enable this feature in Gradle, add the following to your build.gradle file:
skippy {
saveExecutionData = true
}Maven Configuration
To enable this feature in Maven, add the following to your pom.xml file:
<plugin>
<groupId>io.skippy</groupId>
<artifactId>skippy-maven</artifactId>
...
<configuration>
<saveExecutionData>true</saveExecutionData>
</configuration>
...
</plugin>skippy.exec
Skippy will automatically generate a JaCoCo execution data file named skippy.exec if the feature is enabled and there is at least a single skipped test. This file is placed within the build directory, typically found under build/ for Gradle projects or target/ for Maven projects.
skippy.exec aggregates the execution data for all skipped tests. It can be merged with JaCoCo's standard execution data file to generate a combined report that contains coverage for executed and skipped tests:
- https://www.eclemma.org/jacoco/trunk/doc/merge-mojo.html
- https://docs.gradle.org/current/dsl/org.gradle.testing.jacoco.tasks.JacocoReport.html
Resolved Issues
- #143: Skipped tests should contribute to code coverage reports
v0.0.17
Highlights
This release adds support for incremental updates of the Skippy folder for Gradle-based builds in cases where the build fails due to a failing test case.
Old behavior:
./gradlew test
FooTest > testFoo() PASSED ─┐
BarTest > testBar() FAILED │
│ a tests that previously passed
./gradlew test │ is executed again in a subsequent build
│
FooTest > testFoo() PASSED ←┘
BarTest > testBar() FAILED
New behavior:
./gradlew test
FooTest > testFoo() PASSED ─┐
BarTest > testBar() FAILED │
│ a tests that previously passed
./gradlew test │ is skipped in a subsequent build
│
FooTest > testFoo() SKIPPED ←┘
BarTest > testBar() FAILED
Resolved Issues
- #141: Support incremental updates for builds with failing tests
v0.0.16
Highlights
This release gets rid of the term "skippified":
- Renaming of
io.skippy.junit5.Skippifiedtoio.skippy.junit5.PredictWithSkippy - Renaming of
io.skippy.junit4.Skippy.skippified()toio.skippy.junit4.Skippy.predictWithSkippy()
Resolved Issues
- #139: Rename @Skippified to @PredictWithSkippy