-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExampleDrivenTesterTask.m
More file actions
81 lines (72 loc) · 2.89 KB
/
ExampleDrivenTesterTask.m
File metadata and controls
81 lines (72 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
classdef ExampleDrivenTesterTask < matlab.buildtool.Task
% Buildtool task to run example scripts with optional test & coverage reports.
% Inputs:
% - Folders: string array of M-script locations
% Optional Inputs:
% - CreateTestReport (logical)
% - TestReportFormat (string)
% - ReportOutputFolder (string)
% - CodeCoveragePlugin (object)
properties
Folders (1,:) string
CreateTestReport (1,1) logical
TestReportFormat (1,1) string
OutputPath (1,1) string
CodeCoveragePlugin
end
methods
function task = ExampleDrivenTesterTask(folders, options)
% Constructor
arguments
folders (1,:) string
options.CreateTestReport (1,1) logical = true
options.TestReportFormat (1,1) string = "html"
options.OutputPath(1,1) string = "reports"
options.CodeCoveragePlugin = []
end
task.Description = "Run published examples";
task.Inputs = folders;
% Basic validation
mustBeMember(options.TestReportFormat, ["html", "pdf", "docx", "xml"]);
for f = folders
if ~isfolder(f)
error("ExampleDrivenTesterTask:FolderNotFound", ...
"Folder not found: %s", f);
end
end
task.Folders = folders;
task.CreateTestReport = options.CreateTestReport;
task.TestReportFormat = options.TestReportFormat;
task.OutputPath= options.OutputPath;
task.CodeCoveragePlugin= options.CodeCoveragePlugin;
if task.CreateTestReport
task.Outputs = task.OutputPath;
else
task.Outputs = string.empty;
end
end
end
methods (TaskAction, Sealed, Hidden)
function runExampleTests(task, ~)
if task.CreateTestReport && ~isfolder(task.OutputPath)
mkdir(task.OutputPath);
end
if isempty(task.CodeCoveragePlugin)
examplesRunner = examplesTester( ...
task.Folders, ...
CreateTestReport = task.CreateTestReport, ...
TestReportFormat = task.TestReportFormat, ...
OutputPath = task.OutputPath);
else
% Pass CodeCoveragePlugin through when provided
examplesRunner = examplesTester( ...
task.Folders, ...
CreateTestReport = task.CreateTestReport, ...
TestReportFormat = task.TestReportFormat, ...
OutputPath = task.OutputPath, ...
CodeCoveragePlugin = task.CodeCoveragePlugin);
end
examplesRunner.executeTests;
end
end
end