diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index 862142c..22eefef 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -24,6 +24,22 @@ public CoverageProcessor(ICoveragePublisher publisher, ITelemetryDataCollector t _telemetry = telemetry; } + public bool IsContainsNativeCoverage(PublisherConfiguration config) + { + foreach (var summaryFile in config.CoverageFiles) + { + if (!(summaryFile.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || // .coveragebuffer + summaryFile.EndsWith(Constants.CoverageConstants.CoverageFileExtension) || // .coverage + summaryFile.EndsWith(Constants.CoverageConstants.CoverageBFileExtension) || //.covb + summaryFile.EndsWith(Constants.CoverageConstants.CoverageJsonFileExtension) || //.cjson + summaryFile.EndsWith(Constants.CoverageConstants.CoverageXFileExtension))) + { + return true; + } + } + return false; + } + public async Task ParseAndPublishCoverage(PublisherConfiguration config, CancellationToken token, Parser parser) { if (_publisher != null) @@ -45,6 +61,8 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell // Upload native coverage files to TCM TraceLogger.Debug("Publishing native coverage files is supported."); + TraceLogger.Debug("Vinayak - Trying to get Debug1"); + await _publisher.PublishNativeCoverageFiles(config.CoverageFiles, token); var fileCoverage = parser.GetFileCoverageInfos(); @@ -67,6 +85,7 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell { using (new SimpleTimer("CoverageProcesser", "PublishCoverageSummary", _telemetry)) { + TraceLogger.Debug("Vinayak - Trying to get Debug2"); await _publisher.PublishCoverageSummary(summary, token); } } @@ -82,35 +101,34 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell await _publisher.PublishFileCoverage(fileCoverage, token); } } - - //Feature Flag for PublishHTMLReport; To be cleaned up post PCCRV2 upgrade + if (config.GenerateHTMLReport) { + TraceLogger.Debug("Vinayak - ConfigHTML"); if (!Directory.Exists(config.ReportDirectory)) { + TraceLogger.Debug("Vinayak - Warning html supported"); TraceLogger.Warning(Resources.NoReportDirectoryGenerated); } else { - foreach (string nativeCoverageFile in config.CoverageFiles) + using (new SimpleTimer("CoverageProcesser", "PublishHTMLReport", _telemetry)) { - if (!(nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || // .coveragebuffer - nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageFileExtension) || // .coverage - nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageBFileExtension) || //.covb - nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageJsonFileExtension) || //.cjson - nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageXFileExtension))) // .covx + if(IsContainsNativeCoverage(config)) { - using (new SimpleTimer("CoverageProcesser", "PublishHTMLReport", _telemetry)) - { - await _publisher.PublishHTMLReport(config.ReportDirectory, token); - } + TraceLogger.Debug("Vinayak - HTML supported"); + await _publisher.PublishHTMLReport(config.ReportDirectory, token); } - + else{ + TraceLogger.Debug("Vinayak - HTML not supported"); + } } } - } + TraceLogger.Debug("Vinayak - HTML END"); + //Feature Flag for PublishHTMLReport; To be cleaned up post PCCRV2 upgrade + } // Only catastrophic failures should trickle down to these catch blocks catch (ParsingException ex) diff --git a/src/CoveragePublisher/Parsers/Parser.cs b/src/CoveragePublisher/Parsers/Parser.cs index f92b832..ad70826 100644 --- a/src/CoveragePublisher/Parsers/Parser.cs +++ b/src/CoveragePublisher/Parsers/Parser.cs @@ -6,6 +6,7 @@ using System.IO; using Microsoft.Azure.Pipelines.CoveragePublisher.Model; using Microsoft.Azure.Pipelines.CoveragePublisher.Utils; +using Microsoft.Azure.Pipelines.CoveragePublisher.Publishers.DefaultPublisher; namespace Microsoft.Azure.Pipelines.CoveragePublisher.Parsers { @@ -83,11 +84,22 @@ protected virtual void GenerateHTMLReport(ICoverageParserTool tool) // Copy the files foreach (var summaryFile in _configuration.CoverageFiles) { - var summaryFileName = Path.GetFileName(summaryFile); - var destinationSummaryFile = Path.Combine(summaryFilesSubDir, summaryFileName); + if (!(summaryFile.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || // .coveragebuffer + summaryFile.EndsWith(Constants.CoverageConstants.CoverageFileExtension) || // .coverage + summaryFile.EndsWith(Constants.CoverageConstants.CoverageBFileExtension) || //.covb + summaryFile.EndsWith(Constants.CoverageConstants.CoverageJsonFileExtension) || //.cjson + summaryFile.EndsWith(Constants.CoverageConstants.CoverageXFileExtension))) + { + var summaryFileName = Path.GetFileName(summaryFile); + var destinationSummaryFile = Path.Combine(summaryFilesSubDir, summaryFileName); - TraceLogger.Debug("Parser.GenerateHTMLReport: Copying summary file " + summaryFile); - File.Copy(summaryFile, destinationSummaryFile, true); + TraceLogger.Debug("Parser.GenerateHTMLReport: Copying summary file " + summaryFile); + File.Copy(summaryFile, destinationSummaryFile, true); + } + + else{ + TraceLogger.Debug("Parser.GenerateHTMLReport: Skipping copying of coverage input file " + summaryFile); + } } } else diff --git a/src/CoveragePublisher/Publishers/DefaultPublisher/AzurePipelinesPublisher.cs b/src/CoveragePublisher/Publishers/DefaultPublisher/AzurePipelinesPublisher.cs index 04defcf..b810164 100644 --- a/src/CoveragePublisher/Publishers/DefaultPublisher/AzurePipelinesPublisher.cs +++ b/src/CoveragePublisher/Publishers/DefaultPublisher/AzurePipelinesPublisher.cs @@ -130,7 +130,7 @@ public async Task PublishFileCoverage(IList coverageInfos, Can { var fileContent = JsonUtility.ToString(coverageInfos); File.WriteAllText(jsonFile, fileContent); - + TraceLogger.Debug("Vinayak - PublishFileCoverage"); _executionContext.TelemetryDataCollector.AddOrUpdate("FileCoverageLength", fileContent.Length); Dictionary metaData = new Dictionary(); @@ -160,6 +160,7 @@ public async Task PublishFileCoverage(IList coverageInfos, Can public async Task PublishHTMLReport(string reportDirectory, CancellationToken token) { + TraceLogger.Debug("Vinayak - Trying to get PublishHTMLREport"); await _htmlReportPublisher.PublishHTMLReportAsync(reportDirectory, token); } @@ -180,6 +181,7 @@ public async Task PublishNativeCoverageFiles(IList nativeCoverageFiles, using (new SimpleTimer("AzurePipelinesPublisher", "UploadNativeCoverageFiles", _executionContext.TelemetryDataCollector)) { int uploadedFileCount = 0; + TraceLogger.Debug("Vinayak - Trying to get Debug3"); foreach (string nativeCoverageFile in nativeCoverageFiles) { if (!(nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || @@ -190,7 +192,7 @@ public async Task PublishNativeCoverageFiles(IList nativeCoverageFiles, { continue; } - + TraceLogger.Debug("Vinayak - Trying to get Debug4"); TestLogType testLogType = GetTestLogType(nativeCoverageFile); await _logStoreHelper.UploadTestBuildLogAsync(_executionContext.ProjectId, _executionContext.BuildId, testLogType, nativeCoverageFile, metaData, null, true, cancellationToken); uploadedFileCount++; diff --git a/src/CoveragePublisher/Publishers/DefaultPublisher/HtmlReportPublisher.cs b/src/CoveragePublisher/Publishers/DefaultPublisher/HtmlReportPublisher.cs index 18c488e..2d3ae0b 100644 --- a/src/CoveragePublisher/Publishers/DefaultPublisher/HtmlReportPublisher.cs +++ b/src/CoveragePublisher/Publishers/DefaultPublisher/HtmlReportPublisher.cs @@ -46,7 +46,7 @@ public async Task PublishHTMLReportAsync(string reportDirectory, CancellationTok RenameIndexHtmExtensionIfRequired(reportDirectory); uploadDirectories.Add(new Tuple(reportDirectory, GetCoverageDirectoryName(buildId))); - + TraceLogger.Debug("Vinayak - HTMLReportAsync"); TraceLogger.Info(Resources.PublishingCodeCoverageReport); await this.PublishCodeCoverageFilesAsync(uploadDirectories, File.Exists(Path.Combine(reportDirectory, Constants.DefaultIndexFile)), cancellationToken); @@ -70,13 +70,16 @@ private async Task PublishCodeCoverageFilesAsync(List> dir }; // Upload to file container service + TraceLogger.Debug("Vinayak - Upload to file Container service"); var fileContainerHelper = _serviceFactory.GetFileContainerService(_clientFactory, _executionContext); await fileContainerHelper.CopyToContainerAsync(tuple, cancellationToken); string fileContainerFullPath = string.Format($"#/{_executionContext.ContainerId}/{tuple.Item2}"); // Associate with build artifact + TraceLogger.Debug("Vinayak - Build Artifact"); var buildHelper = _serviceFactory.GetBuildService(_clientFactory, _executionContext); await buildHelper.AssociateArtifact(_executionContext.BuildId, tuple.Item2, ArtifactResourceTypes.Container, fileContainerFullPath, artifactProperties, cancellationToken); + TraceLogger.Debug("Vinayak - Associate Artifact"); TraceLogger.Info(string.Format(Resources.PublishedCodeCoverageArtifact, tuple.Item1, tuple.Item2)); });