private static Dictionary <string, KnownIssue> GetKnownIssues(Versions version, Languages language, IssueType issueType) { var lang = language.AsString(); var testNameSuffix = $"{lang}-{version}-{issueType.Suffix()}"; return((issueType switch { IssueType.Execution => CSharpKnownIssues.GetCSharpExecutionKnownIssues(version), IssueType.Compilation => KnownIssues.GetCompilationKnownIssues(language, version), _ => throw new ArgumentException($"Unknown issue type: {issueType}") }).Where(kv => kv.Key.EndsWith(testNameSuffix)).ToDictionary(kv => kv.Key, kv => kv.Value));
// create text report for v1 execution known issues private static void KnownIssuesTextReport(Versions version, Languages language, IssueType issueType) { if (language != Languages.CSharp) { throw new NotImplementedException(); } var issues = GetKnownIssues(version, language, issueType); var lang = language.AsString(); var documentationLinks = TestDataGenerator.GetDocumentationLinks(version, language); var testNameSuffix = $"{lang}-{version}-{issueType.Suffix()}"; var unreferencedIssues = new HashSet <string>(); var reportEntries = new List <ReportEntry>(); foreach (KeyValuePair <string, KnownIssue> kv in issues) { var testName = kv.Key; var knownIssue = kv.Value; var documentationLinkLookupKey = testName.Replace(testNameSuffix, $"{lang}-snippets.md"); if (!documentationLinks.ContainsKey(documentationLinkLookupKey)) { unreferencedIssues.Add(testName); } else { var documentationLink = documentationLinks[documentationLinkLookupKey]; reportEntries.Add(new ReportEntry ( testName, documentationLink, knownIssue )); } } if (unreferencedIssues.Count > 0) { var message = "There are known issue entries which are not referenced in the documentation," + " please make sure that you have the latest changes from docs repo" + " and remove the following from known issues list:" + $"{Environment.NewLine}{string.Join(Environment.NewLine, unreferencedIssues)}"; throw new InvalidDataException(message); } var fileName = $"{version}-{language.AsString()}-{issueType.LowerName()}-known-issues.md"; WriteReportEntriesToFile(fileName, reportEntries); }