File size: 5,252 Bytes
18a519f | 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | using UnityEngine;
using UnityEditor.TestTools.CodeCoverage.OpenCover;
using UnityEditor.TestTools.CodeCoverage.Analytics;
namespace UnityEditor.TestTools.CodeCoverage
{
internal class CoverageReporterManager
{
private readonly CoverageSettings m_CoverageSettings = null;
private ICoverageReporter m_CoverageReporter = null;
CoverageReportGenerator m_ReportGenerator = null;
public CoverageReporterManager(CoverageSettings coverageSettings)
{
m_CoverageSettings = coverageSettings;
}
public ICoverageReporter CoverageReporter
{
get
{
if (m_CoverageReporter == null)
{
CreateCoverageReporter();
}
return m_CoverageReporter;
}
}
public void CreateCoverageReporter()
{
m_CoverageReporter = null;
// Use OpenCover format as currently this is the only one supported
CoverageFormat coverageFormat = CoverageFormat.OpenCover;
switch (coverageFormat)
{
case CoverageFormat.OpenCover:
m_CoverageSettings.resultsFileExtension = "xml";
m_CoverageSettings.resultsFolderSuffix = "-opencov";
m_CoverageSettings.resultsFileName = CoverageRunData.instance.isRecording ? "RecordingCoverageResults" : "TestCoverageResults";
m_CoverageReporter = new OpenCoverReporter();
break;
}
if (m_CoverageReporter != null)
{
m_CoverageReporter.OnInitialise(m_CoverageSettings);
}
}
public bool ShouldAutoGenerateReport()
{
bool shouldAutoGenerateReport = false;
bool cmdLineGenerateHTMLReport = CommandLineManager.instance.generateHTMLReport;
bool cmdLineGenerateBadge = CommandLineManager.instance.generateBadgeReport;
bool cmdLineGenerateAdditionalReports = CommandLineManager.instance.generateAdditionalReports;
bool generateHTMLReport = CoveragePreferences.instance.GetBool("GenerateHTMLReport", true);
bool generateAdditionalReports = CoveragePreferences.instance.GetBool("GenerateAdditionalReports", false);
bool generateBadge = CoveragePreferences.instance.GetBool("GenerateBadge", true);
bool autoGenerateReport = CoveragePreferences.instance.GetBool("AutoGenerateReport", false);
if (CommandLineManager.instance.runFromCommandLine)
{
if (CommandLineManager.instance.batchmode)
{
if (CommandLineManager.instance.useProjectSettings)
{
shouldAutoGenerateReport = cmdLineGenerateHTMLReport ||
cmdLineGenerateBadge ||
cmdLineGenerateAdditionalReports ||
(autoGenerateReport && (generateHTMLReport || generateBadge || generateAdditionalReports));
}
else
{
shouldAutoGenerateReport = cmdLineGenerateHTMLReport || cmdLineGenerateBadge || cmdLineGenerateAdditionalReports;
}
}
else
{
shouldAutoGenerateReport = cmdLineGenerateHTMLReport ||
cmdLineGenerateBadge ||
cmdLineGenerateAdditionalReports ||
(autoGenerateReport && (generateHTMLReport || generateBadge || generateAdditionalReports));
}
}
else
{
autoGenerateReport = CoveragePreferences.instance.GetBool("AutoGenerateReport", true);
shouldAutoGenerateReport = autoGenerateReport && (generateHTMLReport || generateBadge || generateAdditionalReports);
}
return shouldAutoGenerateReport;
}
public void GenerateReport()
{
if (ShouldAutoGenerateReport())
{
if (m_CoverageSettings != null)
{
CoverageAnalytics.instance.CurrentCoverageEvent.actionID = ActionID.DataReport;
ReportGenerator.Generate(m_CoverageSettings);
}
}
else
{
// Clear ProgressBar left from saving results to file,
// otherwise continue on the same ProgressBar
EditorUtility.ClearProgressBar();
// Send Analytics event (Data Only)
CoverageAnalytics.instance.SendCoverageEvent(true);
}
}
public CoverageReportGenerator ReportGenerator
{
get
{
if (m_ReportGenerator == null)
m_ReportGenerator = new CoverageReportGenerator();
return m_ReportGenerator;
}
}
}
}
|