Compare commits
No commits in common. "master" and "0.9.1" have entirely different histories.
39 changed files with 1827 additions and 1915 deletions
30
.github/workflows/bld.yml
vendored
30
.github/workflows/bld.yml
vendored
|
@ -1,38 +1,32 @@
|
|||
name: bld-ci
|
||||
|
||||
on: [push, pull_request, workflow_dispatch]
|
||||
on: [ push, pull_request, workflow_dispatch ]
|
||||
|
||||
jobs:
|
||||
build-bld-project:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
java-version: [17, 21, 24]
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
java-version: [ 17, 20 ]
|
||||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK ${{ matrix.java-version }}
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: "zulu"
|
||||
distribution: 'zulu'
|
||||
java-version: ${{ matrix.java-version }}
|
||||
|
||||
- name: Download dependencies [examples]
|
||||
working-directory: examples
|
||||
- name: Grant execute permission for bld
|
||||
run: chmod +x bld
|
||||
|
||||
- name: Download the dependencies
|
||||
run: ./bld download
|
||||
|
||||
- name: Run PIT tests [examples]
|
||||
working-directory: examples
|
||||
run: ./bld compile pit
|
||||
|
||||
- name: Download dependencies
|
||||
run: ./bld download
|
||||
|
||||
- name: Run tests
|
||||
- name: Run tests with bld
|
||||
run: ./bld compile test
|
||||
|
|
12
.github/workflows/pages.yml
vendored
12
.github/workflows/pages.yml
vendored
|
@ -30,14 +30,14 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: "zulu"
|
||||
distribution: 'zulu'
|
||||
java-version: 17
|
||||
|
||||
- name: Build Javadocs
|
||||
|
@ -47,11 +47,11 @@ jobs:
|
|||
uses: actions/configure-pages@v3
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
uses: actions/upload-pages-artifact@v1
|
||||
with:
|
||||
# Upload generated Javadocs repository
|
||||
path: "build/javadoc/"
|
||||
path: 'build/javadoc/'
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
uses: actions/deploy-pages@v1
|
6
.idea/bld.xml
generated
6
.idea/bld.xml
generated
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="BldConfiguration">
|
||||
<events />
|
||||
</component>
|
||||
</project>
|
2
.idea/copyright/Apache_License.xml
generated
2
.idea/copyright/Apache_License.xml
generated
|
@ -1,6 +1,6 @@
|
|||
<component name="CopyrightManager">
|
||||
<copyright>
|
||||
<option name="notice" value="Copyright 2023-&#36;today.year the original author or authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." />
|
||||
<option name="notice" value="Copyright &#36;today.year the original author or authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." />
|
||||
<option name="myName" value="Apache License" />
|
||||
</copyright>
|
||||
</component>
|
13
.idea/icon.svg
generated
13
.idea/icon.svg
generated
|
@ -1,13 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 179 108" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1,0,0,1,-210.511,-96.3382)">
|
||||
<g transform="matrix(1,0,0,1,-23.3386,-649.816)">
|
||||
<g transform="matrix(0.221288,0,0,0.24,73.9536,390.254)">
|
||||
<path d="M722.568,1482.92L722.568,1921.1L808.968,1921.1L808.968,1888.7C822.168,1907.9 846.168,1930.1 893.568,1930.1C933.168,1930.1 961.968,1917.5 985.368,1893.5C1012.97,1865.9 1027.37,1827.5 1027.37,1786.1C1027.37,1741.7 1011.17,1705.1 985.368,1680.5C961.968,1658.3 928.968,1644.5 892.368,1644.5C862.968,1644.5 830.568,1654.1 808.968,1683.5L808.968,1482.92L722.568,1482.92ZM871.368,1718.9C888.768,1718.9 903.768,1723.7 917.568,1736.9C930.168,1748.9 938.568,1766.3 938.568,1787.9C938.568,1807.7 930.168,1825.1 917.568,1837.1C904.368,1849.7 887.568,1855.7 872.568,1855.7C856.368,1855.7 837.168,1849.1 823.368,1835.9C813.168,1826.3 803.568,1810.1 803.568,1787.9C803.568,1765.1 812.568,1749.5 822.768,1738.7C836.568,1724.3 852.768,1718.9 871.368,1718.9Z" style="fill:rgb(35,146,255);fill-rule:nonzero;"/>
|
||||
<rect x="1083.77" y="1482.92" width="86.4" height="438.182" style="fill:rgb(250,144,82);fill-rule:nonzero;"/>
|
||||
<path d="M1531.37,1482.92L1444.97,1482.92L1444.97,1683.5C1423.37,1654.1 1390.97,1644.5 1361.57,1644.5C1324.97,1644.5 1291.97,1658.3 1268.57,1680.5C1242.77,1705.1 1226.57,1741.7 1226.57,1786.1C1226.57,1827.5 1240.97,1865.9 1268.57,1893.5C1291.97,1917.5 1320.77,1930.1 1360.37,1930.1C1407.77,1930.1 1431.77,1907.9 1444.97,1888.7L1444.97,1921.1L1531.37,1921.1L1531.37,1482.92ZM1382.57,1718.9C1401.17,1718.9 1417.37,1724.3 1431.17,1738.7C1441.37,1749.5 1450.37,1765.1 1450.37,1787.9C1450.37,1810.1 1440.77,1826.3 1430.57,1835.9C1416.77,1849.1 1397.57,1855.7 1381.37,1855.7C1366.37,1855.7 1349.57,1849.7 1336.37,1837.1C1323.77,1825.1 1315.37,1807.7 1315.37,1787.9C1315.37,1766.3 1323.77,1748.9 1336.37,1736.9C1350.17,1723.7 1365.17,1718.9 1382.57,1718.9Z" style="fill:rgb(35,146,255);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 2.4 KiB |
1
.idea/inspectionProfiles/Project_Default.xml
generated
1
.idea/inspectionProfiles/Project_Default.xml
generated
|
@ -4,6 +4,5 @@
|
|||
<inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ADDITIONAL_TAGS" value="created" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="UsePropertyAccessSyntax" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
4
.idea/libraries/bld.xml
generated
4
.idea/libraries/bld.xml
generated
|
@ -2,12 +2,12 @@
|
|||
<library name="bld">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-1.7.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-1.7.5-sources.jar!/" />
|
||||
</SOURCES>
|
||||
<excluded>
|
||||
<root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" />
|
||||
|
|
4
.idea/libraries/compile.xml
generated
4
.idea/libraries/compile.xml
generated
|
@ -7,7 +7,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/compile" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
4
.idea/libraries/runtime.xml
generated
4
.idea/libraries/runtime.xml
generated
|
@ -8,7 +8,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/runtime" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
4
.idea/libraries/test.xml
generated
4
.idea/libraries/test.xml
generated
|
@ -8,7 +8,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/test" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
|
@ -4,7 +4,6 @@
|
|||
<pattern value="rife.bld.extension.PitestOperationBuild" method="jacoco" />
|
||||
<pattern value="rife.bld.extension.PitestOperationBuild" />
|
||||
<pattern value="rife.bld.extension.PitestOperationBuild" method="pmd" />
|
||||
<pattern value="rife.bld.extension.PitestOperationBuild" method="pmdCli" />
|
||||
</component>
|
||||
<component name="PDMPlugin">
|
||||
<option name="customRuleSets">
|
||||
|
@ -20,7 +19,7 @@
|
|||
</option>
|
||||
<option name="skipTestSources" value="false" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build" />
|
||||
</component>
|
||||
</project>
|
9
.vscode/launch.json
vendored
9
.vscode/launch.json
vendored
|
@ -5,14 +5,7 @@
|
|||
"type": "java",
|
||||
"name": "Run Tests",
|
||||
"request": "launch",
|
||||
"mainClass": "org.junit.platform.console.ConsoleLauncher",
|
||||
"args": [
|
||||
"--details=verbose",
|
||||
"--scan-classpath",
|
||||
"--disable-banner",
|
||||
"--disable-ansi-colors",
|
||||
"--exclude-engine=junit-platform-suite",
|
||||
"--exclude-engine=junit-vintage"]
|
||||
"mainClass": "rife.bld.extension.PitestExtensionTest"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
10
.vscode/settings.json
vendored
10
.vscode/settings.json
vendored
|
@ -3,13 +3,13 @@
|
|||
"src/main/java",
|
||||
"src/main/resources",
|
||||
"src/test/java",
|
||||
"src/test/resources",
|
||||
"src/bld/java",
|
||||
"src/bld/resources"
|
||||
"src/bld/java"
|
||||
],
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.project.referencedLibraries": [
|
||||
"${HOME}/.bld/dist/bld-2.2.1.jar",
|
||||
"lib/**/*.jar"
|
||||
"${HOME}/.bld/dist/bld-1.7.5.jar",
|
||||
"lib/compile/*.jar",
|
||||
"lib/runtime/*.jar",
|
||||
"lib/test/*.jar"
|
||||
]
|
||||
}
|
||||
|
|
BIN
README.md
Normal file → Executable file
BIN
README.md
Normal file → Executable file
Binary file not shown.
|
@ -7,9 +7,9 @@
|
|||
<!-- BEST PRACTICES -->
|
||||
<rule ref="category/java/bestpractices.xml">
|
||||
<exclude name="AvoidPrintStackTrace"/>
|
||||
<exclude name="JUnit4TestShouldUseTestAnnotation"/>
|
||||
<exclude name="JUnitTestContainsTooManyAsserts"/>
|
||||
<exclude name="GuardLogStatement"/>
|
||||
<exclude name="UnitTestContainsTooManyAsserts"/>
|
||||
<exclude name="UnitTestShouldUseTestAnnotation"/>
|
||||
</rule>
|
||||
|
||||
<rule ref="category/java/bestpractices.xml/MissingOverride">
|
||||
|
@ -19,13 +19,12 @@
|
|||
</properties>
|
||||
</rule>
|
||||
|
||||
|
||||
<!-- CODE STYLE -->
|
||||
<rule ref="category/java/codestyle.xml">
|
||||
<exclude name="AtLeastOneConstructor"/>
|
||||
<exclude name="ClassNamingConventions"/>
|
||||
<exclude name="CommentDefaultAccessModifier"/>
|
||||
<exclude name="ConfusingTernary"/>
|
||||
<exclude name="CommentDefaultAccessModifier"/>
|
||||
<exclude name="FieldNamingConventions"/>
|
||||
<exclude name="LocalVariableCouldBeFinal"/>
|
||||
<exclude name="LongVariable"/>
|
||||
|
@ -35,9 +34,8 @@
|
|||
<exclude name="ShortClassName"/>
|
||||
<exclude name="ShortMethodName"/>
|
||||
<exclude name="ShortVariable"/>
|
||||
<exclude name="UseExplicitTypes"/>
|
||||
<exclude name="UseUnderscoresInNumericLiterals"/>
|
||||
<exclude name="UselessParentheses"/>
|
||||
<exclude name="UseUnderscoresInNumericLiterals"/>
|
||||
</rule>
|
||||
|
||||
<rule ref="category/java/codestyle.xml/UnnecessaryImport">
|
||||
|
@ -53,6 +51,8 @@
|
|||
<exclude name="AvoidUncheckedExceptionsInSignatures"/>
|
||||
<exclude name="CognitiveComplexity"/>
|
||||
<exclude name="CyclomaticComplexity"/>
|
||||
<exclude name="ExcessiveClassLength"/>
|
||||
<exclude name="ExcessiveMethodLength"/>
|
||||
<exclude name="ExcessiveParameterList"/>
|
||||
<exclude name="ExcessivePublicCount"/>
|
||||
<exclude name="GodClass"/>
|
||||
|
@ -106,4 +106,4 @@
|
|||
<!-- SECURITY -->
|
||||
<rule ref="category/java/security.xml">
|
||||
</rule>
|
||||
</ruleset>
|
||||
</ruleset>
|
5
examples/.gitignore
vendored
5
examples/.gitignore
vendored
|
@ -52,7 +52,4 @@ atlassian-ide-plugin.xml
|
|||
.idea/sonarlint/
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
|
||||
reports
|
||||
.idea/httpRequests
|
4
examples/.idea/libraries/bld.xml
generated
4
examples/.idea/libraries/bld.xml
generated
|
@ -2,12 +2,12 @@
|
|||
<library name="bld">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-1.7.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-1.7.5-sources.jar!/" />
|
||||
</SOURCES>
|
||||
<excluded>
|
||||
<root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" />
|
||||
|
|
4
examples/.idea/libraries/compile.xml
generated
4
examples/.idea/libraries/compile.xml
generated
|
@ -7,7 +7,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/compile" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
4
examples/.idea/libraries/runtime.xml
generated
4
examples/.idea/libraries/runtime.xml
generated
|
@ -8,7 +8,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/runtime" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
4
examples/.idea/libraries/test.xml
generated
4
examples/.idea/libraries/test.xml
generated
|
@ -8,7 +8,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/test" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
9
examples/.vscode/launch.json
vendored
9
examples/.vscode/launch.json
vendored
|
@ -5,14 +5,7 @@
|
|||
"type": "java",
|
||||
"name": "Run Tests",
|
||||
"request": "launch",
|
||||
"mainClass": "org.junit.platform.console.ConsoleLauncher",
|
||||
"args": [
|
||||
"--details=verbose",
|
||||
"--scan-classpath",
|
||||
"--disable-banner",
|
||||
"--disable-ansi-colors",
|
||||
"--exclude-engine=junit-platform-suite",
|
||||
"--exclude-engine=junit-vintage"]
|
||||
"mainClass": "com.example.ExamplesTest"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
10
examples/.vscode/settings.json
vendored
10
examples/.vscode/settings.json
vendored
|
@ -3,13 +3,13 @@
|
|||
"src/main/java",
|
||||
"src/main/resources",
|
||||
"src/test/java",
|
||||
"src/test/resources",
|
||||
"src/bld/java",
|
||||
"src/bld/resources"
|
||||
"src/bld/java"
|
||||
],
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.project.referencedLibraries": [
|
||||
"${HOME}/.bld/dist/bld-2.2.1.jar",
|
||||
"lib/**/*.jar"
|
||||
"${HOME}/.bld/dist/bld-1.7.5.jar",
|
||||
"lib/compile/*.jar",
|
||||
"lib/runtime/*.jar",
|
||||
"lib/test/*.jar"
|
||||
]
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -1,7 +1,7 @@
|
|||
bld.downloadExtensionJavadoc=false
|
||||
bld.downloadExtensionSources=true
|
||||
bld.downloadLocation=
|
||||
bld.extension-pitest=com.uwyn.rife2:bld-pitest:1.0.10
|
||||
bld.extensions=com.uwyn.rife2:bld-pitest:0.9.1-SNAPSHOT
|
||||
bld.repositories=MAVEN_CENTRAL,RIFE2_RELEASES,MAVEN_LOCAL,RIFE2_SNAPSHOTS
|
||||
bld.downloadLocation=
|
||||
bld.sourceDirectories=
|
||||
bld.version=2.2.1
|
||||
bld.version=1.7.5
|
||||
|
|
166
examples/reports/mutations/com.example/ExamplesLib.java.html
Normal file
166
examples/reports/mutations/com.example/ExamplesLib.java.html
Normal file
|
@ -0,0 +1,166 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<h1>ExamplesLib.java</h1>
|
||||
|
||||
<table class="src">
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@5c671d7f_1'/>
|
||||
1
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@5c671d7f_1'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''>package com.example;</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@5c671d7f_2'/>
|
||||
2
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@5c671d7f_2'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''></span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='covered'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@5c671d7f_3'/>
|
||||
3
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@5c671d7f_3'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class='covered'><pre><span class=''>public class ExamplesLib {</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@5c671d7f_4'/>
|
||||
4
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@5c671d7f_4'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''> public String getMessage() {</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='covered'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@5c671d7f_5'/>
|
||||
5
|
||||
</td>
|
||||
<td class='killed'>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@5c671d7f_5'>1</a>
|
||||
<span>
|
||||
1. getMessage : replaced return value with "" for com/example/ExamplesLib::getMessage → KILLED<br/>
|
||||
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class='covered'><pre><span class='killed'> return "Hello World!";</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@5c671d7f_6'/>
|
||||
6
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@5c671d7f_6'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''> }</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@5c671d7f_7'/>
|
||||
7
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@5c671d7f_7'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''>}</span></pre></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td></td><td></td><td><h2>Mutations</h2></td></tr>
|
||||
|
||||
<tr>
|
||||
<td><a href='#org.pitest.mutationtest.report.html.SourceFile@5c671d7f_5'>5</a></td>
|
||||
<td></td>
|
||||
<td>
|
||||
|
||||
<a name='grouporg.pitest.mutationtest.report.html.SourceFile@5c671d7f_5'/>
|
||||
|
||||
<p class='KILLED'><span class='pop'>1.<span><b>1</b><br/><b>Location : </b>getMessage<br/><b>Killed by : </b>com.example.ExamplesTest.[engine:junit-jupiter]/[class:com.example.ExamplesTest]/[method:verifyHello()]</span></span> replaced return value with "" for com/example/ExamplesLib::getMessage → KILLED</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
<h2>Active mutators</h2>
|
||||
<ul>
|
||||
<li class='mutator'>CONDITIONALS_BOUNDARY</li>
|
||||
<li class='mutator'>EMPTY_RETURNS</li>
|
||||
<li class='mutator'>FALSE_RETURNS</li>
|
||||
<li class='mutator'>INCREMENTS</li>
|
||||
<li class='mutator'>INVERT_NEGS</li>
|
||||
<li class='mutator'>MATH</li>
|
||||
<li class='mutator'>NEGATE_CONDITIONALS</li>
|
||||
<li class='mutator'>NULL_RETURNS</li>
|
||||
<li class='mutator'>PRIMITIVE_RETURNS</li>
|
||||
<li class='mutator'>TRUE_RETURNS</li>
|
||||
<li class='mutator'>VOID_METHOD_CALLS</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Tests examined</h2>
|
||||
<ul>
|
||||
<li>com.example.ExamplesTest.[engine:junit-jupiter]/[class:com.example.ExamplesTest]/[method:verifyHello()] (9 ms)</li>
|
||||
</ul>
|
||||
|
||||
<br/>
|
||||
|
||||
Report generated by <a href='https://pitest.org'>PIT</a> 1.15.1
|
||||
|
||||
</body>
|
||||
</html>
|
241
examples/reports/mutations/com.example/ExamplesTest.java.html
Normal file
241
examples/reports/mutations/com.example/ExamplesTest.java.html
Normal file
|
@ -0,0 +1,241 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<h1>ExamplesTest.java</h1>
|
||||
|
||||
<table class="src">
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_1'/>
|
||||
1
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_1'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''>package com.example;</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_2'/>
|
||||
2
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_2'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''></span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_3'/>
|
||||
3
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_3'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''>import org.junit.jupiter.api.Test;</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_4'/>
|
||||
4
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_4'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''></span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_5'/>
|
||||
5
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_5'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''>import static org.junit.jupiter.api.Assertions.assertEquals;</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_6'/>
|
||||
6
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_6'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''></span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='covered'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_7'/>
|
||||
7
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_7'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class='covered'><pre><span class=''>public class ExamplesTest {</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_8'/>
|
||||
8
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_8'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''> @Test</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_9'/>
|
||||
9
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_9'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''> void verifyHello() {</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='covered'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_10'/>
|
||||
10
|
||||
</td>
|
||||
<td class='survived'>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_10'>1</a>
|
||||
<span>
|
||||
1. verifyHello : removed call to org/junit/jupiter/api/Assertions::assertEquals → SURVIVED<br/>
|
||||
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class='covered'><pre><span class='survived'> assertEquals("Hello World!", new ExamplesLib().getMessage());</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='covered'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_11'/>
|
||||
11
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_11'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class='covered'><pre><span class=''> }</span></pre></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class='na'>
|
||||
<a name='org.pitest.mutationtest.report.html.SourceFile@1f59a598_12'/>
|
||||
12
|
||||
</td>
|
||||
<td class=''>
|
||||
<span class='pop'>
|
||||
<a href='#grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_12'></a>
|
||||
<span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class=''><pre><span class=''>}</span></pre></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr><td></td><td></td><td><h2>Mutations</h2></td></tr>
|
||||
|
||||
<tr>
|
||||
<td><a href='#org.pitest.mutationtest.report.html.SourceFile@1f59a598_10'>10</a></td>
|
||||
<td></td>
|
||||
<td>
|
||||
|
||||
<a name='grouporg.pitest.mutationtest.report.html.SourceFile@1f59a598_10'/>
|
||||
|
||||
<p class='SURVIVED'><span class='pop'>1.<span><b>1</b><br/><b>Location : </b>verifyHello<br/><b>Killed by : </b>none</span></span> removed call to org/junit/jupiter/api/Assertions::assertEquals → SURVIVED</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
<h2>Active mutators</h2>
|
||||
<ul>
|
||||
<li class='mutator'>CONDITIONALS_BOUNDARY</li>
|
||||
<li class='mutator'>EMPTY_RETURNS</li>
|
||||
<li class='mutator'>FALSE_RETURNS</li>
|
||||
<li class='mutator'>INCREMENTS</li>
|
||||
<li class='mutator'>INVERT_NEGS</li>
|
||||
<li class='mutator'>MATH</li>
|
||||
<li class='mutator'>NEGATE_CONDITIONALS</li>
|
||||
<li class='mutator'>NULL_RETURNS</li>
|
||||
<li class='mutator'>PRIMITIVE_RETURNS</li>
|
||||
<li class='mutator'>TRUE_RETURNS</li>
|
||||
<li class='mutator'>VOID_METHOD_CALLS</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Tests examined</h2>
|
||||
<ul>
|
||||
<li>com.example.ExamplesTest.[engine:junit-jupiter]/[class:com.example.ExamplesTest]/[method:verifyHello()] (9 ms)</li>
|
||||
</ul>
|
||||
|
||||
<br/>
|
||||
|
||||
Report generated by <a href='https://pitest.org'>PIT</a> 1.15.1
|
||||
|
||||
</body>
|
||||
</html>
|
69
examples/reports/mutations/com.example/index.html
Normal file
69
examples/reports/mutations/com.example/index.html
Normal file
|
@ -0,0 +1,69 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="../style.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Pit Test Coverage Report</h1>
|
||||
<h2>Package Summary</h2>
|
||||
<h3>com.example</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Number of Classes</th>
|
||||
<th>Line Coverage</th>
|
||||
<th>Mutation Coverage</th>
|
||||
<th>Test Strength</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>100% <div class="coverage_bar"><div class="coverage_complete width-100"></div><div class="coverage_legend">5/5</div></div></td>
|
||||
<td>50% <div class="coverage_bar"><div class="coverage_complete width-50"></div><div class="coverage_legend">1/2</div></div></td>
|
||||
<td>50% <div class="coverage_bar"><div class="coverage_complete width-50"></div><div class="coverage_legend">1/2</div></div></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<h3>Breakdown by Class</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Line Coverage</th>
|
||||
<th>Mutation Coverage</th>
|
||||
<th>Test Strength</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td><a href="./ExamplesLib.java.html">ExamplesLib.java</a></td>
|
||||
<td><div class="coverage_percentage">100% </div><div class="coverage_bar"><div class="coverage_complete width-100"></div><div class="coverage_legend">2/2</div></div></td>
|
||||
<td><div class="coverage_percentage">100% </div><div class="coverage_bar"><div class="coverage_complete width-100"></div><div class="coverage_legend">1/1</div></div></td>
|
||||
<td><div class="coverage_percentage">100% </div><div class="coverage_bar"><div class="coverage_complete width-100"></div><div class="coverage_legend">1/1</div></div></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><a href="./ExamplesTest.java.html">ExamplesTest.java</a></td>
|
||||
<td><div class="coverage_percentage">100% </div><div class="coverage_bar"><div class="coverage_complete width-100"></div><div class="coverage_legend">3/3</div></div></td>
|
||||
<td><div class="coverage_percentage">0% </div><div class="coverage_bar"><div class="coverage_complete width-0"></div><div class="coverage_legend">0/1</div></div></td>
|
||||
<td><div class="coverage_percentage">0% </div><div class="coverage_bar"><div class="coverage_complete width-0"></div><div class="coverage_legend">0/1</div></div></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
Report generated by <a href='https://pitest.org'>PIT</a> 1.15.1
|
||||
|
||||
</body>
|
||||
</html>
|
69
examples/reports/mutations/index.html
Normal file
69
examples/reports/mutations/index.html
Normal file
|
@ -0,0 +1,69 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Pit Test Coverage Report</h1>
|
||||
|
||||
<h3>Project Summary</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Number of Classes</th>
|
||||
<th>Line Coverage</th>
|
||||
<th>Mutation Coverage</th>
|
||||
<th>Test Strength</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>100% <div class="coverage_bar"><div class="coverage_complete width-100"></div><div class="coverage_legend">5/5</div></div></td>
|
||||
<td>50% <div class="coverage_bar"><div class="coverage_complete width-50"></div><div class="coverage_legend">1/2</div></div></td>
|
||||
<td>50% <div class="coverage_bar"><div class="coverage_complete width-50"></div><div class="coverage_legend">1/2</div></div></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<h3>Breakdown by Package</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Number of Classes</th>
|
||||
<th>Line Coverage</th>
|
||||
<th>Mutation Coverage</th>
|
||||
<th>Test Strength</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td><a href="./com.example/index.html">com.example</a></td>
|
||||
<td>2</td>
|
||||
<td><div class="coverage_percentage">100% </div><div class="coverage_bar"><div class="coverage_complete width-100"></div><div class="coverage_legend">5/5</div></div></td>
|
||||
<td><div class="coverage_percentage">50% </div><div class="coverage_bar"><div class="coverage_complete width-50"></div><div class="coverage_legend">1/2</div></div></td>
|
||||
<td><div class="coverage_percentage">50% </div><div class="coverage_bar"><div class="coverage_complete width-50"></div><div class="coverage_legend">1/2</div></div></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
Report generated by <a href='https://pitest.org'>PIT</a> 1.15.1
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
Enhanced functionality available at <a href='https://www.arcmutate.com/'>arcmutate.com</a>
|
||||
|
||||
</body>
|
||||
</html>
|
563
examples/reports/mutations/style.css
Normal file
563
examples/reports/mutations/style.css
Normal file
|
@ -0,0 +1,563 @@
|
|||
html, body, div, span, p, blockquote, pre {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
font-weight: inherit;
|
||||
font-style: inherit;
|
||||
font-size: 100%;
|
||||
font-family: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
body{
|
||||
line-height: 1;
|
||||
color: black;
|
||||
background: white;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.src {
|
||||
border: 1px solid #dddddd;
|
||||
padding-top: 10px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
font-family: Consolas, Courier, monospace;
|
||||
}
|
||||
|
||||
.covered, .COVERED {
|
||||
background-color: #ddffdd;
|
||||
}
|
||||
|
||||
.uncovered, .UNCOVERED {
|
||||
background-color: #ffdddd;
|
||||
}
|
||||
|
||||
.killed, .KILLED {
|
||||
background-color: #aaffaa;
|
||||
}
|
||||
|
||||
.survived, .SURVIVED {
|
||||
background-color: #ffaaaa;
|
||||
}
|
||||
|
||||
.uncertain, .UNCERTAIN {
|
||||
background-color: #dde7ef;
|
||||
}
|
||||
|
||||
.run_error, .RUN_ERROR {
|
||||
background-color: #dde7ef;
|
||||
}
|
||||
|
||||
.na {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
.timed_out, .TIMED_OUT {
|
||||
background-color: #dde7ef;
|
||||
}
|
||||
|
||||
.non_viable, .NON_VIABLE {
|
||||
background-color: #aaffaa;
|
||||
}
|
||||
|
||||
.memory_error, .MEMORY_ERROR {
|
||||
background-color: #dde7ef;
|
||||
}
|
||||
|
||||
.not_started, .NO_STARTED {
|
||||
background-color: #dde7ef; color : red
|
||||
}
|
||||
|
||||
.no_coverage, .NO_COVERAGE {
|
||||
background-color: #ffaaaa;
|
||||
}
|
||||
|
||||
.tests {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.mutees {
|
||||
float: right;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.unit {
|
||||
padding-top: 20px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.coverage_bar {
|
||||
display: inline-block;
|
||||
height: 1.1em;
|
||||
width: 130px;
|
||||
background: #FAA;
|
||||
margin: 0 5px;
|
||||
vertical-align: middle;
|
||||
border: 1px solid #AAA;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.coverage_complete {
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
background: #DFD;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.coverage_legend {
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.line, .mut {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.coverage_percentage {
|
||||
display: inline-block;
|
||||
width: 3em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.pop {
|
||||
outline:none;
|
||||
}
|
||||
|
||||
.pop strong {
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.pop {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.pop span {
|
||||
z-index: 10;
|
||||
display: none;
|
||||
padding: 14px 20px;
|
||||
margin-top: -30px;
|
||||
margin-left: 28px;
|
||||
width: 800px;
|
||||
line-height: 16px;
|
||||
word-wrap: break-word;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-box-shadow: 5px 5px 8px #CCC;
|
||||
-webkit-box-shadow: 5px 5px 8px #CCC;
|
||||
box-shadow: 5px 5px 8px #CCC;
|
||||
}
|
||||
|
||||
.pop:hover span {
|
||||
display: inline;
|
||||
position: absolute;
|
||||
color: #111;
|
||||
border: 1px solid #DCA;
|
||||
background: #fffAF0;
|
||||
}
|
||||
|
||||
.width-1 {
|
||||
width: 1%;
|
||||
}
|
||||
|
||||
.width-2 {
|
||||
width: 2%;
|
||||
}
|
||||
|
||||
.width-3 {
|
||||
width: 3%;
|
||||
}
|
||||
|
||||
.width-4 {
|
||||
width: 4%;
|
||||
}
|
||||
|
||||
.width-5 {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
.width-6 {
|
||||
width: 6%;
|
||||
}
|
||||
|
||||
.width-7 {
|
||||
width: 7%;
|
||||
}
|
||||
|
||||
.width-8 {
|
||||
width: 8%;
|
||||
}
|
||||
|
||||
.width-9 {
|
||||
width: 9%;
|
||||
}
|
||||
|
||||
.width-10 {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
.width-11 {
|
||||
width: 11%;
|
||||
}
|
||||
|
||||
.width-12 {
|
||||
width: 12%;
|
||||
}
|
||||
|
||||
.width-13 {
|
||||
width: 13%;
|
||||
}
|
||||
|
||||
.width-14 {
|
||||
width: 14%;
|
||||
}
|
||||
|
||||
.width-15 {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
.width-16 {
|
||||
width: 16%;
|
||||
}
|
||||
|
||||
.width-17 {
|
||||
width: 17%;
|
||||
}
|
||||
|
||||
.width-18 {
|
||||
width: 18%;
|
||||
}
|
||||
|
||||
.width-19 {
|
||||
width: 19%;
|
||||
}
|
||||
|
||||
.width-20 {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.width-21 {
|
||||
width: 21%;
|
||||
}
|
||||
|
||||
.width-22 {
|
||||
width: 22%;
|
||||
}
|
||||
|
||||
.width-23 {
|
||||
width: 23%;
|
||||
}
|
||||
|
||||
.width-24 {
|
||||
width: 24%;
|
||||
}
|
||||
|
||||
.width-25 {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.width-26 {
|
||||
width: 26%;
|
||||
}
|
||||
|
||||
.width-27 {
|
||||
width: 27%;
|
||||
}
|
||||
|
||||
.width-28 {
|
||||
width: 28%;
|
||||
}
|
||||
|
||||
.width-29 {
|
||||
width: 29%;
|
||||
}
|
||||
|
||||
.width-30 {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.width-31 {
|
||||
width: 31%;
|
||||
}
|
||||
|
||||
.width-32 {
|
||||
width: 32%;
|
||||
}
|
||||
|
||||
.width-33 {
|
||||
width: 33%;
|
||||
}
|
||||
|
||||
.width-34 {
|
||||
width: 34%;
|
||||
}
|
||||
|
||||
.width-35 {
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
.width-36 {
|
||||
width: 36%;
|
||||
}
|
||||
|
||||
.width-37 {
|
||||
width: 37%;
|
||||
}
|
||||
|
||||
.width-38 {
|
||||
width: 38%;
|
||||
}
|
||||
|
||||
.width-39 {
|
||||
width: 39%;
|
||||
}
|
||||
|
||||
.width-40 {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.width-41 {
|
||||
width: 41%;
|
||||
}
|
||||
|
||||
.width-42 {
|
||||
width: 42%;
|
||||
}
|
||||
|
||||
.width-43 {
|
||||
width: 43%;
|
||||
}
|
||||
|
||||
.width-44 {
|
||||
width: 44%;
|
||||
}
|
||||
|
||||
.width-45 {
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
.width-46 {
|
||||
width: 46%;
|
||||
}
|
||||
|
||||
.width-47 {
|
||||
width: 47%;
|
||||
}
|
||||
|
||||
.width-48 {
|
||||
width: 48%;
|
||||
}
|
||||
|
||||
.width-49 {
|
||||
width: 49%;
|
||||
}
|
||||
|
||||
.width-50 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.width-51 {
|
||||
width: 51%;
|
||||
}
|
||||
|
||||
.width-52 {
|
||||
width: 52%;
|
||||
}
|
||||
|
||||
.width-53 {
|
||||
width: 53%;
|
||||
}
|
||||
|
||||
.width-54 {
|
||||
width: 54%;
|
||||
}
|
||||
|
||||
.width-55 {
|
||||
width: 55%;
|
||||
}
|
||||
|
||||
.width-56 {
|
||||
width: 56%;
|
||||
}
|
||||
|
||||
.width-57 {
|
||||
width: 57%;
|
||||
}
|
||||
|
||||
.width-58 {
|
||||
width: 58%;
|
||||
}
|
||||
|
||||
.width-59 {
|
||||
width: 59%;
|
||||
}
|
||||
|
||||
.width-60 {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
.width-61 {
|
||||
width: 61%;
|
||||
}
|
||||
|
||||
.width-62 {
|
||||
width: 62%;
|
||||
}
|
||||
|
||||
.width-63 {
|
||||
width: 63%;
|
||||
}
|
||||
|
||||
.width-64 {
|
||||
width: 64%;
|
||||
}
|
||||
|
||||
.width-65 {
|
||||
width: 65%;
|
||||
}
|
||||
|
||||
.width-66 {
|
||||
width: 66%;
|
||||
}
|
||||
|
||||
.width-67 {
|
||||
width: 67%;
|
||||
}
|
||||
|
||||
.width-68 {
|
||||
width: 68%;
|
||||
}
|
||||
|
||||
.width-69 {
|
||||
width: 69%;
|
||||
}
|
||||
|
||||
.width-70 {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.width-71 {
|
||||
width: 71%;
|
||||
}
|
||||
|
||||
.width-72 {
|
||||
width: 72%;
|
||||
}
|
||||
|
||||
.width-73 {
|
||||
width: 73%;
|
||||
}
|
||||
|
||||
.width-74 {
|
||||
width: 74%;
|
||||
}
|
||||
|
||||
.width-75 {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.width-76 {
|
||||
width: 76%;
|
||||
}
|
||||
|
||||
.width-77 {
|
||||
width: 77%;
|
||||
}
|
||||
|
||||
.width-78 {
|
||||
width: 78%;
|
||||
}
|
||||
|
||||
.width-79 {
|
||||
width: 79%;
|
||||
}
|
||||
|
||||
.width-80 {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.width-81 {
|
||||
width: 81%;
|
||||
}
|
||||
|
||||
.width-82 {
|
||||
width: 82%;
|
||||
}
|
||||
|
||||
.width-83 {
|
||||
width: 83%;
|
||||
}
|
||||
|
||||
.width-84 {
|
||||
width: 84%;
|
||||
}
|
||||
|
||||
.width-85 {
|
||||
width: 85%;
|
||||
}
|
||||
|
||||
.width-86 {
|
||||
width: 86%;
|
||||
}
|
||||
|
||||
.width-87 {
|
||||
width: 87%;
|
||||
}
|
||||
|
||||
.width-88 {
|
||||
width: 88%;
|
||||
}
|
||||
|
||||
.width-89 {
|
||||
width: 89%;
|
||||
}
|
||||
|
||||
.width-90 {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.width-91 {
|
||||
width: 91%;
|
||||
}
|
||||
|
||||
.width-92 {
|
||||
width: 92%;
|
||||
}
|
||||
|
||||
.width-93 {
|
||||
width: 93%;
|
||||
}
|
||||
|
||||
.width-94 {
|
||||
width: 94%;
|
||||
}
|
||||
|
||||
.width-95 {
|
||||
width: 95%;
|
||||
}
|
||||
|
||||
.width-96 {
|
||||
width: 96%;
|
||||
}
|
||||
|
||||
.width-97 {
|
||||
width: 97%;
|
||||
}
|
||||
|
||||
.width-98 {
|
||||
width: 98%;
|
||||
}
|
||||
|
||||
.width-99 {
|
||||
width: 99%;
|
||||
}
|
||||
|
||||
.width-100 {
|
||||
width: 100%;
|
||||
}
|
|
@ -7,9 +7,6 @@ import rife.tools.FileUtils;
|
|||
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.logging.ConsoleHandler;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static rife.bld.dependencies.Scope.test;
|
||||
|
||||
|
@ -22,33 +19,17 @@ public class ExamplesBuild extends Project {
|
|||
name = "Examples";
|
||||
version = version(0, 1, 0);
|
||||
|
||||
javaRelease = 17;
|
||||
|
||||
downloadSources = true;
|
||||
autoDownloadPurge = true;
|
||||
|
||||
repositories = List.of(MAVEN_CENTRAL, RIFE2_RELEASES);
|
||||
|
||||
var pitest = version(1, 20, 0);
|
||||
scope(test)
|
||||
.include(dependency("org.pitest", "pitest", pitest))
|
||||
.include(dependency("org.pitest", "pitest-command-line", pitest))
|
||||
.include(dependency("org.pitest", "pitest-junit5-plugin", version(1, 2, 3)))
|
||||
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 13, 1)))
|
||||
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 13, 1)));
|
||||
.include(dependency("org.pitest", "pitest", version(1, 15, 1)))
|
||||
.include(dependency("org.pitest", "pitest-command-line", version(1, 15, 1)))
|
||||
.include(dependency("org.pitest", "pitest-junit5-plugin", version(1, 2, 0)))
|
||||
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 1)))
|
||||
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 1)));
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// Enable detailed logging for the extensions
|
||||
var level = Level.ALL;
|
||||
var logger = Logger.getLogger("rife.bld.extension");
|
||||
var consoleHandler = new ConsoleHandler();
|
||||
|
||||
consoleHandler.setLevel(level);
|
||||
logger.addHandler(consoleHandler);
|
||||
logger.setLevel(level);
|
||||
logger.setUseParentHandlers(false);
|
||||
|
||||
new ExamplesBuild().start(args);
|
||||
}
|
||||
|
||||
|
@ -56,7 +37,7 @@ public class ExamplesBuild extends Project {
|
|||
public void pit() throws Exception {
|
||||
new PitestOperation()
|
||||
.fromProject(this)
|
||||
.reportDir(Path.of("reports", "mutations"))
|
||||
.reportDir(Path.of("reports", "mutations").toString())
|
||||
.targetClasses(pkg + ".*")
|
||||
.targetTests(pkg + ".*")
|
||||
.verbose(true)
|
||||
|
|
Binary file not shown.
|
@ -1,8 +1,8 @@
|
|||
bld.downloadExtensionJavadoc=false
|
||||
bld.downloadExtensionSources=true
|
||||
bld.extension-pmd=com.uwyn.rife2:bld-pmd:0.9.4
|
||||
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.1
|
||||
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
|
||||
bld.downloadLocation=
|
||||
bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.5
|
||||
bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.3.0
|
||||
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
|
||||
bld.sourceDirectories=
|
||||
bld.version=2.2.1
|
||||
bld.version=1.7.5
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
main="org.pitest.mutationtest.commandline.MutationCoverageReport"
|
||||
new=/tmp/checkcliargs-new
|
||||
old=/tmp/checkcliargs-old
|
||||
|
||||
java -cp "lib/test/*" $main --help >$new
|
||||
java -cp "examples/lib/test/*" $main --help >$old
|
||||
|
||||
diff $old $new
|
||||
|
||||
rm -rf $new $old
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
java -cp "lib/test/*" org.pitest.mutationtest.commandline.MutationCoverageReport --help |\
|
||||
grep "^.*--.*" |\
|
||||
sed -e "s/\* --/--/" -e "s/ .*//" |\
|
||||
sort |\
|
||||
sed -e '/testPlugin/d' -e '/--help/d' -e '/---/d' > src/test/resources/pitest-args.txt
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2023-2025 the original author or authors.
|
||||
* Copyright 2023 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -22,44 +22,36 @@ import rife.bld.publish.PublishDeveloper;
|
|||
import rife.bld.publish.PublishLicense;
|
||||
import rife.bld.publish.PublishScm;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import static rife.bld.dependencies.Repository.*;
|
||||
import static rife.bld.dependencies.Repository.MAVEN_CENTRAL;
|
||||
import static rife.bld.dependencies.Repository.RIFE2_RELEASES;
|
||||
import static rife.bld.dependencies.Scope.compile;
|
||||
import static rife.bld.dependencies.Scope.test;
|
||||
import static rife.bld.operations.JavadocOptions.DocLinkOption.NO_MISSING;
|
||||
|
||||
public class PitestOperationBuild extends Project {
|
||||
final PmdOperation pmdOp = new PmdOperation()
|
||||
.fromProject(this)
|
||||
.failOnViolation(true)
|
||||
.ruleSets("config/pmd.xml");
|
||||
|
||||
public PitestOperationBuild() {
|
||||
pkg = "rife.bld.extension";
|
||||
name = "PitestExtension";
|
||||
version = version(1, 0, 11, "SNAPSHOT");
|
||||
version = version(0, 9, 1, "SNAPSHOT");
|
||||
|
||||
javaRelease = 17;
|
||||
|
||||
downloadSources = true;
|
||||
autoDownloadPurge = true;
|
||||
repositories = List.of(MAVEN_CENTRAL, RIFE2_RELEASES);
|
||||
|
||||
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS);
|
||||
|
||||
var pitest = version(1, 20, 0);
|
||||
var pitest = version(1, 15, 1);
|
||||
scope(compile)
|
||||
.include(dependency("com.uwyn.rife2", "bld", version(2, 2, 1)));
|
||||
.include(dependency("com.uwyn.rife2", "bld", version(1, 7, 5)));
|
||||
scope(test)
|
||||
.include(dependency("org.pitest", "pitest", pitest))
|
||||
.include(dependency("org.pitest", "pitest-command-line", pitest))
|
||||
.include(dependency("org.pitest", "pitest-junit5-plugin", version(1, 2, 3)))
|
||||
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 13, 1)))
|
||||
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 13, 1)))
|
||||
.include(dependency("org.assertj", "assertj-core", version(3, 27, 3)));
|
||||
.include(dependency("org.pitest", "pitest-junit5-plugin", version(1, 2, 0)))
|
||||
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 1)))
|
||||
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 1)))
|
||||
.include(dependency("org.assertj", "assertj-core", version(3, 24, 2)));
|
||||
|
||||
javadocOperation()
|
||||
.javadocOptions()
|
||||
|
@ -70,26 +62,28 @@ public class PitestOperationBuild extends Project {
|
|||
|
||||
publishOperation()
|
||||
.repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2"))
|
||||
.repository(repository("github"))
|
||||
.info()
|
||||
.groupId("com.uwyn.rife2")
|
||||
.artifactId("bld-pitest")
|
||||
.description("PIT Mutation Testing Extension for bld")
|
||||
.url("https://github.com/rife2/bld-pitest")
|
||||
.developer(new PublishDeveloper()
|
||||
.id("ethauvin")
|
||||
.name("Erik C. Thauvin")
|
||||
.email("erik@thauvin.net")
|
||||
.url("https://erik.thauvin.net/")
|
||||
.developer(
|
||||
new PublishDeveloper()
|
||||
.id("ethauvin")
|
||||
.name("Erik C. Thauvin")
|
||||
.email("erik@thauvin.net")
|
||||
.url("https://erik.thauvin.net/")
|
||||
)
|
||||
.license(new PublishLicense()
|
||||
.name("The Apache License, Version 2.0")
|
||||
.url("https://www.apache.org/licenses/LICENSE-2.0.txt")
|
||||
.license(
|
||||
new PublishLicense()
|
||||
.name("The Apache License, Version 2.0")
|
||||
.url("http://www.apache.org/licenses/LICENSE-2.0.txt")
|
||||
)
|
||||
.scm(new PublishScm()
|
||||
.connection("scm:git:https://github.com/rife2/bld-pitest.git")
|
||||
.developerConnection("scm:git:git@github.com:rife2/bld-pitest.git")
|
||||
.url("https://github.com/rife2/bld-pitest")
|
||||
.scm(
|
||||
new PublishScm()
|
||||
.connection("scm:git:https://github.com/rife2/bld-pitest.git")
|
||||
.developerConnection("scm:git:git@github.com:rife2/bld-pitest.git")
|
||||
.url("https://github.com/rife2/bld-pitest")
|
||||
)
|
||||
.signKey(property("sign.key"))
|
||||
.signPassphrase(property("sign.passphrase"));
|
||||
|
@ -99,51 +93,19 @@ public class PitestOperationBuild extends Project {
|
|||
new PitestOperationBuild().start(args);
|
||||
}
|
||||
|
||||
@BuildCommand(summary = "Generates JaCoCo Reports")
|
||||
public void jacoco() throws IOException {
|
||||
new JacocoReportOperation()
|
||||
.fromProject(this)
|
||||
.execute();
|
||||
}
|
||||
|
||||
@BuildCommand(summary = "Runs PMD analysis")
|
||||
public void pmd() throws Exception {
|
||||
pmdOp.execute();
|
||||
}
|
||||
|
||||
@BuildCommand(value = "pmd-cli", summary = "Runs PMD analysis (CLI)")
|
||||
public void pmdCli() throws Exception {
|
||||
pmdOp.includeLineNumber(false).execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void test() throws Exception {
|
||||
var os = System.getProperty("os.name");
|
||||
if (os != null && os.toLowerCase().contains("linux")) {
|
||||
new ExecOperation()
|
||||
.fromProject(this)
|
||||
.command("scripts/cliargs.sh")
|
||||
.execute();
|
||||
}
|
||||
|
||||
var testResultsDir = "build/test-results/test/";
|
||||
var op = testOperation().fromProject(this);
|
||||
op.testToolOptions().reportsDir(new File(testResultsDir));
|
||||
|
||||
Exception ex = null;
|
||||
try {
|
||||
op.execute();
|
||||
} catch (Exception e) {
|
||||
ex = e;
|
||||
}
|
||||
|
||||
var xunitViewer = new File("/usr/bin/xunit-viewer");
|
||||
if (xunitViewer.exists() && xunitViewer.canExecute()) {
|
||||
var reportsDir = "build/reports/tests/test/";
|
||||
|
||||
Files.createDirectories(Path.of(reportsDir));
|
||||
|
||||
new ExecOperation()
|
||||
.fromProject(this)
|
||||
.command(xunitViewer.getPath(), "-r", testResultsDir, "-o", reportsDir + "index.html")
|
||||
.execute();
|
||||
}
|
||||
|
||||
if (ex != null) {
|
||||
throw ex;
|
||||
}
|
||||
public void pmd() {
|
||||
new PmdOperation()
|
||||
.fromProject(this)
|
||||
.failOnViolation(true)
|
||||
.ruleSets("config/pmd.xml")
|
||||
.execute();
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
494
src/test/java/rife/bld/extension/PitestOperationTest.java
Normal file
494
src/test/java/rife/bld/extension/PitestOperationTest.java
Normal file
|
@ -0,0 +1,494 @@
|
|||
/*
|
||||
* Copyright 2023 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package rife.bld.extension;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import rife.bld.BaseProject;
|
||||
import rife.bld.Project;
|
||||
import rife.bld.WebProject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
import static rife.bld.extension.PitestOperation.*;
|
||||
|
||||
class PitestOperationTest {
|
||||
private static final String AS_LIST = "as list";
|
||||
private final static String BAR = "bar";
|
||||
private final static String FOO = "foo";
|
||||
private final static String FOOBAR = FOO + ',' + BAR;
|
||||
|
||||
@Test
|
||||
void argLine() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.argLine(FOO);
|
||||
assertThat(op.options.get("--argLine")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void avoidCallsTo() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.avoidCallsTo(FOO, BAR);
|
||||
assertThat(op.options.get("--avoidCallsTo")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.avoidCallsTo(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--avoidCallsTo")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void classPath() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.classPath(FOO, BAR);
|
||||
assertThat(op.options.get("--classPath")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.classPath(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--classPath")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void classPathFile() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.classPathFile(FOO);
|
||||
assertThat(op.options.get("--classPathFile")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void coverageThreshold() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.coverageThreshold(3);
|
||||
assertThat(op.options.get("--coverageThreshold")).isEqualTo("3");
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.coverageThreshold(101);
|
||||
assertThat(op.options.get("--coverageThreshold")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void detectInlinedCode() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.detectInlinedCode(true);
|
||||
assertThat(op.options.get("--detectInlinedCode")).isEqualTo(TRUE);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.detectInlinedCode(false);
|
||||
assertThat(op.options.get("--detectInlinedCode")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedClasses() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.excludedClasses(FOO, BAR);
|
||||
assertThat(op.options.get("--excludedClasses")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.excludedClasses(Set.of(FOO, BAR));
|
||||
assertThat(op.options.get("--excludedClasses")).as("as set").contains(FOO).contains(BAR).contains(",");
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedGroups() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.excludedGroups(FOO, BAR);
|
||||
assertThat(op.options.get("--excludedGroups")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.excludedGroups(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--excludedGroups")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedMethods() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.excludedMethods(FOO, BAR);
|
||||
assertThat(op.options.get("--excludedMethods")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.excludedMethods(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--excludedMethods")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedTests() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.excludedTests(FOO, BAR);
|
||||
assertThat(op.options.get("--excludedTests")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.excludedTests(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--excludedTests")).as("as list").isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void execute() throws IOException {
|
||||
var tmpDir = Files.createTempDirectory("bld-pitest");
|
||||
tmpDir.toFile().deleteOnExit();
|
||||
var op = new PitestOperation().
|
||||
fromProject(new WebProject())
|
||||
.reportDir(tmpDir.toAbsolutePath().toString())
|
||||
.targetClasses("com.example.*")
|
||||
.targetTests("com.example.*")
|
||||
.verbose(true)
|
||||
.failWhenNoMutations(false)
|
||||
.sourceDirs("examples/src");
|
||||
|
||||
assertThatCode(op::execute).doesNotThrowAnyException();
|
||||
assertThat(tmpDir).isEmptyDirectory();
|
||||
}
|
||||
|
||||
@Test
|
||||
void executeConstructProcessCommandList() {
|
||||
var op = new PitestOperation().
|
||||
fromProject(new WebProject())
|
||||
.reportDir("outputdir")
|
||||
.targetClasses("com.your.package.tobemutated*")
|
||||
.targetTests("com.your.package.*")
|
||||
.sourceDirs("parthsource");
|
||||
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).endsWith(
|
||||
" org.pitest.mutationtest.commandline.MutationCoverageReport " +
|
||||
"--targetTests com.your.package.* " +
|
||||
"--reportDir outputdir " +
|
||||
"--targetClasses com.your.package.tobemutated* " +
|
||||
"--sourceDirs parthsource");
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.reportDir("c:\\mutationReports")
|
||||
.targetClasses("example.foo.*")
|
||||
.sourceDirs("c:\\myProject\\src")
|
||||
.targetTests("example.foo*")
|
||||
.threads(2)
|
||||
.excludedMethods("hashcode", "equals");
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).as("mutationReports").endsWith(
|
||||
"org.pitest.mutationtest.commandline.MutationCoverageReport " +
|
||||
"--targetTests example.foo* " +
|
||||
"--threads 2 " +
|
||||
"--excludedMethods hashcode,equals " +
|
||||
"--reportDir c:\\mutationReports " +
|
||||
"--targetClasses example.foo.* " +
|
||||
"--sourceDirs c:\\myProject\\src");
|
||||
}
|
||||
|
||||
@Test
|
||||
void exportLineCoverage() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.exportLineCoverage(true);
|
||||
assertThat(op.options.get("--exportLineCoverage")).isEqualTo(TRUE);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.exportLineCoverage(false);
|
||||
assertThat(op.options.get("--exportLineCoverage")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void failWhenNoMutations() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.failWhenNoMutations(true);
|
||||
assertThat(op.options.get("--failWhenNoMutations")).isEqualTo(TRUE);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.failWhenNoMutations(false);
|
||||
assertThat(op.options.get("--failWhenNoMutations")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void features() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.features(FOO, BAR);
|
||||
assertThat(op.options.get("--features")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.features(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--features")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void historyInputLocation() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.historyInputLocation(FOO);
|
||||
assertThat(op.options.get("--historyInputLocation")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void historyOutputLocation() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.historyOutputLocation(FOO);
|
||||
assertThat(op.options.get("--historyOutputLocation")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void includeLaunchClasspath() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.includeLaunchClasspath(true);
|
||||
assertThat(op.options.get("--includeLaunchClasspath")).isEqualTo(TRUE);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.includeLaunchClasspath(false);
|
||||
assertThat(op.options.get("--includeLaunchClasspath")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void includedGroups() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.includedGroups(FOO, BAR);
|
||||
assertThat(op.options.get("--includedGroups")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.includedGroups(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--includedGroups")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void jvmArgs() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.jvmArgs(FOO, BAR);
|
||||
assertThat(op.options.get("--jvmArgs")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.jvmArgs(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--jvmArgs")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void jvmPath() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.jvmPath(FOO);
|
||||
assertThat(op.options.get("--jvmPath")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutableCodePaths() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.mutableCodePaths(FOO, BAR);
|
||||
assertThat(op.options.get("--mutableCodePaths")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.mutableCodePaths(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--mutableCodePaths")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutationThreshold() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.mutationThreshold(3);
|
||||
assertThat(op.options.get("--mutationThreshold")).isEqualTo("3");
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.mutationThreshold(101);
|
||||
assertThat(op.options.get("--mutationThreshold")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutators() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.mutators(FOO, BAR);
|
||||
assertThat(op.options.get("--mutators")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.mutators(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--mutators")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void outputEncoding() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.outputEncoding(FOO);
|
||||
assertThat(op.options.get("--outputEncoding")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void outputFormats() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.outputFormats(FOO, BAR);
|
||||
assertThat(op.options.get("--outputFormats")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.outputFormats(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--outputFormats")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void reportDir() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.reportDir(FOO);
|
||||
assertThat(op.options.get("--reportDir")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void skipFailingTests() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.skipFailingTests(true);
|
||||
assertThat(op.options.get("--skipFailingTests")).isEqualTo(TRUE);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.skipFailingTests(false);
|
||||
assertThat(op.options.get("--skipFailingTests")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void sourceDirs() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.sourceDirs(FOO, BAR);
|
||||
assertThat(op.options.get(SOURCE_DIRS)).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.sourceDirs(List.of(FOO, BAR));
|
||||
assertThat(op.options.get(SOURCE_DIRS)).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void targetClasses() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.targetClasses(FOO, BAR);
|
||||
assertThat(op.options.get("--targetClasses")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.targetClasses(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--targetClasses")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void targetTests() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.targetTests(FOO, BAR);
|
||||
assertThat(op.options.get("--targetTests")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.targetTests(List.of(FOO, BAR));
|
||||
assertThat(op.options.get("--targetTests")).as(AS_LIST).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void threads() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.threads(3);
|
||||
assertThat(op.options.get("--threads")).isEqualTo("3");
|
||||
}
|
||||
|
||||
@Test
|
||||
void timeoutConst() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.timeoutConst(300);
|
||||
assertThat(op.options.get("--timeoutConst")).isEqualTo("300");
|
||||
}
|
||||
|
||||
@Test
|
||||
void timeoutFactor() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.timeoutFactor(5.25);
|
||||
assertThat(op.options.get("--timeoutFactor")).isEqualTo("5.25");
|
||||
}
|
||||
|
||||
@Test
|
||||
void timestampedReports() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.timestampedReports(true);
|
||||
assertThat(op.options.get("--timestampedReports")).isEqualTo(TRUE);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.timestampedReports(false);
|
||||
assertThat(op.options.get("--timestampedReports")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void useClasspathJar() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.useClasspathJar(true);
|
||||
assertThat(op.options.get("--useClasspathJar")).isEqualTo(TRUE);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.useClasspathJar(false);
|
||||
assertThat(op.options.get("--useClasspathJar")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void verbose() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.verbose(true);
|
||||
assertThat(op.options.get("--verbose")).isEqualTo(TRUE);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.verbose(false);
|
||||
assertThat(op.options.get("--verbose")).isEqualTo(FALSE);
|
||||
}
|
||||
}
|
|
@ -1,982 +0,0 @@
|
|||
/*
|
||||
* Copyright 2023-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package rife.bld.extension;
|
||||
|
||||
import org.assertj.core.api.AutoCloseableSoftAssertions;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.condition.EnabledOnOs;
|
||||
import org.junit.jupiter.api.condition.OS;
|
||||
import rife.bld.BaseProject;
|
||||
import rife.bld.Project;
|
||||
import rife.bld.WebProject;
|
||||
import rife.bld.operations.exceptions.ExitStatusException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
import static rife.bld.extension.PitestOperation.FALSE;
|
||||
import static rife.bld.extension.PitestOperation.TRUE;
|
||||
|
||||
class PitestOperationTests {
|
||||
private static final String BAR = "bar";
|
||||
private static final File BAR_FILE = new File(BAR);
|
||||
private static final String FOO = "foo";
|
||||
private static final String FOOBAR = FOO + ',' + BAR;
|
||||
private static final File FOO_FILE = new File(FOO);
|
||||
private static final String FOOBAR_FORMAT =
|
||||
String.format("%s,%s", FOO_FILE.getAbsolutePath(), BAR_FILE.getAbsolutePath());
|
||||
|
||||
@Nested
|
||||
@DisplayName("Execute Tests")
|
||||
class ExecuteTests {
|
||||
@Test
|
||||
void execute() throws IOException {
|
||||
var tmpDir = Files.createTempDirectory("bld-pitest-");
|
||||
tmpDir.toFile().deleteOnExit();
|
||||
var op = new PitestOperation().
|
||||
fromProject(new WebProject())
|
||||
.reportDir(tmpDir.toAbsolutePath().toString())
|
||||
.targetClasses("com.example.*")
|
||||
.targetTests("com.example.*")
|
||||
.verbose(true)
|
||||
.failWhenNoMutations(false)
|
||||
.sourceDirs("examples/src");
|
||||
|
||||
assertThatCode(op::execute).doesNotThrowAnyException();
|
||||
assertThat(tmpDir).isEmptyDirectory();
|
||||
}
|
||||
|
||||
@Test
|
||||
void executeConstructProcessCommandList() {
|
||||
var op = new PitestOperation().
|
||||
fromProject(new WebProject())
|
||||
.reportDir("outputdir")
|
||||
.targetClasses("com.your.package.tobemutated*")
|
||||
.targetTests("com.your.package.*")
|
||||
.sourceDirs("parthsource");
|
||||
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).endsWith(
|
||||
" org.pitest.mutationtest.commandline.MutationCoverageReport " +
|
||||
"--targetTests com.your.package.* " +
|
||||
"--reportDir outputdir " +
|
||||
"--targetClasses com.your.package.tobemutated* " +
|
||||
"--sourceDirs parthsource");
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.reportDir("c:\\mutationReports")
|
||||
.targetClasses("example.foo.*")
|
||||
.sourceDirs("c:\\myProject\\src")
|
||||
.targetTests("example.foo*")
|
||||
.threads(2)
|
||||
.excludedMethods("hashcode", "equals");
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).endsWith(
|
||||
"org.pitest.mutationtest.commandline.MutationCoverageReport " +
|
||||
"--targetTests example.foo* " +
|
||||
"--threads 2 " +
|
||||
"--excludedMethods hashcode,equals " +
|
||||
"--reportDir c:\\mutationReports " +
|
||||
"--targetClasses example.foo.* " +
|
||||
"--sourceDirs c:\\myProject\\src");
|
||||
}
|
||||
|
||||
@Test
|
||||
void executeNoProject() {
|
||||
var op = new PitestOperation();
|
||||
assertThatCode(op::execute).isInstanceOf(ExitStatusException.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void exportLineCoverageIsFalse() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.exportLineCoverage(false);
|
||||
assertThat(op.options().get("--exportLineCoverage")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void exportLineCoverageIsTrue() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.exportLineCoverage(true);
|
||||
assertThat(op.options().get("--exportLineCoverage")).isEqualTo(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Options Tests")
|
||||
class OptionsTests {
|
||||
@Test
|
||||
void argLine() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.argLine(FOO);
|
||||
assertThat(op.options().get("--argLine")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void avoidCallsTo() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.avoidCallsTo(FOO, BAR);
|
||||
assertThat(op.options().get("--avoidCallsTo")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void avoidCallsToAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.avoidCallsTo(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--avoidCallsTo")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
@EnabledOnOs(OS.LINUX)
|
||||
void checkAllParameters() throws IOException {
|
||||
var args = Files.readAllLines(Paths.get("src", "test", "resources", "pitest-args.txt"));
|
||||
|
||||
assertThat(args).isNotEmpty();
|
||||
|
||||
var params = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.argLine(FOO)
|
||||
.avoidCallsTo(FOO, BAR)
|
||||
.classPath(FOO, BAR)
|
||||
.classPathFile(FOO)
|
||||
.coverageThreshold(0)
|
||||
.detectInlinedCode(false)
|
||||
.dryRun(false)
|
||||
.excludedClasses("class")
|
||||
.excludedClasses(List.of(FOO, BAR))
|
||||
.excludedGroups("group")
|
||||
.excludedGroups(List.of(FOO, BAR))
|
||||
.excludedMethods("method")
|
||||
.excludedMethods(List.of(FOO, BAR))
|
||||
.excludedRunners("runners")
|
||||
.excludedTestClasses("test")
|
||||
.exportLineCoverage(true)
|
||||
.failWhenNoMutations(true)
|
||||
.features("feature")
|
||||
.fullMutationMatrix(true)
|
||||
.historyInputLocation("inputLocation")
|
||||
.historyOutputLocation("outputLocation")
|
||||
.includeLaunchClasspath(true)
|
||||
.includedGroups("group")
|
||||
.includedTestMethods("method")
|
||||
.inputEncoding("encoding")
|
||||
.jvmArgs("-XX:+UnlogregckDiagnosticVMOptions")
|
||||
.jvmPath("path")
|
||||
.maxMutationsPerClass(3)
|
||||
.maxSurviving(1)
|
||||
.mutableCodePaths("codePaths")
|
||||
.mutationEngine("engine")
|
||||
.mutationThreshold(0)
|
||||
.mutationUnitSize(1)
|
||||
.mutators(List.of(FOO, BAR))
|
||||
.outputEncoding("encoding")
|
||||
.outputFormats("json")
|
||||
.pluginConfiguration("key", "value")
|
||||
.projectBase("base")
|
||||
.reportDir("dir")
|
||||
.skipFailingTests(true)
|
||||
.targetClasses("class")
|
||||
.targetTests("test")
|
||||
.testStrengthThreshold(0)
|
||||
.threads(0)
|
||||
.timeoutConst(0)
|
||||
.timeoutFactor(0)
|
||||
.timestampedReports(true)
|
||||
.useClasspathJar(true)
|
||||
.verbose(true)
|
||||
.verbosity("default")
|
||||
.executeConstructProcessCommandList();
|
||||
|
||||
try (var softly = new AutoCloseableSoftAssertions()) {
|
||||
for (var p : args) {
|
||||
var found = false;
|
||||
for (var a : params) {
|
||||
if (a.startsWith(p)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
softly.assertThat(found).as("%s not found", p).isTrue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void coverageThreshold() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.coverageThreshold(3);
|
||||
assertThat(op.options().get("--coverageThreshold")).isEqualTo("3");
|
||||
}
|
||||
|
||||
@Test
|
||||
void coverageThresholdOutOfBounds() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.coverageThreshold(101);
|
||||
assertThat(op.options().get("--coverageThreshold")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void coverageThresholdOutOfBoundsNegative() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.coverageThreshold(-1);
|
||||
assertThat(op.options().get("--coverageThreshold")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void detectInlinedCodeIsFalse() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.detectInlinedCode(false);
|
||||
assertThat(op.options().get("--detectInlinedCode")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void detectInlinedCodeIsTrue() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.detectInlinedCode(true);
|
||||
assertThat(op.options().get("--detectInlinedCode")).isEqualTo(TRUE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void features() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.features(FOO, BAR);
|
||||
assertThat(op.options().get("--features")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void featuresAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.features(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--features")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void inputEncoding() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.inputEncoding(FOO);
|
||||
assertThat(op.options().get("--inputEncoding")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void maxSurviving() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.maxSurviving(1);
|
||||
assertThat(op.options().get("--maxSurviving")).isEqualTo("1");
|
||||
}
|
||||
|
||||
@Test
|
||||
void pluginConfiguration() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.pluginConfiguration(FOO, BAR);
|
||||
assertThat(op.options().get("--pluginConfiguration")).isEqualTo(FOO + "=" + BAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void projectBase() {
|
||||
var op = new PitestOperation().projectBase(FOO);
|
||||
assertThat(op.options().get("--projectBase")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void projectBaseAsFile() {
|
||||
var op = new PitestOperation().projectBase(FOO_FILE);
|
||||
assertThat(op.options().get("--projectBase")).isEqualTo(FOO_FILE.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void projectBaseAsPath() {
|
||||
var op = new PitestOperation().projectBase(FOO_FILE.toPath());
|
||||
assertThat(op.options().get("--projectBase")).isEqualTo(FOO_FILE.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void skipFailingTestsIsFalse() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.skipFailingTests(false);
|
||||
assertThat(op.options().get("--skipFailingTests")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void skipFailingTestsIsTrue() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.skipFailingTests(true);
|
||||
assertThat(op.options().get("--skipFailingTests")).isEqualTo(TRUE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void strengthThreshold() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.testStrengthThreshold(6);
|
||||
assertThat(op.options().get("--testStrengthThreshold")).isEqualTo("6");
|
||||
}
|
||||
|
||||
@Test
|
||||
void threads() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.threads(3);
|
||||
assertThat(op.options().get("--threads")).isEqualTo("3");
|
||||
}
|
||||
|
||||
@Test
|
||||
void timestampedReportsIsFalse() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.timestampedReports(false);
|
||||
assertThat(op.options().get("--timestampedReports")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void timestampedReportsIsTrue() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.timestampedReports(true);
|
||||
assertThat(op.options().get("--timestampedReports")).isEqualTo(TRUE);
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("ClassPath Tests")
|
||||
class ClassPathTests {
|
||||
private static final String CLASS_PATH = "--classPath";
|
||||
|
||||
@Test
|
||||
void classPath() {
|
||||
var op = new PitestOperation().classPath(FOO_FILE.toPath(), BAR_FILE.toPath());
|
||||
assertThat(op.options().get(CLASS_PATH)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void classPathAsFile() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.classPathFile(FOO);
|
||||
assertThat(op.options().get("--classPathFile")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void classPathAsFileArray() {
|
||||
var op = new PitestOperation().classPath(FOO_FILE, BAR_FILE);
|
||||
assertThat(op.options().get(CLASS_PATH)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void classPathAsFileList() {
|
||||
var op = new PitestOperation().classPathFiles(List.of(FOO_FILE, BAR_FILE));
|
||||
assertThat(op.options().get(CLASS_PATH)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void classPathAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.classPath(List.of(FOO, BAR));
|
||||
assertThat(op.options().get(CLASS_PATH)).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void classPathAsStringList() {
|
||||
var op = new PitestOperation().classPathPaths(List.of(FOO_FILE.toPath(), BAR_FILE.toPath()));
|
||||
assertThat(op.options().get(CLASS_PATH)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void useClasspathJarIsFalse() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.useClasspathJar(false);
|
||||
assertThat(op.options().get("--useClasspathJar")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void useClasspathJarIsTrue() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.useClasspathJar(true);
|
||||
assertThat(op.options().get("--useClasspathJar")).isEqualTo(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Excluded Tests")
|
||||
class ExcludedTests {
|
||||
@Test
|
||||
void excludedClasses() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.excludedClasses(FOO, BAR);
|
||||
assertThat(op.options().get("--excludedClasses")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedClassesAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.excludedClasses(Set.of(FOO, BAR));
|
||||
assertThat(op.options().get("--excludedClasses")).contains(",");
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedGroups() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.excludedGroups(FOO, BAR);
|
||||
assertThat(op.options().get("--excludedGroups")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedGroupsAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.excludedGroups(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--excludedGroups")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedMethods() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.excludedMethods(FOO, BAR);
|
||||
assertThat(op.options().get("--excludedMethods")).isEqualTo(FOOBAR);
|
||||
|
||||
op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.excludedMethods(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--excludedMethods")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedRunners() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.excludedRunners(FOO);
|
||||
assertThat(op.options().get("--excludedRunners")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedTests() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.excludedTestClasses(FOO, BAR);
|
||||
assertThat(op.options().get("--excludedTestClasses")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedTestsAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.excludedTestClasses(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--excludedTestClasses")).isEqualTo(FOOBAR);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("History Location Tests")
|
||||
class HistoryLocationTests {
|
||||
private static final String historyInputLocation = "--historyInputLocation";
|
||||
private static final String historyOutputLocation = "--historyOutputLocation";
|
||||
private final PitestOperation op = new PitestOperation().fromProject(new WebProject());
|
||||
|
||||
@Test
|
||||
void historyInputLocationAsFile() {
|
||||
op.historyInputLocation(FOO_FILE);
|
||||
assertThat(op.options().get(historyInputLocation)).isEqualTo(FOO_FILE.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void historyInputLocationAsPath() {
|
||||
var op = new PitestOperation().historyInputLocation(FOO_FILE.toPath());
|
||||
assertThat(op.options().get(historyInputLocation)).isEqualTo(FOO_FILE.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void historyInputLocationAsString() {
|
||||
op.historyInputLocation(FOO);
|
||||
assertThat(op.options().get(historyInputLocation)).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void historyOutputLocationAsPath() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.historyOutputLocation(FOO_FILE.toPath());
|
||||
assertThat(op.options().get(historyOutputLocation)).isEqualTo(FOO_FILE.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void historyOutputLocationAsString() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.historyOutputLocation(FOO);
|
||||
assertThat(op.options().get(historyOutputLocation)).isEqualTo(FOO);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Include Test")
|
||||
class IncludeTest {
|
||||
@Test
|
||||
void includeLaunchClasspathIsFalse() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.includeLaunchClasspath(false);
|
||||
assertThat(op.options().get("--includeLaunchClasspath")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void includeLaunchClasspathIsTrue() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.includeLaunchClasspath(true);
|
||||
assertThat(op.options().get("--includeLaunchClasspath")).isEqualTo(TRUE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void includedGroups() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.includedGroups(FOO, BAR);
|
||||
assertThat(op.options().get("--includedGroups")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void includedGroupsAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.includedGroups(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--includedGroups")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void includedTestMethods() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.includedTestMethods(FOO);
|
||||
assertThat(op.options().get("--includedTestMethods")).isEqualTo(FOO);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("JVM Tests")
|
||||
class JvmTests {
|
||||
@Test
|
||||
void jvmArgs() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.jvmArgs(FOO, BAR);
|
||||
assertThat(op.options().get("--jvmArgs")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void jvmArgsAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.jvmArgs(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--jvmArgs")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void jvmPath() {
|
||||
var op = new PitestOperation().jvmPath(FOO);
|
||||
assertThat(op.options().get("--jvmPath")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void jvmPathAsFile() {
|
||||
var op = new PitestOperation().jvmPath(FOO_FILE);
|
||||
assertThat(op.options().get("--jvmPath")).isEqualTo(FOO_FILE.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void jvmPathAsPath() {
|
||||
var op = new PitestOperation().jvmPath(FOO_FILE.toPath());
|
||||
assertThat(op.options().get("--jvmPath")).isEqualTo(FOO_FILE.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Mutable Code Paths Tests")
|
||||
class MutableCodePathsTests {
|
||||
private static final String MUTABLE_CODE_PATHS = "--mutableCodePaths";
|
||||
|
||||
@Test
|
||||
void mutableCodePaths() {
|
||||
var op = new PitestOperation().mutableCodePaths(FOO, BAR);
|
||||
assertThat(op.options().get(MUTABLE_CODE_PATHS)).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutableCodePathsAsFileArray() {
|
||||
var op = new PitestOperation().mutableCodePaths(FOO_FILE, BAR_FILE);
|
||||
assertThat(op.options().get(MUTABLE_CODE_PATHS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutableCodePathsAsFileList() {
|
||||
var op = new PitestOperation().mutableCodePathsFiles(List.of(FOO_FILE, BAR_FILE));
|
||||
assertThat(op.options().get(MUTABLE_CODE_PATHS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutableCodePathsAsPathArray() {
|
||||
var op = new PitestOperation().mutableCodePaths(FOO_FILE.toPath(), BAR_FILE.toPath());
|
||||
assertThat(op.options().get(MUTABLE_CODE_PATHS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutableCodePathsAsPathList() {
|
||||
var op = new PitestOperation().mutableCodePathsPaths(List.of(FOO_FILE.toPath(), BAR_FILE.toPath()));
|
||||
assertThat(op.options().get(MUTABLE_CODE_PATHS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutableCodePathsAsStringList() {
|
||||
var op = new PitestOperation().mutableCodePaths(List.of(FOO, BAR));
|
||||
assertThat(op.options().get(MUTABLE_CODE_PATHS)).isEqualTo(FOOBAR);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Mutation Tests")
|
||||
class MutationTests {
|
||||
@Test
|
||||
void failWhenNoMutationsIsFalse() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.failWhenNoMutations(false);
|
||||
assertThat(op.options().get("--failWhenNoMutations")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void failWhenNoMutationsIsTrue() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.failWhenNoMutations(true);
|
||||
assertThat(op.options().get("--failWhenNoMutations")).isEqualTo(TRUE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void fullMutationMatrixIsFalse() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.fullMutationMatrix(false);
|
||||
assertThat(op.options().get("--fullMutationMatrix")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void fullMutationMatrixIsTrue() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.fullMutationMatrix(true);
|
||||
assertThat(op.options().get("--fullMutationMatrix")).isEqualTo(TRUE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void maxMutationsPerClass() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.maxMutationsPerClass(12);
|
||||
assertThat(op.options().get("--maxMutationsPerClass")).isEqualTo("12");
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutationEngine() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.mutationEngine(FOO);
|
||||
assertThat(op.options().get("--mutationEngine")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutationThreshold() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.mutationThreshold(3);
|
||||
assertThat(op.options().get("--mutationThreshold")).isEqualTo("3");
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutationThresholdOutOfBounds() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.mutationThreshold(101);
|
||||
assertThat(op.options().get("--mutationThreshold")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutationThresholdOutOfBoundsNegative() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.mutationThreshold(-1);
|
||||
assertThat(op.options().get("--mutationThreshold")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutationUnitSize() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.mutationUnitSize(2);
|
||||
assertThat(op.options().get("--mutationUnitSize")).isEqualTo("2");
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutators() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.mutators(FOO, BAR);
|
||||
assertThat(op.options().get("--mutators")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mutatorsAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.mutators(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--mutators")).isEqualTo(FOOBAR);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Output Tests")
|
||||
class OutputTests {
|
||||
private static final String OUTPUT_FORMATS = "--outputFormats";
|
||||
|
||||
@Test
|
||||
void outputEncoding() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.outputEncoding(FOO);
|
||||
assertThat(op.options().get("--outputEncoding")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Output Formats Tests")
|
||||
class OutputFormatsTests {
|
||||
@Test
|
||||
void outputFormats() {
|
||||
var op = new PitestOperation().outputFormats(FOO, BAR);
|
||||
assertThat(op.options().get(OUTPUT_FORMATS)).isEqualTo(FOO + ',' + BAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void outputFormatsAsFileArray() {
|
||||
var op = new PitestOperation().outputFormats(FOO_FILE, BAR_FILE);
|
||||
assertThat(op.options().get(OUTPUT_FORMATS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void outputFormatsAsFileList() {
|
||||
var op = new PitestOperation().outputFormatsFiles(List.of(FOO_FILE, BAR_FILE));
|
||||
assertThat(op.options().get(OUTPUT_FORMATS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void outputFormatsAsPathArray() {
|
||||
var op = new PitestOperation().outputFormats(FOO_FILE.toPath(), BAR_FILE.toPath());
|
||||
assertThat(op.options().get(OUTPUT_FORMATS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void outputFormatsAsPathList() {
|
||||
var op = new PitestOperation().outputFormatsPaths(List.of(FOO_FILE.toPath(), BAR_FILE.toPath()));
|
||||
assertThat(op.options().get(OUTPUT_FORMATS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void outputFormatsAsStringList() {
|
||||
var op = new PitestOperation().outputFormats(List.of(FOO, BAR));
|
||||
assertThat(op.options().get(OUTPUT_FORMATS)).isEqualTo(FOO + ',' + BAR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Report Tests")
|
||||
class ReportTests {
|
||||
private static final String REPORT_DIR = "--reportDir";
|
||||
|
||||
@Test
|
||||
void reportDirAsFile() {
|
||||
var op = new PitestOperation().reportDir(FOO_FILE);
|
||||
assertThat(op.options().get(REPORT_DIR)).isEqualTo(FOO_FILE.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void reportDirAsPath() {
|
||||
var op = new PitestOperation().reportDir(FOO_FILE.toPath());
|
||||
assertThat(op.options().get(REPORT_DIR)).isEqualTo(FOO_FILE.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void reportDirAsString() {
|
||||
var op = new PitestOperation().reportDir(FOO);
|
||||
assertThat(op.options().get(REPORT_DIR)).isEqualTo(FOO);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Source Directories Tests")
|
||||
class SourceDirectoriesTests {
|
||||
private static final String SOURCE_DIRS = "--sourceDirs";
|
||||
|
||||
@Test
|
||||
void sourceDirs() {
|
||||
var op = new PitestOperation().sourceDirs(FOO, BAR);
|
||||
assertThat(op.options().get(SOURCE_DIRS)).isEqualTo(FOO + ',' + BAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void sourceDirsAsFileArray() {
|
||||
var op = new PitestOperation().sourceDirs(FOO_FILE, BAR_FILE);
|
||||
assertThat(op.options().get(SOURCE_DIRS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void sourceDirsAsFileList() {
|
||||
var op = new PitestOperation().sourceDirsFiles(List.of(FOO_FILE, BAR_FILE));
|
||||
assertThat(op.options().get(SOURCE_DIRS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void sourceDirsAsPathArray() {
|
||||
var op = new PitestOperation().sourceDirs(FOO_FILE.toPath(), BAR_FILE.toPath());
|
||||
assertThat(op.options().get(SOURCE_DIRS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void sourceDirsAsPathList() {
|
||||
var op = new PitestOperation().sourceDirsPaths(List.of(FOO_FILE.toPath(), BAR_FILE.toPath()));
|
||||
assertThat(op.options().get(SOURCE_DIRS)).isEqualTo(FOOBAR_FORMAT);
|
||||
}
|
||||
|
||||
@Test
|
||||
void sourceDirsAsStringList() {
|
||||
var op = new PitestOperation().sourceDirs(List.of(FOO, BAR));
|
||||
assertThat(op.options().get(SOURCE_DIRS)).isEqualTo(FOO + ',' + BAR);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Target Tests")
|
||||
class TargetTests {
|
||||
@Test
|
||||
void targetClasses() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.targetClasses(FOO, BAR);
|
||||
assertThat(op.options().get("--targetClasses")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void targetClassesAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.targetClasses(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--targetClasses")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void targetTests() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.targetTests(FOO, BAR);
|
||||
assertThat(op.options().get("--targetTests")).isEqualTo(FOOBAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void targetTestsAsList() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.targetTests(List.of(FOO, BAR));
|
||||
assertThat(op.options().get("--targetTests")).isEqualTo(FOOBAR);
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Timeout Tests")
|
||||
class TimeoutTests {
|
||||
@Test
|
||||
void timeoutConst() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.timeoutConst(300);
|
||||
assertThat(op.options().get("--timeoutConst")).isEqualTo("300");
|
||||
}
|
||||
|
||||
@Test
|
||||
void timeoutFactor() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.timeoutFactor(5.25);
|
||||
assertThat(op.options().get("--timeoutFactor")).isEqualTo("5.25");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("Verbose Tests")
|
||||
class VerboseTests {
|
||||
@Test
|
||||
void verboseIsFalse() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.verbose(false);
|
||||
assertThat(op.options().get("--verbose")).isEqualTo(FALSE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void verboseIsTrue() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new BaseProject())
|
||||
.verbose(true);
|
||||
assertThat(op.options().get("--verbose")).isEqualTo(TRUE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void verbosity() {
|
||||
var op = new PitestOperation()
|
||||
.fromProject(new Project())
|
||||
.verbosity(FOO);
|
||||
assertThat(op.options().get("--verbosity")).isEqualTo(FOO);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
--argLine
|
||||
--avoidCallsTo
|
||||
--classPath
|
||||
--classPathFile
|
||||
--coverageThreshold
|
||||
--detectInlinedCode
|
||||
--dryRun
|
||||
--excludedClasses
|
||||
--excludedGroups
|
||||
--excludedMethods
|
||||
--excludedRunners
|
||||
--excludedTestClasses
|
||||
--exportLineCoverage
|
||||
--failWhenNoMutations
|
||||
--features
|
||||
--fullMutationMatrix
|
||||
--historyInputLocation
|
||||
--historyOutputLocation
|
||||
--includedGroups
|
||||
--includedTestMethods
|
||||
--includeLaunchClasspath
|
||||
--inputEncoding
|
||||
--jvmArgs
|
||||
--jvmPath
|
||||
--maxMutationsPerClass
|
||||
--maxSurviving
|
||||
--mutableCodePaths
|
||||
--mutationEngine
|
||||
--mutationThreshold
|
||||
--mutationUnitSize
|
||||
--mutators
|
||||
--outputEncoding
|
||||
--outputFormats
|
||||
--pluginConfiguration
|
||||
--projectBase
|
||||
--reportDir
|
||||
--skipFailingTests
|
||||
--sourceDirs
|
||||
--targetClasses
|
||||
--targetTests
|
||||
--testStrengthThreshold
|
||||
--threads
|
||||
--timeoutConst
|
||||
--timeoutFactor
|
||||
--timestampedReports
|
||||
--useClasspathJar
|
||||
--verbose
|
||||
--verbosity
|
Loading…
Add table
Add a link
Reference in a new issue