in plugin-dotnet-agent/src/main/kotlin/jetbrains/buildServer/dotnet/commands/vstest/VSTestLoggerEnvironmentBuilder.kt [27:69]
override fun build(context: DotnetCommandContext): EnvironmentBuildResult {
val testReportingMode = _testReportingParameters.getMode(context)
LOG.debug("Test reporting mode: $testReportingMode")
if (testReportingMode.contains(TestReportingMode.Off)) {
return EnvironmentBuildResult()
}
if (testReportingMode.contains(TestReportingMode.MultiAdapterPath)) {
return EnvironmentBuildResult()
}
val targets = context.command.targetArguments.flatMap { it.arguments }.map { File(it.value) }.toList()
LOG.debug("Targets: ${targets.joinToString(", ") { it.name }}")
val checkoutDirectory = _pathsService.getPath(PathType.Checkout)
LOG.debug("Checkout directory: $checkoutDirectory")
val loggerDirectory = File(checkoutDirectory, "$directoryPrefix${_pathsService.uniqueName}")
LOG.debug("Logger directory: $loggerDirectory")
LOG.debug("Clean ...")
_environmentCleaner.clean()
LOG.debug("Analyze ...")
_environmentAnalyzer.analyze(targets)
val disposable = _loggerResolver.resolve(ToolType.VSTest).parentFile?.absoluteFile?.let {
try {
LOG.debug("Copy logger to \"$loggerDirectory\" from \"$it\"")
_fileSystemService.copy(it, loggerDirectory)
LOG.debug("Create \"$readmeFileName\" file in the directory \"$loggerDirectory\"")
_fileSystemService.write(File(loggerDirectory, readmeFileName)) {
OutputStreamWriter(it).use {
it.write(readmeFileContent)
}
}
} catch (ex: Exception) {
LOG.error(ex)
_loggerService.writeErrorOutput("Failed to create logger directory \"$loggerDirectory\"")
}
disposableOf { _fileSystemService.remove(loggerDirectory) }
} ?: emptyDisposable()
return EnvironmentBuildResult(disposable = disposable)
}