104 lines
3.7 KiB
C#
104 lines
3.7 KiB
C#
using UnityEngine;
|
|
using UnityEditor.TestTools.CodeCoverage.OpenCover;
|
|
using UnityEditor.TestTools.CodeCoverage.Analytics;
|
|
|
|
namespace UnityEditor.TestTools.CodeCoverage
|
|
{
|
|
internal class CoverageReporterManager
|
|
{
|
|
private 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 void GenerateReport()
|
|
{
|
|
bool autoGenerateReport, generateHTMLReport, generateBadge;
|
|
|
|
if (CommandLineManager.instance.batchmode)
|
|
{
|
|
generateHTMLReport = CommandLineManager.instance.generateHTMLReport;
|
|
generateBadge = CommandLineManager.instance.generateBadgeReport;
|
|
autoGenerateReport = generateHTMLReport || generateBadge;
|
|
}
|
|
else
|
|
{
|
|
generateHTMLReport = CoveragePreferences.instance.GetBool("GenerateHTMLReport", true);
|
|
generateBadge = CoveragePreferences.instance.GetBool("GenerateBadge", true);
|
|
autoGenerateReport = CoveragePreferences.instance.GetBool("AutoGenerateReport", true) && (generateHTMLReport || generateBadge);
|
|
bool commandLineAutoGenerateReport = CommandLineManager.instance.runFromCommandLine && (CommandLineManager.instance.generateHTMLReport || CommandLineManager.instance.generateBadgeReport);
|
|
autoGenerateReport = autoGenerateReport || commandLineAutoGenerateReport;
|
|
}
|
|
|
|
if (!autoGenerateReport)
|
|
{
|
|
// 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);
|
|
|
|
return;
|
|
}
|
|
|
|
if (m_CoverageSettings != null)
|
|
{
|
|
CoverageAnalytics.instance.CurrentCoverageEvent.actionID = ActionID.DataReport;
|
|
ReportGenerator.Generate(m_CoverageSettings);
|
|
}
|
|
}
|
|
|
|
public CoverageReportGenerator ReportGenerator
|
|
{
|
|
get
|
|
{
|
|
if (m_ReportGenerator == null)
|
|
m_ReportGenerator = new CoverageReportGenerator();
|
|
|
|
return m_ReportGenerator;
|
|
}
|
|
}
|
|
}
|
|
}
|