in plugin-dotnet-agent/src/main/kotlin/jetbrains/buildServer/dotcover/DotCoverWorkflowComposer.kt [30:69]
override fun compose(context: WorkflowContext, state: Unit, workflow: Workflow): Workflow {
if (_dotCoverSettings.dotCoverMode.isDisabled) {
return workflow
}
if (_dotCoverSettings.dotCoverHomePath.isNullOrBlank()) {
_loggerService.writeWarning("Skip code coverage: dotCover is enabled however tool home path has not been set")
return workflow
}
val baseCommandLineIterator = workflow.commandLines.iterator()
return sequence {
val executablePath = getDotCoverExecutablePath()
// cover applicable base command line
var dotCoverHomeOverriden = false
while (baseCommandLineIterator.hasNext()) {
val baseCommandLine = baseCommandLineIterator.next()
if (!baseCommandLine.chain.any { it.target == TargetType.Tool }) {
yield(baseCommandLine)
continue
}
cover(baseCommandLine, context, executablePath, onSuccess = {
if (!dotCoverHomeOverriden) {
overrideDotCoverHome()
dotCoverHomeOverriden = true
}
})
}
// fallback for backward compatibility
if (_dotCoverSettings.coveragePostProcessingEnabled) {
_loggerService.writeDebug(
"Coverage post-processing is enabled; " +
"the results will be processed before the build finishes"
)
return@sequence
}
}.let(::Workflow)
}