Esempio n. 1
0
        public SonarDocument Parse(string solutionDirectory, bool useAbsolutePath)
        {
            if (string.IsNullOrEmpty(solutionDirectory) || !Directory.Exists(solutionDirectory))
            {
                return(null);
            }

            IEnumerable <string> trxFiles = Directory.EnumerateFiles(solutionDirectory, "*.trx", SearchOption.AllDirectories);

            var sonarDocuments = new List <SonarDocument>();

            foreach (string trxFile in trxFiles)
            {
                _logger.LogInformation($"Parsing: {trxFile}");
                TrxDocument   trxDocument   = _trxParser.Deserialize(trxFile);
                SonarDocument sonarDocument = Convert(trxDocument, solutionDirectory, useAbsolutePath);

                if (sonarDocument != null)
                {
                    sonarDocuments.Add(sonarDocument);
                }
            }

            return(Merge(sonarDocuments));
        }
Esempio n. 2
0
        private SonarDocument Convert(TrxDocument trxDocument, string solutionDirectory, bool useAbsolutePath)
        {
            var sonarDocument = new SonarDocument();

            foreach (var trxResult in trxDocument.Results)
            {
                try
                {
                    var unitTest = trxResult.GetUnitTest(trxDocument);

                    var testFile = unitTest.GetTestFile(solutionDirectory, useAbsolutePath);


                    var file = sonarDocument.GetFile(testFile);

                    if (file == null)
                    {
                        file = new File(testFile);
                        sonarDocument.Files.Add(file);
                    }

                    var testCase = new TestCase(trxResult.TestName, Utils.ToSonarDuration(trxResult.Duration));

                    if (trxResult.Outcome != Outcome.Passed)
                    {
                        if (trxResult.Outcome == Outcome.NotExecuted)
                        {
                            testCase.Skipped = new Skipped();
                            this.logger.LogInformation($"Skipped: {trxResult.TestName}");
                        }
                        else
                        {
                            testCase.Failure = new Failure(trxResult.Output?.ErrorInfo?.Message ?? string.Empty, trxResult.Output?.ErrorInfo?.StackTrace ?? string.Empty);
                            this.logger.LogInformation($"Failure: {trxResult.TestName}");
                        }
                    }
                    else
                    {
                        this.logger.LogInformation($"Passed: {trxResult.TestName}");
                    }

                    file.TestCases.Add(testCase);
                }
                catch (Exception ex)
                {
                    this.logger.LogError(ex.Message);
                }
            }
            return(sonarDocument);
        }
Esempio n. 3
0
        private SonarDocument Convert(TrxDocument trxDocument, string solutionDirectory, bool useAbsolutePath)
        {
            var sonarDocument = new SonarDocument();

            foreach (var trxResult in trxDocument.Results)
            {
                var unitTest = trxResult.GetUnitTest(trxDocument);

                var testFile = unitTest.GetTestFile(solutionDirectory, useAbsolutePath);

                /*
                 * if (!System.IO.File.Exists(Path.Combine(solutionDirectory,testFile)))
                 * {
                 *  this.logger.LogWarning($"Test file seems to be wrong - Unable to find it: {testFile}");
                 * }
                 */

                var file = sonarDocument.GetFile(testFile);

                if (file == null)
                {
                    file = new File(testFile);
                    sonarDocument.Files.Add(file);
                }

                var testCase = new TestCase(trxResult.TestName, Utils.ToSonarDuration(trxResult.Duration));

                if (trxResult.Outcome != Outcome.Passed)
                {
                    if (trxResult.Outcome == Outcome.NotExecuted)
                    {
                        testCase.Skipped = new Skipped();
                        this.logger.LogInformation($"Skipped: {trxResult.TestName}");
                    }
                    else
                    {
                        testCase.Failure = new Failure(trxResult.Output?.ErrorInfo?.Message, trxResult.Output?.ErrorInfo?.StackTrace);
                        this.logger.LogInformation($"Failure: {trxResult.TestName}");
                    }
                }
                else
                {
                    this.logger.LogInformation($"Passed: {trxResult.TestName}");
                }

                file.TestCases.Add(testCase);
            }
            return(sonarDocument);
        }
Esempio n. 4
0
 public static UnitTest GetUnitTest(this UnitTestResult unitTestResult, TrxDocument trxDocument)
 {
     return(trxDocument.TestDefinitions.FirstOrDefault(x => x.Id == unitTestResult.TestId));
 }