private async Task GenerateReport(TestProjectReportModel testResult, Settings settings) { if (string.IsNullOrEmpty(settings.ReportPath)) { settings.ReportPath = Directory.GetCurrentDirectory(); } var mprm = new MutationProjectReportModel(); mprm.TestProjects.Add(testResult); var reporter = ReportFactory(settings.ReportType); var reportBytes = await reporter.CreateReportAsync(mprm); var reportFileName = DateTime.Now.ToString("yy-MM-dd-H-mm") + reporter.FileExtension; await File.WriteAllBytesAsync(Path.Combine(_outputDirectory, reportFileName), reportBytes); }
private async Task <string> Template(MutationProjectReportModel model) { var currentAssembly = Assembly.GetExecutingAssembly(); var resourceName = currentAssembly .GetManifestResourceNames() .Single(str => str.EndsWith("HTML.cshtml")); using var streamReader = new StreamReader(currentAssembly.GetManifestResourceStream(resourceName)); var template = await streamReader.ReadToEndAsync(); var engine = new RazorLightEngineBuilder() // required to have a default RazorLightProject type, // but not required to create a template from string. .UseEmbeddedResourcesProject(typeof(HtmlReporter)) .UseMemoryCachingProvider() .Build(); var result = await engine.CompileRenderStringAsync("templateKey", template, model); return(result); }
public async Task <byte[]> CreateReportAsync(MutationProjectReportModel mutationRun) { return(Encoding.UTF8.GetBytes(await Template(mutationRun))); }