static IEnumerable <TestReportBase> ReadInput(CommandArguments args) { if (string.IsNullOrWhiteSpace(args.InputPath)) { ProgramExit.Exit(ExitCode.InvalidInput, true); yield break; } ExitCode.ExitCodeData errorCode = ExitCode.Success; bool anyFailures = false; foreach (string path in args.AllPositionalArgs) { TestReportBase testReport = ReadInputInternal(path, ref errorCode); if (testReport != null) { yield return(testReport); } else { anyFailures = true; } } if (anyFailures && args.AllPositionalArgs.Count == 1) { // only one test report and it failed to read, exit ProgramExit.Exit(errorCode); yield break; } }
static void Main(string[] args) { string[] parseErrors; CommandArguments arguments = ArgHelper.Instance.ParseCommandArguments(args, out parseErrors); bool isTitlePrinted = false; // errors when parsing arguments if (parseErrors != null && parseErrors.Length > 0) { OutputWriter.WriteTitle(); OutputWriter.WriteLines(parseErrors); isTitlePrinted = true; } // show help? if (args.Length == 0 || arguments.ShowHelp) { OutputWriter.WriteTitle(); OutputWriter.WriteCommandUsage(); ProgramExit.Exit(ExitCode.Success); return; } // show version? if (arguments.ShowVersion) { OutputWriter.WriteVersion(); ProgramExit.Exit(ExitCode.Success); return; } if (!isTitlePrinted) { OutputWriter.WriteTitle(); } Convert(arguments); }
static void Convert(CommandArguments args) { // input IEnumerable <TestReportBase> testReports = ReadInput(args); // output - none if (args.OutputFormats == OutputFormats.None) { ProgramExit.Exit(ExitCode.UnknownOutputFormat, true); return; } // output - junit if ((args.OutputFormats & OutputFormats.JUnit) == OutputFormats.JUnit) { // the output JUnit path must be NOT an exist directory if (Directory.Exists(args.JUnitXmlFile)) { OutputWriter.WriteLine(Properties.Resources.ErrMsg_JUnit_OutputCannotDir); ProgramExit.Exit(ExitCode.InvalidArgument); return; } // if not an aggregation report output, then only convert for the first report if (!args.Aggregation) { TestReportBase testReport = testReports.First(); if (testReport == null) { ProgramExit.Exit(ExitCode.CannotReadFile); return; } // the output JUnit file path must be NOT same as the input file FileInfo fiInput = new FileInfo(testReport.ReportFile); FileInfo fiOutput = new FileInfo(args.JUnitXmlFile); if (fiInput.FullName == fiOutput.FullName) { OutputWriter.WriteLine(Properties.Resources.ErrMsg_JUnit_OutputSameAsInput); ProgramExit.Exit(ExitCode.InvalidArgument); return; } // convert if (!JUnit.Converter.ConvertAndSave(args, testReport)) { ProgramExit.Exit(ExitCode.GeneralError); } else { OutputWriter.WriteLine(Properties.Resources.InfoMsg_JUnit_OutputGenerated, fiOutput.FullName); } } else { // an aggregation report output if (!JUnit.Converter.ConvertAndSaveAggregation(args, testReports)) { ProgramExit.Exit(ExitCode.GeneralError); } else { FileInfo fiOutput = new FileInfo(args.JUnitXmlFile); OutputWriter.WriteLine(Properties.Resources.InfoMsg_JUnit_OutputGenerated, fiOutput.FullName); } } } // output - nunit 3 if ((args.OutputFormats & OutputFormats.NUnit3) == OutputFormats.NUnit3) { } }