1+ classdef tParallelizableBuildSummaryPlugin < matlab .unittest .TestCase
2+
3+ % Copyright 2026 The MathWorks, Inc.
4+
5+ properties
6+ TempFolder
7+ Plugin
8+ Runner
9+ end
10+
11+ methods (TestClassSetup )
12+ function setupPath(testCase )
13+ import matlab .unittest .fixtures .PathFixture ;
14+
15+ testCase .applyFixture(PathFixture(fileparts(fileparts(mfilename(" fullpath" )))));
16+ end
17+ end
18+
19+ methods (TestMethodSetup )
20+ function createPlugin(testCase )
21+ import matlab .unittest .fixtures .WorkingFolderFixture ;
22+
23+ testCase .applyFixture(WorkingFolderFixture );
24+ testCase.TempFolder = pwd();
25+
26+ testCase.Plugin = ParallelizableBuildSummaryPlugin(TempFolder = testCase .TempFolder);
27+ testCase.Runner = matlab .buildtool.BuildRunner.withNoPlugins();
28+ testCase .Runner.addPlugin(testCase .Plugin);
29+ end
30+ end
31+
32+ methods (Test )
33+ function runningBuildCreatesSummaryArtifact(testCase )
34+ plan = buildplan();
35+ plan(" t1" ) = Task();
36+ plan(" t2" ) = Task();
37+
38+ testCase .Runner.run(plan , [" t1" , " t2" ]);
39+
40+ testCase .verifyTrue(isfile(fullfile(testCase .TempFolder, " buildSummary.json" )));
41+ end
42+
43+ function runningBuildCreatesSummaryArtifactWithExpectedTasks(testCase )
44+ plan = buildplan();
45+ plan(" t1" ) = Task();
46+ plan(" t2" ) = Task();
47+
48+ testCase .Runner.run(plan , [" t1" , " t2" ]);
49+
50+ f = fullfile(testCase .TempFolder, " buildSummary.json" );
51+ testCase .assertTrue(isfile(f ));
52+
53+ s = readstruct(f );
54+
55+ testCase .verifySize(s , [1 2 ]);
56+ testCase .verifyEqual(s(1 ).name, " t1" );
57+ testCase .verifyEqual(s(2 ).name, " t2" );
58+ end
59+
60+ function summaryArtifactStatusesAreCorrect(testCase )
61+ plan = buildplan();
62+ plan(" t1" ) = Task();
63+ plan(" t2" ) = Task(Actions = @()error(" bam" ));
64+
65+ testCase .Runner.run(plan , [" t1" , " t2" ]);
66+
67+ f = fullfile(testCase .TempFolder, " buildSummary.json" );
68+ testCase .assertTrue(isfile(f ));
69+
70+ s = readstruct(f );
71+
72+ testCase .verifySize(s , [1 2 ]);
73+
74+ testCase .verifyFalse(s(1 ).failed);
75+ testCase .verifyFalse(s(1 ).skipped);
76+
77+ testCase .verifyTrue(s(2 ).failed);
78+ testCase .verifyFalse(s(2 ).skipped);
79+ end
80+
81+ function runningBuildCreatesSummaryForTaskGroups(testCase )
82+ plan = buildplan();
83+ plan(" g:t" ) = Task();
84+
85+ testCase .Runner.run(plan , " g:t" );
86+
87+ f = fullfile(testCase .TempFolder, " buildSummary.json" );
88+ testCase .assertTrue(isfile(f ));
89+
90+ s = readstruct(f );
91+
92+ testCase .verifySize(s , [1 1 ]);
93+ testCase .verifyEqual(s(1 ).name, " g:t" );
94+ end
95+ end
96+
97+ end
98+
99+ function plugin = ParallelizableBuildSummaryPlugin(varargin )
100+ plugin = buildframework .ParallelizableBuildSummaryPlugin(varargin{: });
101+ end
102+
103+ function task = Task(varargin )
104+ task = matlab .buildtool.Task(varargin{: });
105+ end
0 commit comments