From e0dd60a632cbde8ea0c4b0185e5cbe48508eb7da Mon Sep 17 00:00:00 2001 From: Aditya B Date: Fri, 8 May 2026 21:58:40 +0530 Subject: [PATCH 1/2] include quack patch output directory as part of diagnostic zip --- .../detect/workflow/diagnostic/DiagnosticSystem.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/blackduck/integration/detect/workflow/diagnostic/DiagnosticSystem.java b/src/main/java/com/blackduck/integration/detect/workflow/diagnostic/DiagnosticSystem.java index 97bfb62b15..a1371b8559 100644 --- a/src/main/java/com/blackduck/integration/detect/workflow/diagnostic/DiagnosticSystem.java +++ b/src/main/java/com/blackduck/integration/detect/workflow/diagnostic/DiagnosticSystem.java @@ -12,7 +12,9 @@ import com.blackduck.integration.configuration.config.PropertyConfiguration; import com.blackduck.integration.detect.configuration.DetectInfo; +import com.blackduck.integration.detect.configuration.DetectProperties; import com.blackduck.integration.detect.workflow.DetectRunId; +import static com.blackduck.integration.detect.workflow.componentlocationanalysis.GenerateComponentLocationAnalysisOperation.QUACKPATCH_SUBDIRECTORY_NAME; import com.blackduck.integration.detect.workflow.event.EventSystem; import com.blackduck.integration.detect.workflow.file.DirectoryManager; @@ -136,6 +138,12 @@ public void appendBlackDuckServerProperties(Map serverProperties private boolean createZip() { List directoriesToCompress = new ArrayList<>(); directoriesToCompress.add(directoryManager.getRunHomeDirectory()); + // If quack patch is enabled, then add quack patch output directory to the zip + if (propertyConfiguration.getValueOrDefault(DetectProperties.DETECT_QUACK_PATCH_ENABLED)) { + String quackPatchOutputDir = propertyConfiguration.getValueOrDefault(DetectProperties.DETECT_QUACK_PATCH_OUTPUT).trim() + File.separator + QUACKPATCH_SUBDIRECTORY_NAME; + logger.info("Adding quack patch output dir {} to the diagnostic zip.", quackPatchOutputDir); + directoriesToCompress.add(new File(quackPatchOutputDir)); + } DiagnosticZipCreator zipper = new DiagnosticZipCreator(); return zipper.createDiagnosticZip(detectRunId.getRunId(), directoryManager.getRunsOutputDirectory(), directoriesToCompress); From 076ebf1503f4e30cf50024dd7cc4902c53a14b0b Mon Sep 17 00:00:00 2001 From: Aditya B Date: Thu, 14 May 2026 16:33:37 +0530 Subject: [PATCH 2/2] improvement --- .../DetectConfigurationFactory.java | 11 ++++++++- .../configuration/DetectProperties.java | 3 +-- .../DetectableOptionFactory.java | 7 +++++- .../DetectConfigurationBootManager.java | 5 +--- .../detect/lifecycle/boot/DetectBoot.java | 22 ++++++++---------- .../run/operation/OperationRunner.java | 9 +++----- .../detect/tool/detector/DetectorTool.java | 5 ++-- ...ateComponentLocationAnalysisOperation.java | 6 ++--- .../workflow/diagnostic/DiagnosticSystem.java | 23 ++++++++++++++----- .../workflow/report/DetectorToolTest.java | 2 +- 10 files changed, 53 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/blackduck/integration/detect/configuration/DetectConfigurationFactory.java b/src/main/java/com/blackduck/integration/detect/configuration/DetectConfigurationFactory.java index fc8b052f69..8cee0347e8 100644 --- a/src/main/java/com/blackduck/integration/detect/configuration/DetectConfigurationFactory.java +++ b/src/main/java/com/blackduck/integration/detect/configuration/DetectConfigurationFactory.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.regex.Pattern; @@ -58,13 +59,14 @@ import com.blackduck.integration.detect.workflow.bdio.BdioOptions; import com.blackduck.integration.detect.workflow.blackduck.BlackDuckPostOptions; import com.blackduck.integration.detect.workflow.blackduck.developer.RapidScanOptions; -import com.blackduck.integration.detect.workflow.blackduck.settings.DetectPropertiesSetting; import com.blackduck.integration.detect.workflow.blackduck.project.customfields.CustomFieldDocument; import com.blackduck.integration.detect.workflow.blackduck.project.options.FindCloneOptions; import com.blackduck.integration.detect.workflow.blackduck.project.options.ParentProjectMapOptions; import com.blackduck.integration.detect.workflow.blackduck.project.options.ProjectGroupOptions; import com.blackduck.integration.detect.workflow.blackduck.project.options.ProjectSyncOptions; import com.blackduck.integration.detect.workflow.blackduck.project.options.ProjectVersionLicenseOptions; +import com.blackduck.integration.detect.workflow.blackduck.settings.DetectPropertiesSetting; +import com.blackduck.integration.detect.workflow.file.DirectoryManager; import com.blackduck.integration.detect.workflow.file.DirectoryOptions; import com.blackduck.integration.detect.workflow.phonehome.PhoneHomeOptions; import com.blackduck.integration.detect.workflow.project.ProjectNameVersionOptions; @@ -679,4 +681,11 @@ public Optional getContainerScanFilePath() { return Optional.ofNullable(detectConfiguration.getNullableValue(DetectProperties.DETECT_CONTAINER_SCAN_FILE)); } + public String getQuackPatchOutputDirectory(DirectoryManager directoryManager) { + String quackPatchOutput = detectConfiguration.getValue(DetectProperties.DETECT_QUACK_PATCH_OUTPUT); + if (Objects.isNull(quackPatchOutput) || quackPatchOutput.isEmpty()) { + return directoryManager.getScanOutputDirectory().getAbsolutePath(); + } + return quackPatchOutput.trim(); + } } diff --git a/src/main/java/com/blackduck/integration/detect/configuration/DetectProperties.java b/src/main/java/com/blackduck/integration/detect/configuration/DetectProperties.java index dcd2c12719..f2790e66ae 100644 --- a/src/main/java/com/blackduck/integration/detect/configuration/DetectProperties.java +++ b/src/main/java/com/blackduck/integration/detect/configuration/DetectProperties.java @@ -1,7 +1,6 @@ package com.blackduck.integration.detect.configuration; import java.lang.reflect.Field; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -1148,7 +1147,7 @@ private DetectProperties() { .build(); public static final StringProperty DETECT_QUACK_PATCH_OUTPUT = - StringProperty.newBuilder("detect.quack.patch.output", Paths.get("").toAbsolutePath().toString()) + StringProperty.newBuilder("detect.quack.patch.output", "") .setInfo("Quack Patch Output Directory", DetectPropertyFromVersion.VERSION_11_4_0) .setHelp( "Specifies the output directory for Quack Patch results.", diff --git a/src/main/java/com/blackduck/integration/detect/configuration/DetectableOptionFactory.java b/src/main/java/com/blackduck/integration/detect/configuration/DetectableOptionFactory.java index 15f686ed78..f4dbc66a3d 100644 --- a/src/main/java/com/blackduck/integration/detect/configuration/DetectableOptionFactory.java +++ b/src/main/java/com/blackduck/integration/detect/configuration/DetectableOptionFactory.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.Set; +import com.blackduck.integration.detect.workflow.file.DirectoryManager; import org.jetbrains.annotations.Nullable; import static com.blackduck.integration.detect.workflow.componentlocationanalysis.GenerateComponentLocationAnalysisOperation.INVOKED_DETECTORS_AND_RELEVANT_FILES_JSON; @@ -356,7 +357,11 @@ public NugetInspectorOptions createNugetInspectorOptions() { Path nugetArtifactsPath = detectConfiguration.getPathOrNull(DetectProperties.DETECT_NUGET_ARTIFACTS_PATH); Path relevantDetectorsAndFilesInfoPath = null; if (detectConfiguration.getValue(DetectProperties.DETECT_QUACK_PATCH_ENABLED)) { - relevantDetectorsAndFilesInfoPath = Paths.get(detectConfiguration.getValue(DetectProperties.DETECT_QUACK_PATCH_OUTPUT).trim()) + String quackPatchOutputPath = detectConfiguration.getValue(DetectProperties.DETECT_QUACK_PATCH_OUTPUT); + if (quackPatchOutputPath.isEmpty()) { + quackPatchOutputPath = DirectoryManager.getScanDirectoryName(); + } + relevantDetectorsAndFilesInfoPath = Paths.get(quackPatchOutputPath) .resolve(QUACKPATCH_SUBDIRECTORY_NAME) .resolve(INVOKED_DETECTORS_AND_RELEVANT_FILES_JSON); } diff --git a/src/main/java/com/blackduck/integration/detect/configuration/validation/DetectConfigurationBootManager.java b/src/main/java/com/blackduck/integration/detect/configuration/validation/DetectConfigurationBootManager.java index f93f51af6f..08648fd9cc 100644 --- a/src/main/java/com/blackduck/integration/detect/configuration/validation/DetectConfigurationBootManager.java +++ b/src/main/java/com/blackduck/integration/detect/configuration/validation/DetectConfigurationBootManager.java @@ -20,7 +20,6 @@ import com.blackduck.integration.configuration.property.base.TypedProperty; import com.blackduck.integration.configuration.property.deprecation.DeprecatedValueUsage; import com.blackduck.integration.detect.configuration.DetectProperties; -import com.blackduck.integration.detect.configuration.DetectPropertyConfiguration; import com.blackduck.integration.detect.configuration.DetectUserFriendlyException; import com.blackduck.integration.detect.configuration.enumeration.ExitCodeType; import com.blackduck.integration.detect.workflow.event.EventSystem; @@ -108,9 +107,7 @@ public Optional validateForPropertyParseErrors() th } // Method to validate Quack Patch output path and return an Optional containing a DetectUserFriendlyException if the validation fails, or an empty Optional if it passes. - public Optional validateQuackPatchOutputPath(DetectPropertyConfiguration detectConfiguration) { - String quackPatchOutput = detectConfiguration.getValue(DetectProperties.DETECT_QUACK_PATCH_OUTPUT).trim(); - + public Optional validateQuackPatchOutputPath(String quackPatchOutput) { // Fail for empty string since that would cause issues later on when we try to write to it, and it's likely the user just forgot to set it if they enabled Quack Patch but left this blank. if (quackPatchOutput.isEmpty()) { return Optional.of(new DetectUserFriendlyException( diff --git a/src/main/java/com/blackduck/integration/detect/lifecycle/boot/DetectBoot.java b/src/main/java/com/blackduck/integration/detect/lifecycle/boot/DetectBoot.java index ff5c5267f0..271129e5ec 100644 --- a/src/main/java/com/blackduck/integration/detect/lifecycle/boot/DetectBoot.java +++ b/src/main/java/com/blackduck/integration/detect/lifecycle/boot/DetectBoot.java @@ -14,14 +14,11 @@ import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; -import java.util.Collections; -import java.util.LinkedHashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.blackduck.integration.configuration.config.MaskedRawValueResult; -import com.blackduck.integration.configuration.property.base.TypedProperty; import com.blackduck.integration.configuration.config.PropertyConfiguration; import com.blackduck.integration.configuration.property.base.TypedProperty; import com.blackduck.integration.configuration.property.types.enumallnone.list.AllEnumList; @@ -56,7 +53,6 @@ import com.blackduck.integration.detect.lifecycle.boot.product.ProductBoot; import com.blackduck.integration.detect.lifecycle.run.data.ProductRunData; import com.blackduck.integration.detect.lifecycle.run.singleton.BootSingletons; -import com.blackduck.integration.detect.workflow.blackduck.settings.DetectPropertiesSetting; import com.blackduck.integration.detect.tool.cache.InstalledToolLocator; import com.blackduck.integration.detect.tool.cache.InstalledToolManager; import com.blackduck.integration.detect.util.filter.DetectToolFilter; @@ -167,18 +163,20 @@ public Optional boot(String detectVersion, String detectBuildD Configuration freemarkerConfiguration = detectBootFactory.createFreemarkerConfiguration(); DetectPropertyConfiguration detectConfiguration = new DetectPropertyConfiguration(propertyConfiguration, new SimplePathResolver()); - // If quack patch is enabled, we need to validate the output path before doing anything else since it could cause Detect to fail later on if it's not valid, and we want to fail as early as possible with a clear message about what the issue is. - Optional quackPatchError = detectConfigurationBootManager.validateQuackPatchOutputPath(detectConfiguration); - if (quackPatchError.isPresent()) { - return Optional.of(DetectBootResult.exception(quackPatchError.get(), propertyConfiguration)); - } - DetectConfigurationFactory detectConfigurationFactory = new DetectConfigurationFactory(detectConfiguration, gson); - boolean autonomousScanEnabled = detectConfiguration.getValue(DetectProperties.DETECT_AUTONOMOUS_SCAN_ENABLED); - DirectoryManager directoryManager = detectBootFactory.createDirectoryManager(detectConfigurationFactory); + // If quack patch is enabled, we need to validate the output path before doing anything else since it could cause Detect to fail later on if it's not valid, and we want to fail as early as possible with a clear message about what the issue is. + if (Boolean.TRUE.equals(detectConfigurationFactory.isQuackPatchEnabled())) { + Optional quackPatchError = detectConfigurationBootManager.validateQuackPatchOutputPath(detectConfigurationFactory.getQuackPatchOutputDirectory(directoryManager)); + if (quackPatchError.isPresent()) { + return Optional.of(DetectBootResult.exception(quackPatchError.get(), propertyConfiguration)); + } + } + + boolean autonomousScanEnabled = detectConfiguration.getValue(DetectProperties.DETECT_AUTONOMOUS_SCAN_ENABLED); + // TODO Scan settings model obtained below is to be used by the delta-checking operations AutonomousManager autonomousManager = new AutonomousManager(directoryManager, detectConfiguration, autonomousScanEnabled, maskedRawPropertyValues); diff --git a/src/main/java/com/blackduck/integration/detect/lifecycle/run/operation/OperationRunner.java b/src/main/java/com/blackduck/integration/detect/lifecycle/run/operation/OperationRunner.java index f0b1447628..2b54004fe7 100644 --- a/src/main/java/com/blackduck/integration/detect/lifecycle/run/operation/OperationRunner.java +++ b/src/main/java/com/blackduck/integration/detect/lifecycle/run/operation/OperationRunner.java @@ -69,7 +69,6 @@ import com.blackduck.integration.componentlocator.beans.Component; import com.blackduck.integration.detect.configuration.DetectConfigurationFactory; import com.blackduck.integration.detect.configuration.DetectInfo; -import com.blackduck.integration.detect.configuration.DetectProperties; import com.blackduck.integration.detect.configuration.DetectUserFriendlyException; import com.blackduck.integration.detect.configuration.DetectorToolOptions; import com.blackduck.integration.detect.configuration.connection.ConnectionFactory; @@ -80,8 +79,6 @@ import com.blackduck.integration.detect.lifecycle.OperationException; import com.blackduck.integration.detect.lifecycle.autonomous.AutonomousManager; import com.blackduck.integration.detect.lifecycle.boot.decision.CorrelatedScanningDecision; -import com.blackduck.integration.detect.lifecycle.boot.decision.CorrelatedScanningDecision; -import com.blackduck.integration.detect.workflow.DetectRunId; import com.blackduck.integration.detect.lifecycle.run.DetectFontLoaderFactory; import com.blackduck.integration.detect.lifecycle.run.data.BlackDuckRunData; import com.blackduck.integration.detect.lifecycle.run.data.DockerTargetData; @@ -402,7 +399,7 @@ public final DetectorToolResult executeDetectors() throws OperationException { if (detectConfigurationFactory.isQuackPatchPossible()) { try { - detectorTool.saveExtractedDetectorsAndTheirRelevantFilePaths(toolResult); + detectorTool.saveExtractedDetectorsAndTheirRelevantFilePaths(toolResult, directoryManager); } catch (IOException e) { throw new RuntimeException("Something went wrong writing relevant files: " + e.getMessage()); } @@ -873,7 +870,7 @@ public final File generateFullRapidJsonFile(List scanResults) throws O return auditLog.namedPublic( "Generate Rapid Full Json File", "RapidScan", - () -> new RapidModeGenerateJsonOperation(htmlEscapeDisabledGson, directoryManager).generateJsonFileFromString(scanResults.get(0).getContentString(), detectConfigurationFactory.getDetectPropertyConfiguration().getValue(DetectProperties.DETECT_QUACK_PATCH_OUTPUT).trim()) + () -> new RapidModeGenerateJsonOperation(htmlEscapeDisabledGson, directoryManager).generateJsonFileFromString(scanResults.get(0).getContentString(), detectConfigurationFactory.getQuackPatchOutputDirectory(directoryManager)) ); } @@ -887,7 +884,7 @@ public void runQuackPatch(File rapidFullResultsJson) throws OperationException { () -> { publishResult( new GenerateComponentLocationAnalysisOperation(detectConfigurationFactory, statusEventPublisher, exitCodePublisher) - .runQuackPatch(rapidFullResultsJson, detectConfigurationFactory) + .runQuackPatch(rapidFullResultsJson, detectConfigurationFactory, detectConfigurationFactory.getQuackPatchOutputDirectory(directoryManager)) ); } ); diff --git a/src/main/java/com/blackduck/integration/detect/tool/detector/DetectorTool.java b/src/main/java/com/blackduck/integration/detect/tool/detector/DetectorTool.java index f62c7b004a..e848959c6c 100644 --- a/src/main/java/com/blackduck/integration/detect/tool/detector/DetectorTool.java +++ b/src/main/java/com/blackduck/integration/detect/tool/detector/DetectorTool.java @@ -23,7 +23,6 @@ import com.blackduck.integration.blackduck.bdio2.model.GitInfo; import com.blackduck.integration.common.util.finder.FileFinder; import com.blackduck.integration.detect.configuration.DetectConfigurationFactory; -import com.blackduck.integration.detect.configuration.DetectProperties; import com.blackduck.integration.detect.configuration.ExcludeIncludeEnumFilter; import com.blackduck.integration.detect.configuration.enumeration.ExitCodeType; import com.blackduck.integration.detect.lifecycle.shutdown.ExitCodePublisher; @@ -96,10 +95,10 @@ public DetectorTool( this.detectConfigurationFactory = detectConfigurationFactory; } - public void saveExtractedDetectorsAndTheirRelevantFilePaths(DetectorToolResult toolResult) throws IOException { + public void saveExtractedDetectorsAndTheirRelevantFilePaths(DetectorToolResult toolResult, DirectoryManager directoryManager) throws IOException { // Create map of extracted detectors and their relevant files Map> detectorsAndFiles = new HashMap<>(); - Path quackDir = Paths.get(detectConfigurationFactory.getDetectPropertyConfiguration().getValue(DetectProperties.DETECT_QUACK_PATCH_OUTPUT).trim(), QUACKPATCH_SUBDIRECTORY_NAME); + Path quackDir = Paths.get(detectConfigurationFactory.getQuackPatchOutputDirectory(directoryManager), QUACKPATCH_SUBDIRECTORY_NAME); ObjectMapper mapper = new ObjectMapper(); Path jsonFile = quackDir.resolve(INVOKED_DETECTORS_AND_RELEVANT_FILES_JSON); diff --git a/src/main/java/com/blackduck/integration/detect/workflow/componentlocationanalysis/GenerateComponentLocationAnalysisOperation.java b/src/main/java/com/blackduck/integration/detect/workflow/componentlocationanalysis/GenerateComponentLocationAnalysisOperation.java index aea3f1fedf..1a19d78b1b 100644 --- a/src/main/java/com/blackduck/integration/detect/workflow/componentlocationanalysis/GenerateComponentLocationAnalysisOperation.java +++ b/src/main/java/com/blackduck/integration/detect/workflow/componentlocationanalysis/GenerateComponentLocationAnalysisOperation.java @@ -85,15 +85,13 @@ public ComponentLocatorResult locateComponents(Set componentsSet, Fil return new ComponentLocatorResult(outputFilepath); } - public QuackPatchResult runQuackPatch(File rapidFullResultsFile, DetectConfigurationFactory configFactory) { + public QuackPatchResult runQuackPatch(File rapidFullResultsFile, DetectConfigurationFactory configFactory, String quackPatchOutputDir) { logger.info("Attempting Quack Patch."); - // if the detect.quack.patch.output property value set use that as output folder, otherwise default it to current working directory - String quackPatchOutputDir = configFactory.getDetectPropertyConfiguration().getValue(DetectProperties.DETECT_QUACK_PATCH_OUTPUT).trim(); logger.debug("Quack Patch output directory set to: {}", quackPatchOutputDir); Map> relevantDetectorsAndFiles = loadDetectorsAndFiles(quackPatchOutputDir + File.separator + QUACKPATCH_SUBDIRECTORY_NAME + File.separator + INVOKED_DETECTORS_AND_RELEVANT_FILES_JSON); String llmKey = configFactory.getDetectPropertyConfiguration().getValue(DetectProperties.DETECT_LLM_API_KEY); String llmName = configFactory.getDetectPropertyConfiguration().getValue(DetectProperties.DETECT_LLM_NAME); - String llmURL = configFactory.getDetectPropertyConfiguration().getValue(DetectProperties.DETECT_LLM_API_ENDPOINT); + String llmURL = configFactory.getDetectPropertyConfiguration().getValue(DetectProperties.DETECT_LLM_API_ENDPOINT); ComponentLocator.runQuackPatch(rapidFullResultsFile, relevantDetectorsAndFiles, llmKey, llmName, llmURL, quackPatchOutputDir); return new QuackPatchResult(getQuackPatchOutputDirectory(new File(quackPatchOutputDir))); } diff --git a/src/main/java/com/blackduck/integration/detect/workflow/diagnostic/DiagnosticSystem.java b/src/main/java/com/blackduck/integration/detect/workflow/diagnostic/DiagnosticSystem.java index a1371b8559..85520343ba 100644 --- a/src/main/java/com/blackduck/integration/detect/workflow/diagnostic/DiagnosticSystem.java +++ b/src/main/java/com/blackduck/integration/detect/workflow/diagnostic/DiagnosticSystem.java @@ -1,12 +1,14 @@ package com.blackduck.integration.detect.workflow.diagnostic; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.SortedMap; +import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -136,15 +138,24 @@ public void appendBlackDuckServerProperties(Map serverProperties } private boolean createZip() { - List directoriesToCompress = new ArrayList<>(); - directoriesToCompress.add(directoryManager.getRunHomeDirectory()); // If quack patch is enabled, then add quack patch output directory to the zip if (propertyConfiguration.getValueOrDefault(DetectProperties.DETECT_QUACK_PATCH_ENABLED)) { - String quackPatchOutputDir = propertyConfiguration.getValueOrDefault(DetectProperties.DETECT_QUACK_PATCH_OUTPUT).trim() + File.separator + QUACKPATCH_SUBDIRECTORY_NAME; - logger.info("Adding quack patch output dir {} to the diagnostic zip.", quackPatchOutputDir); - directoriesToCompress.add(new File(quackPatchOutputDir)); + String quackPatchOutputDirPath = propertyConfiguration.getValueOrDefault(DetectProperties.DETECT_QUACK_PATCH_OUTPUT); + // If quack patch output path is customized, then explicitly include it in the diagnostic zip. Otherwise, default behaviour will automatically pack it. + if (!quackPatchOutputDirPath.isEmpty()) { + quackPatchOutputDirPath = quackPatchOutputDirPath + File.separator + QUACKPATCH_SUBDIRECTORY_NAME; + logger.info("Adding quack patch output dir {} to the diagnostic zip.", quackPatchOutputDirPath); + // Copy directory quackPatchOutputDirPath to directoryManager.getRunsOutputDirectory() + try { + FileUtils.copyDirectory(new File(quackPatchOutputDirPath), new File(directoryManager.getScanOutputDirectory().getAbsolutePath() + File.separator + QUACKPATCH_SUBDIRECTORY_NAME)); + } catch (IOException e) { + logger.error("Failed to copy quack patch output directory to runs directory. Error: {}", e.getMessage()); + return false; + } + } } - + List directoriesToCompress = new ArrayList<>(); + directoriesToCompress.add(directoryManager.getRunHomeDirectory()); DiagnosticZipCreator zipper = new DiagnosticZipCreator(); return zipper.createDiagnosticZip(detectRunId.getRunId(), directoryManager.getRunsOutputDirectory(), directoriesToCompress); } diff --git a/src/test/java/com/blackduck/integration/detect/workflow/report/DetectorToolTest.java b/src/test/java/com/blackduck/integration/detect/workflow/report/DetectorToolTest.java index 830de8e066..94399bf579 100644 --- a/src/test/java/com/blackduck/integration/detect/workflow/report/DetectorToolTest.java +++ b/src/test/java/com/blackduck/integration/detect/workflow/report/DetectorToolTest.java @@ -82,7 +82,7 @@ void testSaveExtractedDetectorsAndTheirRelevantFilePaths_gradle() throws Excepti DetectConfigurationFactory detectConfigurationFactory = DetectConfigurationFactoryTestUtils.factoryOf(Pair.of(DetectProperties.DETECT_QUACK_PATCH_OUTPUT, tempDir.toString())); new DetectorTool(null, null, null, null, null, null, null, detectConfigurationFactory) - .saveExtractedDetectorsAndTheirRelevantFilePaths(toolResult); + .saveExtractedDetectorsAndTheirRelevantFilePaths(toolResult, directoryManager); File outputFile = new File( new File(detectConfigurationFactory.getDetectPropertyConfiguration().getValue(DetectProperties.DETECT_QUACK_PATCH_OUTPUT), QUACKPATCH_SUBDIRECTORY_NAME),