diff --git a/src/main/java/com/mathworks/ci/actions/MatlabAction.java b/src/main/java/com/mathworks/ci/actions/MatlabAction.java index 7dbbc5d17..4f8e0097d 100644 --- a/src/main/java/com/mathworks/ci/actions/MatlabAction.java +++ b/src/main/java/com/mathworks/ci/actions/MatlabAction.java @@ -1,7 +1,7 @@ package com.mathworks.ci.actions; /** - * Copyright 2024-2025, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import com.mathworks.ci.BuildArtifactAction; @@ -38,22 +38,25 @@ public MatlabAction(MatlabCommandRunner runner, BuildConsoleAnnotator annotator) this.annotator = annotator; } - public void copyBuildPluginsToTemp() throws IOException, InterruptedException { - // Copy BuildRunner plugins and override default plugins function + public void copyPluginsToTemp(boolean generateSummary) throws IOException, InterruptedException { if(this.annotator != null) { runner.copyFileToTempFolder(MatlabBuilderConstants.DEFAULT_PLUGIN, MatlabBuilderConstants.DEFAULT_PLUGIN); - runner.copyFileToTempFolder(MatlabBuilderConstants.BUILD_REPORT_PLUGIN, MatlabBuilderConstants.BUILD_REPORT_PLUGIN); - runner.copyFileToTempFolder(MatlabBuilderConstants.PAR_BUILD_REPORT_PLUGIN, MatlabBuilderConstants.PAR_BUILD_REPORT_PLUGIN); runner.copyFileToTempFolder(MatlabBuilderConstants.TASK_RUN_PROGRESS_PLUGIN, MatlabBuilderConstants.TASK_RUN_PROGRESS_PLUGIN); + + if (generateSummary) { + runner.copyFileToTempFolder(MatlabBuilderConstants.BUILD_REPORT_PLUGIN, MatlabBuilderConstants.BUILD_REPORT_PLUGIN); + runner.copyFileToTempFolder(MatlabBuilderConstants.PAR_BUILD_REPORT_PLUGIN, MatlabBuilderConstants.PAR_BUILD_REPORT_PLUGIN); + } } - // Copy TestRunner plugins and services - runner.copyFileToTempFolder(MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN, MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN); - runner.copyFileToTempFolder(MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN_SERVICE, MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN_SERVICE); + // Copy TestRunner plugins and services (only for summary generation) + if (generateSummary) { + runner.copyFileToTempFolder(MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN, MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN); + runner.copyFileToTempFolder(MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN_SERVICE, MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN_SERVICE); + } } - public void setBuildEnvVars() throws IOException, InterruptedException { - // Set environment variable + public void setBuildEnvVars(boolean generateSummary) throws IOException, InterruptedException { runner.addEnvironmentVariable( "MW_MATLAB_TEMP_FOLDER", runner.getTempFolder().toString()); @@ -63,16 +66,21 @@ public void setBuildEnvVars() throws IOException, InterruptedException { runner.addEnvironmentVariable( "MW_MATLAB_BUILDTOOL_DEFAULT_PLUGINS_FCN_OVERRIDE", "ciplugins.jenkins.getDefaultPlugins"); + runner.addEnvironmentVariable( + "MW_INPUT_GENERATE_SUMMARY", + String.valueOf(generateSummary)); } } public void teardownAction(MatlabActionParameters params) { - // Handle build result - if(this.annotator != null) { - moveBuildArtifactToBuildRoot(params); - } + if (params.getGenerateSummary()) { + // Handle build result + if (this.annotator != null) { + moveBuildArtifactToBuildRoot(params); + } - moveTestResultsToBuildRoot(params); + moveTestResultsToBuildRoot(params); + } try { this.runner.removeTempFolder(); diff --git a/src/main/java/com/mathworks/ci/actions/RunMatlabBuildAction.java b/src/main/java/com/mathworks/ci/actions/RunMatlabBuildAction.java index 5b3f71410..7394a50a0 100644 --- a/src/main/java/com/mathworks/ci/actions/RunMatlabBuildAction.java +++ b/src/main/java/com/mathworks/ci/actions/RunMatlabBuildAction.java @@ -1,7 +1,7 @@ package com.mathworks.ci.actions; /** - * Copyright 2024-25, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.IOException; @@ -29,8 +29,8 @@ public RunMatlabBuildAction(BuildActionParameters params) throws IOException, In } public void run() throws IOException, InterruptedException, MatlabExecutionException { - super.copyBuildPluginsToTemp(); - super.setBuildEnvVars(); + super.copyPluginsToTemp(this.params.getGenerateSummary()); + super.setBuildEnvVars(this.params.getGenerateSummary()); // Redirect output to the build annotator runner.redirectStdOut(annotator); diff --git a/src/main/java/com/mathworks/ci/actions/RunMatlabCommandAction.java b/src/main/java/com/mathworks/ci/actions/RunMatlabCommandAction.java index c87c0cb54..8780cf2b2 100644 --- a/src/main/java/com/mathworks/ci/actions/RunMatlabCommandAction.java +++ b/src/main/java/com/mathworks/ci/actions/RunMatlabCommandAction.java @@ -1,7 +1,7 @@ package com.mathworks.ci.actions; /** - * Copyright 2024-25, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.IOException; @@ -29,8 +29,8 @@ public RunMatlabCommandAction(CommandActionParameters params) throws IOException } public void run() throws IOException, InterruptedException, MatlabExecutionException { - super.copyBuildPluginsToTemp(); - super.setBuildEnvVars(); + super.copyPluginsToTemp(this.params.getGenerateSummary()); + super.setBuildEnvVars(this.params.getGenerateSummary()); // Redirect output to the build annotator runner.redirectStdOut(annotator); diff --git a/src/main/java/com/mathworks/ci/actions/RunMatlabTestsAction.java b/src/main/java/com/mathworks/ci/actions/RunMatlabTestsAction.java index acd4f6d00..92ca0902c 100644 --- a/src/main/java/com/mathworks/ci/actions/RunMatlabTestsAction.java +++ b/src/main/java/com/mathworks/ci/actions/RunMatlabTestsAction.java @@ -1,7 +1,7 @@ package com.mathworks.ci.actions; /** - * Copyright 2024-25, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.IOException; @@ -29,6 +29,10 @@ public RunMatlabTestsAction(TestActionParameters params) throws IOException, Int } public void run() throws IOException, InterruptedException, MatlabExecutionException { + // No annotator in this action, so only test related plugins are copied here + super.copyPluginsToTemp(this.params.getGenerateSummary()); + super.setBuildEnvVars(this.params.getGenerateSummary()); + // Copy in genscript FilePath genScriptZip = runner.copyFileToTempFolder( MatlabBuilderConstants.MATLAB_SCRIPT_GENERATOR, diff --git a/src/main/java/com/mathworks/ci/freestyle/RunMatlabBuildBuilder.java b/src/main/java/com/mathworks/ci/freestyle/RunMatlabBuildBuilder.java index 9b74f8137..a4a3da6bd 100644 --- a/src/main/java/com/mathworks/ci/freestyle/RunMatlabBuildBuilder.java +++ b/src/main/java/com/mathworks/ci/freestyle/RunMatlabBuildBuilder.java @@ -1,10 +1,11 @@ package com.mathworks.ci.freestyle; /** - * Copyright 2022-2024 The MathWorks, Inc. + * Copyright 2022-26 The MathWorks, Inc. */ import java.io.IOException; +import java.util.Optional; import javax.annotation.Nonnull; import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.DataBoundSetter; @@ -39,6 +40,7 @@ public class RunMatlabBuildBuilder extends Builder implements SimpleBuildStep { private String tasks; private StartupOptions startupOptions; private BuildOptions buildOptions; + private Boolean generateSummary; private MatlabActionFactory factory; @@ -67,6 +69,11 @@ public void setBuildOptions(BuildOptions buildOptions) { this.buildOptions = buildOptions; } + @DataBoundSetter + public void setGenerateSummary(Boolean generateSummary) { + this.generateSummary = generateSummary; + } + public String getTasks() { return this.tasks; } @@ -91,6 +98,10 @@ public String getBuildOptionsAsString() { : this.buildOptions.getOptions(); } + public boolean getGenerateSummary() { + return this.generateSummary == null || this.generateSummary; + } + @Extension public static class RunMatlabBuildDescriptor extends BuildStepDescriptor { @@ -139,7 +150,8 @@ public void perform(@Nonnull Run build, @Nonnull FilePath workspace, build, workspace, env, launcher, listener, this.getStartupOptionsAsString(), this.getTasks(), - this.getBuildOptionsAsString()); + this.getBuildOptionsAsString(), + this.getGenerateSummary()); RunMatlabBuildAction action = factory.createAction(params); try { @@ -152,6 +164,8 @@ public void perform(@Nonnull Run build, @Nonnull FilePath workspace, // Added for backwards compatibility: // Called when object is loaded from persistent data. protected Object readResolve() { + this.generateSummary = Optional.ofNullable(this.generateSummary).orElse(true); + if (factory == null) { factory = new MatlabActionFactory(); } diff --git a/src/main/java/com/mathworks/ci/freestyle/RunMatlabCommandBuilder.java b/src/main/java/com/mathworks/ci/freestyle/RunMatlabCommandBuilder.java index 3a0c6346d..f31dfa7a6 100644 --- a/src/main/java/com/mathworks/ci/freestyle/RunMatlabCommandBuilder.java +++ b/src/main/java/com/mathworks/ci/freestyle/RunMatlabCommandBuilder.java @@ -1,13 +1,14 @@ package com.mathworks.ci.freestyle; /** - * Copyright 2019-2024 The MathWorks, Inc. + * Copyright 2019-26 The MathWorks, Inc. * * Script builder used to run custom MATLAB commands or scripts. */ import hudson.util.FormValidation; import java.io.IOException; +import java.util.Optional; import javax.annotation.Nonnull; import jenkins.model.Jenkins; import org.kohsuke.stapler.DataBoundConstructor; @@ -44,6 +45,7 @@ public class RunMatlabCommandBuilder extends Builder implements SimpleBuildStep // In use private String matlabCommand; private StartupOptions startupOptions; + private Boolean generateSummary; private MatlabActionFactory factory; @@ -67,6 +69,11 @@ public void setStartupOptions(StartupOptions startupOptions) { this.startupOptions = startupOptions; } + @DataBoundSetter + public void setGenerateSummary(Boolean generateSummary) { + this.generateSummary = generateSummary; + } + public String getMatlabCommand() { return this.matlabCommand; } @@ -81,6 +88,10 @@ public String getStartupOptionsAsString() { : this.startupOptions.getOptions(); } + public boolean getGenerateSummary() { + return this.generateSummary == null || this.generateSummary; + } + @Extension public static class RunMatlabCommandDescriptor extends BuildStepDescriptor { @@ -139,7 +150,8 @@ public void perform(@Nonnull Run build, @Nonnull FilePath workspace, build, workspace, env, launcher, listener, getStartupOptionsAsString(), - getMatlabCommand()); + getMatlabCommand(), + getGenerateSummary()); RunMatlabCommandAction action = factory.createAction(params); try { @@ -152,6 +164,8 @@ public void perform(@Nonnull Run build, @Nonnull FilePath workspace, // Added for backwards compatibility: // Called when object is loaded from persistent data. protected Object readResolve() { + this.generateSummary = Optional.ofNullable(this.generateSummary).orElse(true); + if (factory == null) { factory = new MatlabActionFactory(); } diff --git a/src/main/java/com/mathworks/ci/freestyle/RunMatlabTestsBuilder.java b/src/main/java/com/mathworks/ci/freestyle/RunMatlabTestsBuilder.java index 901d816a2..1eb5e3227 100644 --- a/src/main/java/com/mathworks/ci/freestyle/RunMatlabTestsBuilder.java +++ b/src/main/java/com/mathworks/ci/freestyle/RunMatlabTestsBuilder.java @@ -1,7 +1,7 @@ package com.mathworks.ci.freestyle; /** - * Copyright 2019-2024 The MathWorks, Inc. + * Copyright 2019-26 The MathWorks, Inc. * * MATLAB test run builder used to run all MATLAB & Simulink tests automatically and generate * selected test artifacts. @@ -73,6 +73,7 @@ public class RunMatlabTestsBuilder extends Builder implements SimpleBuildStep { private String outputDetail = "default"; private boolean useParallel = false; private boolean strict = false; + private Boolean generateSummary; private MatlabActionFactory factory; @@ -172,6 +173,11 @@ public void setStrict(boolean strict) { this.strict = strict; } + @DataBoundSetter + public void setGenerateSummary(Boolean generateSummary) { + this.generateSummary = generateSummary; + } + public String getTapReportFilePath() { return this.getTapArtifact().getFilePath(); } @@ -297,6 +303,10 @@ public boolean getUseParallel() { return this.useParallel; } + public boolean getGenerateSummary() { + return this.generateSummary == null || this.generateSummary; + } + public StartupOptions getStartupOptions() { return this.startupOptions; } @@ -346,6 +356,8 @@ protected Object readResolve() { .orElseGet(() -> this.getArtifactObject(htmlModelCoverageChkBx, new HtmlModelCoverageArtifact("matlabTestArtifacts/htmlmodelcoverage"))); + this.generateSummary = Optional.ofNullable(this.generateSummary).orElse(true); + if (factory == null) { factory = new MatlabActionFactory(); } @@ -469,6 +481,7 @@ public void perform(@Nonnull Run build, @Nonnull FilePath workspace, this.getOutputDetail(), this.getUseParallel(), this.getStrict(), + this.getGenerateSummary(), this.getSourceFolderPaths(), this.getSelectByFolderPaths()); RunMatlabTestsAction action = factory.createAction(params); diff --git a/src/main/java/com/mathworks/ci/parameters/BuildActionParameters.java b/src/main/java/com/mathworks/ci/parameters/BuildActionParameters.java index 437755c11..ceecce9aa 100644 --- a/src/main/java/com/mathworks/ci/parameters/BuildActionParameters.java +++ b/src/main/java/com/mathworks/ci/parameters/BuildActionParameters.java @@ -1,7 +1,7 @@ package com.mathworks.ci.parameters; /** - * Copyright 2024 The MathWorks, Inc. + * Copyright 2024-26 The MathWorks, Inc. */ import java.io.IOException; @@ -16,16 +16,17 @@ public class BuildActionParameters extends MatlabActionParameters { private String tasks; private String buildOptions; - public BuildActionParameters(StepContext context, String startupOpts, String tasks, String buildOpts) - throws IOException, InterruptedException { - super(context, startupOpts); + public BuildActionParameters(StepContext context, String startupOpts, String tasks, String buildOpts, + boolean generateSummary) throws IOException, InterruptedException { + super(context, startupOpts, generateSummary); this.tasks = tasks; this.buildOptions = buildOpts; } public BuildActionParameters(Run build, FilePath workspace, EnvVars env, Launcher launcher, - TaskListener listener, String startupOpts, String tasks, String buildOptions) { - super(build, workspace, env, launcher, listener, startupOpts); + TaskListener listener, String startupOpts, String tasks, String buildOptions, + boolean generateSummary) { + super(build, workspace, env, launcher, listener, startupOpts, generateSummary); this.tasks = tasks; this.buildOptions = buildOptions; } diff --git a/src/main/java/com/mathworks/ci/parameters/CommandActionParameters.java b/src/main/java/com/mathworks/ci/parameters/CommandActionParameters.java index d8247a725..a1843de53 100644 --- a/src/main/java/com/mathworks/ci/parameters/CommandActionParameters.java +++ b/src/main/java/com/mathworks/ci/parameters/CommandActionParameters.java @@ -1,7 +1,7 @@ package com.mathworks.ci.parameters; /** - * Copyright 2024 The MathWorks, Inc. + * Copyright 2024-26 The MathWorks, Inc. */ import java.io.IOException; @@ -15,15 +15,15 @@ public class CommandActionParameters extends MatlabActionParameters { private String command; - public CommandActionParameters(StepContext context, String startupOpts, String command) - throws IOException, InterruptedException { - super(context, startupOpts); + public CommandActionParameters(StepContext context, String startupOpts, String command, + boolean generateSummary) throws IOException, InterruptedException { + super(context, startupOpts, generateSummary); this.command = command; } public CommandActionParameters(Run build, FilePath workspace, EnvVars env, Launcher launcher, - TaskListener listener, String startupOpts, String command) { - super(build, workspace, env, launcher, listener, startupOpts); + TaskListener listener, String startupOpts, String command, boolean generateSummary) { + super(build, workspace, env, launcher, listener, startupOpts, generateSummary); this.command = command; } diff --git a/src/main/java/com/mathworks/ci/parameters/MatlabActionParameters.java b/src/main/java/com/mathworks/ci/parameters/MatlabActionParameters.java index e62de8271..0b51af6f2 100644 --- a/src/main/java/com/mathworks/ci/parameters/MatlabActionParameters.java +++ b/src/main/java/com/mathworks/ci/parameters/MatlabActionParameters.java @@ -1,7 +1,7 @@ package com.mathworks.ci.parameters; /** - * Copyright 2024 The MathWorks, Inc. + * Copyright 2024-26 The MathWorks, Inc. */ import java.io.IOException; @@ -20,24 +20,28 @@ public class MatlabActionParameters { private TaskListener listener; private String startupOptions; + private boolean generateSummary; - public MatlabActionParameters(StepContext context, String startupOpts) throws IOException, InterruptedException { + public MatlabActionParameters(StepContext context, String startupOpts, boolean generateSummary) + throws IOException, InterruptedException { this.build = context.get(Run.class); this.workspace = context.get(FilePath.class); this.env = context.get(EnvVars.class); this.launcher = context.get(Launcher.class); this.listener = context.get(TaskListener.class); this.startupOptions = startupOpts; + this.generateSummary = generateSummary; } public MatlabActionParameters(Run build, FilePath workspace, EnvVars env, Launcher launcher, TaskListener listener, - String startupOpts) { + String startupOpts, boolean generateSummary) { this.build = build; this.workspace = workspace; this.env = env; this.launcher = launcher; this.listener = listener; this.startupOptions = startupOpts; + this.generateSummary = generateSummary; } public Run getBuild() { @@ -63,4 +67,8 @@ public TaskListener getTaskListener() { public String getStartupOptions() { return startupOptions; } + + public boolean getGenerateSummary() { + return generateSummary; + } } diff --git a/src/main/java/com/mathworks/ci/parameters/TestActionParameters.java b/src/main/java/com/mathworks/ci/parameters/TestActionParameters.java index 7b92a214b..2e09d7aad 100644 --- a/src/main/java/com/mathworks/ci/parameters/TestActionParameters.java +++ b/src/main/java/com/mathworks/ci/parameters/TestActionParameters.java @@ -1,7 +1,7 @@ package com.mathworks.ci.parameters; /** - * Copyright 2024 The MathWorks, Inc. + * Copyright 2024-26 The MathWorks, Inc. */ import java.util.List; @@ -36,10 +36,10 @@ public TestActionParameters(StepContext context, String startupOpts, String testResultsPDF, String testResultsHTML, String testResultsTAP, String testResultsJUnit, String codeCoverageCobertura, String codeCoverageHTML, String testResultsSimulinkTest, String modelCoverageCobertura, String modelCoverageHTML, String selectByTag, String loggingLevel, String outputDetail, - boolean useParallel, boolean strict, List sourceFolder, - List selectByFolder) + boolean useParallel, boolean strict, boolean generateSummary, + List sourceFolder, List selectByFolder) throws IOException, InterruptedException { - super(context, startupOpts); + super(context, startupOpts, generateSummary); this.testResultsPDF = testResultsPDF; this.testResultsHTML = testResultsHTML; this.testResultsTAP = testResultsTAP; @@ -63,9 +63,9 @@ public TestActionParameters(Run build, FilePath workspace, EnvVars env, La String testResultsPDF, String testResultsHTML, String testResultsTAP, String testResultsJUnit, String codeCoverageCobertura, String codeCoverageHTML, String testResultsSimulinkTest, String modelCoverageCobertura, String modelCoverageHTML, String selectByTag, String loggingLevel, String outputDetail, - boolean useParallel, boolean strict, List sourceFolder, - List selectByFolder) { - super(build, workspace, env, launcher, listener, startupOpts); + boolean useParallel, boolean strict, boolean generateSummary, + List sourceFolder, List selectByFolder) { + super(build, workspace, env, launcher, listener, startupOpts, generateSummary); this.testResultsPDF = testResultsPDF; this.testResultsHTML = testResultsHTML; this.testResultsTAP = testResultsTAP; diff --git a/src/main/java/com/mathworks/ci/pipeline/MatlabBuildStepExecution.java b/src/main/java/com/mathworks/ci/pipeline/MatlabBuildStepExecution.java index 20616dc29..53d93cfa6 100644 --- a/src/main/java/com/mathworks/ci/pipeline/MatlabBuildStepExecution.java +++ b/src/main/java/com/mathworks/ci/pipeline/MatlabBuildStepExecution.java @@ -1,7 +1,7 @@ package com.mathworks.ci.pipeline; /** - * Copyright 2022-2024 The MathWorks, Inc. + * Copyright 2022-26 The MathWorks, Inc. */ import java.io.IOException; @@ -39,7 +39,8 @@ public Void run() throws Exception { getContext(), step.getStartupOptions(), step.getTasks(), - step.getBuildOptions()); + step.getBuildOptions(), + step.getGenerateSummary()); RunMatlabBuildAction action = factory.createAction(params); try { diff --git a/src/main/java/com/mathworks/ci/pipeline/MatlabCommandStepExecution.java b/src/main/java/com/mathworks/ci/pipeline/MatlabCommandStepExecution.java index 8ba26e63c..4d023a470 100644 --- a/src/main/java/com/mathworks/ci/pipeline/MatlabCommandStepExecution.java +++ b/src/main/java/com/mathworks/ci/pipeline/MatlabCommandStepExecution.java @@ -1,7 +1,7 @@ package com.mathworks.ci.pipeline; /** - * Copyright 2023-2024 The MathWorks, Inc. + * Copyright 2023-26 The MathWorks, Inc. */ import java.io.IOException; @@ -38,7 +38,8 @@ public Void run() throws Exception { CommandActionParameters params = new CommandActionParameters( getContext(), step.getStartupOptions(), - step.getCommand()); + step.getCommand(), + step.getGenerateSummary()); RunMatlabCommandAction action = factory.createAction(params); try { diff --git a/src/main/java/com/mathworks/ci/pipeline/MatlabRunTestsStepExecution.java b/src/main/java/com/mathworks/ci/pipeline/MatlabRunTestsStepExecution.java index b3f215676..8a074e477 100644 --- a/src/main/java/com/mathworks/ci/pipeline/MatlabRunTestsStepExecution.java +++ b/src/main/java/com/mathworks/ci/pipeline/MatlabRunTestsStepExecution.java @@ -1,7 +1,7 @@ package com.mathworks.ci.pipeline; /** - * Copyright 2020-2024 The MathWorks, Inc. + * Copyright 2020-26 The MathWorks, Inc. */ import java.io.IOException; @@ -54,6 +54,7 @@ public Void run() throws Exception { step.getOutputDetail(), step.getUseParallel(), step.getStrict(), + step.getGenerateSummary(), step.getSourceFolder(), step.getSelectByFolder()); RunMatlabTestsAction action = factory.createAction(params); diff --git a/src/main/java/com/mathworks/ci/pipeline/RunMatlabBuildStep.java b/src/main/java/com/mathworks/ci/pipeline/RunMatlabBuildStep.java index 7608a356a..4a2a7b49f 100644 --- a/src/main/java/com/mathworks/ci/pipeline/RunMatlabBuildStep.java +++ b/src/main/java/com/mathworks/ci/pipeline/RunMatlabBuildStep.java @@ -1,7 +1,7 @@ package com.mathworks.ci.pipeline; /** - * Copyright 2022-2024 The MathWorks, Inc. + * Copyright 2022-26 The MathWorks, Inc. */ import java.io.Serializable; @@ -30,6 +30,7 @@ public class RunMatlabBuildStep extends Step implements Serializable { private String tasks; private String startupOptions; private String buildOptions; + private boolean generateSummary = true; @DataBoundConstructor public RunMatlabBuildStep() { @@ -48,6 +49,10 @@ public String getBuildOptions() { return Util.fixNull(buildOptions); } + public boolean getGenerateSummary() { + return generateSummary; + } + @DataBoundSetter public void setTasks(String tasks) { this.tasks = tasks; @@ -63,6 +68,11 @@ public void setBuildOptions(String buildOptions) { this.buildOptions = buildOptions; } + @DataBoundSetter + public void setGenerateSummary(boolean generateSummary) { + this.generateSummary = generateSummary; + } + @Override public StepExecution start(StepContext context) throws Exception { return new MatlabBuildStepExecution(context, this); diff --git a/src/main/java/com/mathworks/ci/pipeline/RunMatlabCommandStep.java b/src/main/java/com/mathworks/ci/pipeline/RunMatlabCommandStep.java index 45469d139..3255ad485 100644 --- a/src/main/java/com/mathworks/ci/pipeline/RunMatlabCommandStep.java +++ b/src/main/java/com/mathworks/ci/pipeline/RunMatlabCommandStep.java @@ -1,7 +1,7 @@ package com.mathworks.ci.pipeline; /** - * Copyright 2020-2024 The MathWorks, Inc. + * Copyright 2020-26 The MathWorks, Inc. */ import java.io.Serializable; @@ -29,6 +29,7 @@ public class RunMatlabCommandStep extends Step implements Serializable { private String command; private String startupOptions = ""; + private boolean generateSummary = true; @DataBoundConstructor public RunMatlabCommandStep(String command) { @@ -48,6 +49,15 @@ public String getStartupOptions() { return Util.fixNull(this.startupOptions); } + @DataBoundSetter + public void setGenerateSummary(boolean generateSummary) { + this.generateSummary = generateSummary; + } + + public boolean getGenerateSummary() { + return generateSummary; + } + @Override public StepExecution start(StepContext context) throws Exception { return new MatlabCommandStepExecution(context, this); diff --git a/src/main/java/com/mathworks/ci/pipeline/RunMatlabTestsStep.java b/src/main/java/com/mathworks/ci/pipeline/RunMatlabTestsStep.java index c7c1c3592..0627bec8a 100644 --- a/src/main/java/com/mathworks/ci/pipeline/RunMatlabTestsStep.java +++ b/src/main/java/com/mathworks/ci/pipeline/RunMatlabTestsStep.java @@ -1,7 +1,7 @@ package com.mathworks.ci.pipeline; /** - * Copyright 2020-2024 The MathWorks, Inc. + * Copyright 2020-26 The MathWorks, Inc. */ import java.io.Serializable; @@ -46,6 +46,7 @@ public class RunMatlabTestsStep extends Step implements Serializable { private List selectByFolder; private String startupOptions; + private boolean generateSummary = true; @DataBoundConstructor public RunMatlabTestsStep() { @@ -205,6 +206,15 @@ public void setStartupOptions(String startupOptions) { this.startupOptions = startupOptions; } + public boolean getGenerateSummary() { + return generateSummary; + } + + @DataBoundSetter + public void setGenerateSummary(boolean generateSummary) { + this.generateSummary = generateSummary; + } + @Override public StepExecution start(StepContext context) throws Exception { return new MatlabRunTestsStepExecution(context, this); diff --git a/src/main/resources/+ciplugins/+jenkins/getDefaultPlugins.m b/src/main/resources/+ciplugins/+jenkins/getDefaultPlugins.m index e6593c1c8..163a3bbee 100644 --- a/src/main/resources/+ciplugins/+jenkins/getDefaultPlugins.m +++ b/src/main/resources/+ciplugins/+jenkins/getDefaultPlugins.m @@ -1,20 +1,22 @@ function plugins = getDefaultPlugins(pluginProviderData) % -% Copyright 2024-2025 The MathWorks, Inc. +% Copyright 2024-26 The MathWorks, Inc. arguments pluginProviderData (1,1) struct = struct(); end -if isMATLABReleaseOlderThan("R2026a") - reportPlugin = ciplugins.jenkins.BuildReportPlugin(); -else - reportPlugin = ciplugins.jenkins.ParallelizableBuildReportPlugin(); -end - plugins = [ ... matlab.buildtool.internal.getFactoryDefaultPlugins(pluginProviderData) ... - reportPlugin ... ciplugins.jenkins.TaskRunProgressPlugin() ... ]; + +if strcmp(getenv("MW_INPUT_GENERATE_SUMMARY"), "true") + if isMATLABReleaseOlderThan("R2026a") + reportPlugin = ciplugins.jenkins.BuildReportPlugin(); + else + reportPlugin = ciplugins.jenkins.ParallelizableBuildReportPlugin(); + end + plugins = [plugins reportPlugin]; +end end diff --git a/src/main/resources/com/mathworks/ci/freestyle/RunMatlabBuildBuilder/config.jelly b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabBuildBuilder/config.jelly index 3693ca23c..5d9e583b2 100644 --- a/src/main/resources/com/mathworks/ci/freestyle/RunMatlabBuildBuilder/config.jelly +++ b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabBuildBuilder/config.jelly @@ -1,12 +1,20 @@ - - - - + + + + + - - - + + + + + + + + + + diff --git a/src/main/resources/com/mathworks/ci/freestyle/RunMatlabBuildBuilder/help-generateSummary.html b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabBuildBuilder/help-generateSummary.html new file mode 100644 index 000000000..2473a0e06 --- /dev/null +++ b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabBuildBuilder/help-generateSummary.html @@ -0,0 +1,3 @@ +
+ Option to generate a summary for the Jenkins build summary. +
diff --git a/src/main/resources/com/mathworks/ci/freestyle/RunMatlabCommandBuilder/config.jelly b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabCommandBuilder/config.jelly index 132f8298b..3844f8b13 100644 --- a/src/main/resources/com/mathworks/ci/freestyle/RunMatlabCommandBuilder/config.jelly +++ b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabCommandBuilder/config.jelly @@ -7,4 +7,8 @@ + + + + diff --git a/src/main/resources/com/mathworks/ci/freestyle/RunMatlabCommandBuilder/help-generateSummary.html b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabCommandBuilder/help-generateSummary.html new file mode 100644 index 000000000..2473a0e06 --- /dev/null +++ b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabCommandBuilder/help-generateSummary.html @@ -0,0 +1,3 @@ +
+ Option to generate a summary for the Jenkins build summary. +
diff --git a/src/main/resources/com/mathworks/ci/freestyle/RunMatlabTestsBuilder/config.jelly b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabTestsBuilder/config.jelly index cc94c689b..3aac15d11 100644 --- a/src/main/resources/com/mathworks/ci/freestyle/RunMatlabTestsBuilder/config.jelly +++ b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabTestsBuilder/config.jelly @@ -1,28 +1,26 @@ - -

+ + + + -

- -

-

- - + + @@ -39,8 +37,6 @@ -

- @@ -74,8 +70,6 @@ - -

diff --git a/src/main/resources/com/mathworks/ci/freestyle/RunMatlabTestsBuilder/help-generateSummary.html b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabTestsBuilder/help-generateSummary.html new file mode 100644 index 000000000..2473a0e06 --- /dev/null +++ b/src/main/resources/com/mathworks/ci/freestyle/RunMatlabTestsBuilder/help-generateSummary.html @@ -0,0 +1,3 @@ +
+ Option to generate a summary for the Jenkins build summary. +
diff --git a/src/main/resources/com/mathworks/ci/pipeline/RunMatlabBuildStep/config.jelly b/src/main/resources/com/mathworks/ci/pipeline/RunMatlabBuildStep/config.jelly index 4687525c6..3bdba60ea 100644 --- a/src/main/resources/com/mathworks/ci/pipeline/RunMatlabBuildStep/config.jelly +++ b/src/main/resources/com/mathworks/ci/pipeline/RunMatlabBuildStep/config.jelly @@ -13,4 +13,8 @@ + + + +
diff --git a/src/main/resources/com/mathworks/ci/pipeline/RunMatlabCommandStep/config.jelly b/src/main/resources/com/mathworks/ci/pipeline/RunMatlabCommandStep/config.jelly index b686f3baf..50b05b7ae 100644 --- a/src/main/resources/com/mathworks/ci/pipeline/RunMatlabCommandStep/config.jelly +++ b/src/main/resources/com/mathworks/ci/pipeline/RunMatlabCommandStep/config.jelly @@ -7,6 +7,10 @@ - + + + + + diff --git a/src/main/resources/com/mathworks/ci/pipeline/RunMatlabTestsStep/config.jelly b/src/main/resources/com/mathworks/ci/pipeline/RunMatlabTestsStep/config.jelly index e94cb1908..c9e533ac2 100644 --- a/src/main/resources/com/mathworks/ci/pipeline/RunMatlabTestsStep/config.jelly +++ b/src/main/resources/com/mathworks/ci/pipeline/RunMatlabTestsStep/config.jelly @@ -70,4 +70,8 @@ + + + + diff --git a/src/test/java/com/mathworks/ci/actions/MatlabActionTest.java b/src/test/java/com/mathworks/ci/actions/MatlabActionTest.java index c53b2ad03..29f5bf81b 100644 --- a/src/test/java/com/mathworks/ci/actions/MatlabActionTest.java +++ b/src/test/java/com/mathworks/ci/actions/MatlabActionTest.java @@ -1,7 +1,7 @@ package com.mathworks.ci.actions; /** - * Copyright 2024, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.File; @@ -18,7 +18,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import hudson.FilePath; @@ -68,6 +68,7 @@ public void init() { when(listener.getLogger()).thenReturn(out); when(params.getBuild()).thenReturn(build); + when(params.getGenerateSummary()).thenReturn(true); } } @@ -79,12 +80,12 @@ public void shouldCopyPluginsToTempDirectory() throws IOException, InterruptedEx inOrder.verify(runner) .copyFileToTempFolder(MatlabBuilderConstants.DEFAULT_PLUGIN, MatlabBuilderConstants.DEFAULT_PLUGIN); - inOrder.verify(runner) - .copyFileToTempFolder(MatlabBuilderConstants.BUILD_REPORT_PLUGIN, - MatlabBuilderConstants.BUILD_REPORT_PLUGIN); inOrder.verify(runner) .copyFileToTempFolder(MatlabBuilderConstants.TASK_RUN_PROGRESS_PLUGIN, MatlabBuilderConstants.TASK_RUN_PROGRESS_PLUGIN); + inOrder.verify(runner) + .copyFileToTempFolder(MatlabBuilderConstants.BUILD_REPORT_PLUGIN, + MatlabBuilderConstants.BUILD_REPORT_PLUGIN); } @Test @@ -133,4 +134,88 @@ public void shouldRemoveTempFolder() throws IOException, InterruptedException, M verify(runner).removeTempFolder(); } + + @Test + public void shouldOnlyCopyNonVisualizationPluginsWhenGenerateSummaryFalse() + throws IOException, InterruptedException { + MatlabCommandRunner localRunner = mock(MatlabCommandRunner.class); + BuildConsoleAnnotator localAnnotator = mock(BuildConsoleAnnotator.class); + + MatlabAction matlabAction = new MatlabAction(localRunner, localAnnotator); + matlabAction.copyPluginsToTemp(false); + + verify(localRunner).copyFileToTempFolder( + MatlabBuilderConstants.DEFAULT_PLUGIN, MatlabBuilderConstants.DEFAULT_PLUGIN); + verify(localRunner).copyFileToTempFolder( + MatlabBuilderConstants.TASK_RUN_PROGRESS_PLUGIN, MatlabBuilderConstants.TASK_RUN_PROGRESS_PLUGIN); + + verify(localRunner, never()).copyFileToTempFolder( + MatlabBuilderConstants.BUILD_REPORT_PLUGIN, MatlabBuilderConstants.BUILD_REPORT_PLUGIN); + verify(localRunner, never()).copyFileToTempFolder( + MatlabBuilderConstants.PAR_BUILD_REPORT_PLUGIN, MatlabBuilderConstants.PAR_BUILD_REPORT_PLUGIN); + verify(localRunner, never()).copyFileToTempFolder( + MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN, MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN); + verify(localRunner, never()).copyFileToTempFolder( + MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN_SERVICE, MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN_SERVICE); + } + + @Test + public void shouldCopyAllPluginsWhenGenerateSummaryTrue() + throws IOException, InterruptedException { + MatlabCommandRunner localRunner = mock(MatlabCommandRunner.class); + BuildConsoleAnnotator localAnnotator = mock(BuildConsoleAnnotator.class); + + MatlabAction matlabAction = new MatlabAction(localRunner, localAnnotator); + matlabAction.copyPluginsToTemp(true); + + verify(localRunner).copyFileToTempFolder( + MatlabBuilderConstants.DEFAULT_PLUGIN, MatlabBuilderConstants.DEFAULT_PLUGIN); + verify(localRunner).copyFileToTempFolder( + MatlabBuilderConstants.TASK_RUN_PROGRESS_PLUGIN, MatlabBuilderConstants.TASK_RUN_PROGRESS_PLUGIN); + verify(localRunner).copyFileToTempFolder( + MatlabBuilderConstants.BUILD_REPORT_PLUGIN, MatlabBuilderConstants.BUILD_REPORT_PLUGIN); + verify(localRunner).copyFileToTempFolder( + MatlabBuilderConstants.PAR_BUILD_REPORT_PLUGIN, MatlabBuilderConstants.PAR_BUILD_REPORT_PLUGIN); + verify(localRunner).copyFileToTempFolder( + MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN, MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN); + verify(localRunner).copyFileToTempFolder( + MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN_SERVICE, MatlabBuilderConstants.TEST_RESULTS_VIEW_PLUGIN_SERVICE); + } + + @Test + public void shouldSetGenerateSummaryEnvVar() + throws IOException, InterruptedException { + MatlabCommandRunner localRunner = mock(MatlabCommandRunner.class); + BuildConsoleAnnotator localAnnotator = mock(BuildConsoleAnnotator.class); + FilePath localTempFolder = mock(FilePath.class); + when(localRunner.getTempFolder()).thenReturn(localTempFolder); + + MatlabAction matlabAction = new MatlabAction(localRunner, localAnnotator); + matlabAction.setBuildEnvVars(true); + verify(localRunner).addEnvironmentVariable("MW_INPUT_GENERATE_SUMMARY", "true"); + + MatlabCommandRunner localRunner2 = mock(MatlabCommandRunner.class); + FilePath localTempFolder2 = mock(FilePath.class); + when(localRunner2.getTempFolder()).thenReturn(localTempFolder2); + + MatlabAction matlabAction2 = new MatlabAction(localRunner2, localAnnotator); + matlabAction2.setBuildEnvVars(false); + verify(localRunner2).addEnvironmentVariable("MW_INPUT_GENERATE_SUMMARY", "false"); + } + + @Test + public void shouldAlwaysSetDefaultPluginsOverrideEnvVar() + throws IOException, InterruptedException { + MatlabCommandRunner localRunner = mock(MatlabCommandRunner.class); + BuildConsoleAnnotator localAnnotator = mock(BuildConsoleAnnotator.class); + FilePath localTempFolder = mock(FilePath.class); + when(localRunner.getTempFolder()).thenReturn(localTempFolder); + + MatlabAction matlabAction = new MatlabAction(localRunner, localAnnotator); + matlabAction.setBuildEnvVars(false); + + verify(localRunner).addEnvironmentVariable( + "MW_MATLAB_BUILDTOOL_DEFAULT_PLUGINS_FCN_OVERRIDE", + "ciplugins.jenkins.getDefaultPlugins"); + } } diff --git a/src/test/java/com/mathworks/ci/freestyle/RunMatlabBuildBuilderUnitTest.java b/src/test/java/com/mathworks/ci/freestyle/RunMatlabBuildBuilderUnitTest.java index e4ca91f03..3ac57d5a5 100644 --- a/src/test/java/com/mathworks/ci/freestyle/RunMatlabBuildBuilderUnitTest.java +++ b/src/test/java/com/mathworks/ci/freestyle/RunMatlabBuildBuilderUnitTest.java @@ -1,7 +1,7 @@ package com.mathworks.ci.freestyle; /** - * Copyright 2024, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.IOException; @@ -68,6 +68,7 @@ public void shouldHandleNullCases() throws IOException, InterruptedException, Ma assertEquals("", actual.getStartupOptions()); assertEquals(null, actual.getTasks()); assertEquals(null, actual.getBuildOptions()); + assertEquals(true, actual.getGenerateSummary()); verify(action).run(); } @@ -77,6 +78,7 @@ public void shouldHandleMaximalCases() throws IOException, InterruptedException, builder.setTasks("laundry sweeping"); builder.setBuildOptions(new BuildOptions("-continueOnFailure -skip laundry")); builder.setStartupOptions(new StartupOptions("-nojvm -logfile mylog")); + builder.setGenerateSummary(false); builder.perform(build, workspace, launcher, listener); @@ -88,6 +90,7 @@ public void shouldHandleMaximalCases() throws IOException, InterruptedException, assertEquals("-nojvm -logfile mylog", actual.getStartupOptions()); assertEquals("laundry sweeping", actual.getTasks()); assertEquals("-continueOnFailure -skip laundry", actual.getBuildOptions()); + assertEquals(false, actual.getGenerateSummary()); verify(action).run(); } diff --git a/src/test/java/com/mathworks/ci/freestyle/RunMatlabCommandBuilderUnitTest.java b/src/test/java/com/mathworks/ci/freestyle/RunMatlabCommandBuilderUnitTest.java index b93fdacd6..38caf115f 100644 --- a/src/test/java/com/mathworks/ci/freestyle/RunMatlabCommandBuilderUnitTest.java +++ b/src/test/java/com/mathworks/ci/freestyle/RunMatlabCommandBuilderUnitTest.java @@ -1,7 +1,7 @@ package com.mathworks.ci.freestyle; /** - * Copyright 2024, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.IOException; @@ -66,6 +66,7 @@ public void shouldHandleNullCases() throws IOException, InterruptedException, Ma assertEquals("", actual.getStartupOptions()); assertEquals(null, actual.getCommand()); + assertEquals(true, actual.getGenerateSummary()); verify(action).run(); } @@ -74,6 +75,7 @@ public void shouldHandleMaximalCases() throws IOException, InterruptedException, RunMatlabCommandBuilder builder = new RunMatlabCommandBuilder(factory); builder.setMatlabCommand("SHAKE"); builder.setStartupOptions(new StartupOptions("-nojvm -logfile mylog")); + builder.setGenerateSummary(false); builder.perform(build, workspace, launcher, listener); @@ -84,6 +86,7 @@ public void shouldHandleMaximalCases() throws IOException, InterruptedException, assertEquals("-nojvm -logfile mylog", actual.getStartupOptions()); assertEquals("SHAKE", actual.getCommand()); + assertEquals(false, actual.getGenerateSummary()); verify(action).run(); } diff --git a/src/test/java/com/mathworks/ci/freestyle/RunMatlabTestsBuilderUnitTest.java b/src/test/java/com/mathworks/ci/freestyle/RunMatlabTestsBuilderUnitTest.java index e941e9332..72c22a536 100644 --- a/src/test/java/com/mathworks/ci/freestyle/RunMatlabTestsBuilderUnitTest.java +++ b/src/test/java/com/mathworks/ci/freestyle/RunMatlabTestsBuilderUnitTest.java @@ -1,7 +1,7 @@ package com.mathworks.ci.freestyle; /** - * Copyright 2024, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.IOException; @@ -80,6 +80,7 @@ public void shouldHandleNullCases() throws IOException, InterruptedException, Ma assertEquals(null, actual.getOutputDetail()); assertEquals("false", actual.getUseParallel()); assertEquals("false", actual.getStrict()); + assertEquals(true, actual.getGenerateSummary()); assertEquals(null, actual.getSourceFolder()); assertEquals(null, actual.getSelectByFolder()); verify(action).run(); @@ -126,6 +127,7 @@ public void shouldHandleMaximalCases() throws IOException, InterruptedException, builder.setOutputDetail("Concise"); builder.setUseParallel(true); builder.setStrict(true); + builder.setGenerateSummary(false); builder.perform(build, workspace, launcher, listener); @@ -149,6 +151,7 @@ public void shouldHandleMaximalCases() throws IOException, InterruptedException, assertEquals("Concise", actual.getOutputDetail()); assertEquals("true", actual.getUseParallel()); assertEquals("true", actual.getStrict()); + assertEquals(false, actual.getGenerateSummary()); assertEquals(2, actual.getSourceFolder().size()); assertEquals(2, actual.getSelectByFolder().size()); verify(action).run(); diff --git a/src/test/java/com/mathworks/ci/pipeline/MatlabBuildStepExecutionUnitTest.java b/src/test/java/com/mathworks/ci/pipeline/MatlabBuildStepExecutionUnitTest.java index 2729138a4..5e30c0a5a 100644 --- a/src/test/java/com/mathworks/ci/pipeline/MatlabBuildStepExecutionUnitTest.java +++ b/src/test/java/com/mathworks/ci/pipeline/MatlabBuildStepExecutionUnitTest.java @@ -1,7 +1,7 @@ package com.mathworks.ci.pipeline; /** - * Copyright 2024, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.IOException; @@ -51,6 +51,7 @@ public void shouldHandleNullCases() throws Exception, IOException, InterruptedEx assertEquals("", params.getStartupOptions()); assertEquals("", params.getTasks()); assertEquals("", params.getBuildOptions()); + assertEquals(true, params.getGenerateSummary()); verify(action).run(); } @@ -62,6 +63,7 @@ public void shouldHandleMaximalCases() step.setStartupOptions("-nojvm -logfile file"); step.setTasks("vacuum bills"); step.setBuildOptions("-continueOnFailure"); + step.setGenerateSummary(false); MatlabBuildStepExecution ex = new MatlabBuildStepExecution(factory, context, step); @@ -75,6 +77,7 @@ public void shouldHandleMaximalCases() assertEquals("-nojvm -logfile file", params.getStartupOptions()); assertEquals("vacuum bills", params.getTasks()); assertEquals("-continueOnFailure", params.getBuildOptions()); + assertEquals(false, params.getGenerateSummary()); verify(action).run(); } diff --git a/src/test/java/com/mathworks/ci/pipeline/MatlabCommandStepExecutionUnitTest.java b/src/test/java/com/mathworks/ci/pipeline/MatlabCommandStepExecutionUnitTest.java index 50c54dfba..3d375fffa 100644 --- a/src/test/java/com/mathworks/ci/pipeline/MatlabCommandStepExecutionUnitTest.java +++ b/src/test/java/com/mathworks/ci/pipeline/MatlabCommandStepExecutionUnitTest.java @@ -1,7 +1,7 @@ package com.mathworks.ci.pipeline; /** - * Copyright 2024, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.IOException; @@ -52,6 +52,7 @@ public void shouldHandleNullCases() throws Exception, IOException, InterruptedEx CommandActionParameters params = captor.getValue(); assertEquals("", params.getStartupOptions()); assertEquals(null, params.getCommand()); + assertEquals(true, params.getGenerateSummary()); verify(action).run(); } @@ -61,6 +62,7 @@ public void shouldHandleMaximalCases() throws Exception, IOException, InterruptedException, MatlabExecutionException { RunMatlabCommandStep step = new RunMatlabCommandStep("mycommand"); step.setStartupOptions("-nojvm -logfile file"); + step.setGenerateSummary(false); MatlabCommandStepExecution ex = new MatlabCommandStepExecution(factory, context, step); @@ -72,6 +74,7 @@ public void shouldHandleMaximalCases() CommandActionParameters params = captor.getValue(); assertEquals("-nojvm -logfile file", params.getStartupOptions()); assertEquals("mycommand", params.getCommand()); + assertEquals(false, params.getGenerateSummary()); verify(action).run(); } diff --git a/src/test/java/com/mathworks/ci/pipeline/MatlabRunTestsStepExecutionUnitTest.java b/src/test/java/com/mathworks/ci/pipeline/MatlabRunTestsStepExecutionUnitTest.java index c36cc0251..8df99a27c 100644 --- a/src/test/java/com/mathworks/ci/pipeline/MatlabRunTestsStepExecutionUnitTest.java +++ b/src/test/java/com/mathworks/ci/pipeline/MatlabRunTestsStepExecutionUnitTest.java @@ -1,7 +1,7 @@ package com.mathworks.ci.pipeline; /** - * Copyright 2024, The MathWorks Inc. + * Copyright 2024-26, The MathWorks Inc. */ import java.io.IOException; @@ -64,6 +64,7 @@ public void shouldHandleNullCase() throws Exception, IOException, InterruptedExc assertEquals(null, params.getOutputDetail()); assertEquals("false", params.getUseParallel()); assertEquals("false", params.getStrict()); + assertEquals(true, params.getGenerateSummary()); assertEquals(null, params.getSourceFolder()); assertEquals(null, params.getSelectByFolder()); @@ -89,6 +90,7 @@ public void shouldHandleMaximalCase() step.setOutputDetail("Concise"); step.setUseParallel(true); step.setStrict(true); + step.setGenerateSummary(false); ArrayList folders = new ArrayList(); folders.add("src"); @@ -120,6 +122,7 @@ public void shouldHandleMaximalCase() assertEquals("Concise", params.getOutputDetail()); assertEquals("true", params.getUseParallel()); assertEquals("true", params.getStrict()); + assertEquals(false, params.getGenerateSummary()); assertEquals(folders, params.getSourceFolder()); assertEquals(folders, params.getSelectByFolder());