diff --git a/includes/generic/phpunit.inc.bash b/includes/generic/phpunit.inc.bash index 6f415c7..d051d34 100644 --- a/includes/generic/phpunit.inc.bash +++ b/includes/generic/phpunit.inc.bash @@ -36,10 +36,19 @@ do # phpunitFailedOnlyFiltered=1 # fi # fi - noCoverage=(" ") + extraConfigs=(" ") if [[ "1" != "$phpUnitCoverage" ]] then - noCoverage+=( --no-coverage ) + extraConfigs+=( --no-coverage ) + fi + if [[ "1" == "$phpUnitIterativeMode" ]] + then + echo + echo "Uniterate Mode - Iterative Testing with Fast Failure" + echo "----------------------------------------------------" + echo + extraConfigs+=( --order-by=depends,defects ) + extraConfigs+=( --stop-on-failure --stop-on-error --stop-on-defect --stop-on-warning ) fi set +e set -x @@ -48,7 +57,7 @@ do ${paratestConfig[@]} \ -c ${phpUnitConfigPath} \ ${rerunFilter[@]} \ - ${noCoverage[@]} \ + ${extraConfigs[@]} \ --enforce-time-limit \ --fail-on-risky \ --fail-on-warning \ diff --git a/includes/generic/setConfig.inc.bash b/includes/generic/setConfig.inc.bash index c9899b4..4f6f9e7 100644 --- a/includes/generic/setConfig.inc.bash +++ b/includes/generic/setConfig.inc.bash @@ -36,6 +36,9 @@ phpcsFailOnWarning=0 ##PHPUnit Configs +#Iterative Mode - prioritises runnign failed tests and stops on first error +phpUnitIterativeMode=${phpUnitIterativeMode:-0} + # PHPUnit Quick Tests - optional skip slow tests phpUnitQuickTests=${phpUnitQuickTests:-0} diff --git a/includes/options.inc.bash b/includes/options.inc.bash index 5474531..62be79a 100644 --- a/includes/options.inc.bash +++ b/includes/options.inc.bash @@ -28,6 +28,7 @@ function usage { echo " stan|phpstan phpstan" echo " ann|phpunitAnnotations phpunitAnnotations" echo " unit|phpunit phpunit" + echo " uniterate phpunit iterative mode - prioritise broken tests and fail on error" echo " infect|infection infection" echo " md|messdetector php mess detector" echo " ml|markdown markdown validation" @@ -63,6 +64,7 @@ then stan | phpstan ) singleToolToRun="phpstan";; ann | phpunitAnnotations ) singleToolToRun="phpunitAnnotations";; unit | phpunit ) singleToolToRun="phpunit";; + uniterate ) singleToolToRun="phpunit"; phpUnitIterativeMode=1;; infect | infection ) singleToolToRun="infection";; md | messdetector ) singleToolToRun="messDetector";; ml | markdown ) singleToolToRun="markdownLinks";;