public void AdditionalFileService_ParseXmlFile_ValidXml_Parsed() { var additionalFile = new TestAdditionalDocument( ExampleXmlFileName, ValidXml); var additionalFileService = new AdditionalFileService(ImmutableArray.Create <AdditionalText>(additionalFile), FileParseRule); var parsedFile = additionalFileService.ParseXmlFile(additionalFile); Assert.Empty(additionalFileService.ParsingDiagnostics); Assert.Equal(3, parsedFile.Elements("Entry").Count()); }
public void AdditionalFileService_ParseXmlFile_InvalidXml_ParsingDiagnostic() { const string ExpectedExceptionMessage = "The 'Entry' start tag on line 1 position 8 does not match the end tag of 'Root'. Line 1, position 17."; var additionalFile = new TestAdditionalDocument(ExampleXmlFileName, InvalidXml); var additionalFileService = new AdditionalFileService(ImmutableArray.Create <AdditionalText>(additionalFile), FileParseRule); additionalFileService.ParseXmlFile(additionalFile); Assert.Equal(1, additionalFileService.ParsingDiagnostics.Count); Assert.Equal(FileParseRuleId, additionalFileService.ParsingDiagnostics[0].Id); Assert.Equal(ExpectedExceptionMessage, additionalFileService.ParsingDiagnostics[0].GetMessage()); }
public void LRT001_TypeInExemptedNamespace_NoDiagnostic() { var test = new TestFile(@" namespace MyApp { class MyClass { } }"); var exemptionFile = new TestAdditionalDocument( ExampleExemptNamespacesFileName, "<ExemptNamespaces><Entry>MyApp</Entry></ExemptNamespaces>"); VerifyDiagnostics(test, new[] { exemptionFile }); }
public void AdditionalFileService_ReportAnyConfigParseDiagnostics_Diagnostic() { VerifyCSharp( string.Empty, (tree, compilation) => { var additionalFile = new TestAdditionalDocument(ExampleXmlFileName, InvalidXml); var compilationWithAnalyzers = compilation.WithAnalyzers( ImmutableArray.Create <DiagnosticAnalyzer>(new TestAnalyzer()), new AnalyzerOptions(ImmutableArray.Create <AdditionalText>(additionalFile))); var context = new JoinableTaskContext(); ImmutableArray <Diagnostic> diagnostics = new JoinableTaskFactory(context).Run(async() => await compilationWithAnalyzers.GetAnalyzerDiagnosticsAsync()); Assert.Single(diagnostics); Assert.Equal(FileParseRuleId, diagnostics[0].Id); }); }
public TestAdditionalDocument[] GetApprovedNamespaces() { if (_approvedNamespacesDocument == null) { _approvedNamespacesDocument = GetApprovedNamespacesFromString(ApprovedNamespacesFilePath, ApprovedNamespaces); } if (_approvedTestNamespacesDocument == null) { _approvedTestNamespacesDocument = GetApprovedNamespacesFromString(ApprovedTestNamespacesFilePath, ApprovedTestNamespaces); } return(new[] { _approvedNamespacesDocument, _approvedTestNamespacesDocument }); TestAdditionalDocument GetApprovedNamespacesFromString(string filePath, string namespaces) { File.WriteAllText(filePath, namespaces); return(new TestApprovedNamespaceDocument(filePath, Path.GetFileName(filePath), namespaces)); } }
public void MalformedXmlDictionary_Verify_EmitsDiagnostic() { var contents = @"<?xml version=""1.0"" encoding=""utf-8""?> <Dictionary> <Words> <Recognized> <Word>okay</Word> <word>bad</Word> <!-- xml tags are case-sensitive --> </Recognized> </Words> </Dictionary>"; var dictionary = new TestAdditionalDocument("CodeAnalysisDictionary.xml", contents); VerifyDiagnostics( new TestFile("class Program { }"), dictionary, GetFileParseResult( "CodeAnalysisDictionary.xml", "The 'word' start tag on line 6 position 14 does not match the end tag of 'Word'. Line 6, position 24.")); }
public void NI1006_BannedMethodsFileHasXmlWithWrongRootElement_Diagnostic() { var test = new TestFile(@" class Program { static void Main(string[] args) { } }"); var invalidBannedMethodsFile = new TestAdditionalDocument( ExampleBannedMethodsFileName, @"<WrongRootTag><Entry>System.Console</Entry></WrongRootTag>"); VerifyDiagnostics( test, new[] { invalidBannedMethodsFile }, expectedDiagnostics: GetNI1006XmlErrorResult( ExampleBannedMethodsFileName, "BannedMethods.xml must have a root element of <BannedMethods>")); }
public void NI1006_BannedMethodsFileHasXmlWithWrongChildElement_Diagnostic() { var test = new TestFile(@" class Program { static void Main(string[] args) { } }"); var invalidBannedMethodsFile = new TestAdditionalDocument( ExampleBannedMethodsFileName, @"<BannedMethods><Entry>System.Console</Entry><WrongElement>System.Diagnostics</WrongElement></BannedMethods>"); VerifyDiagnostics( test, new[] { invalidBannedMethodsFile }, expectedDiagnostics: GetNI1006XmlErrorResult( ExampleBannedMethodsFileName, "Unsupported element in BannedMethods.xml: WrongElement")); }
public void LRT001_ExemptNamespacesFileHasInvalidXml_Diagnostic() { var test = new TestFile(@" namespace MyApp { class MyClass { } }"); var invalidExemptionFile = new TestAdditionalDocument( ExampleExemptNamespacesFileName, "<ExemptNamespaces><Entry>MyApp<Entry><ExemptNamespaces>"); VerifyDiagnostics( test, new[] { invalidExemptionFile }, GetLRT001FileParseErrorResultAt( ExampleExemptNamespacesFileName, "Unexpected end of file has occurred. The following elements are not closed: ExemptNamespaces, Entry, Entry, ExemptNamespaces. Line 1, position 56."), GetLRT001ResultAt(4, 5, "MyClass")); }
public void NI1006_BannedMethodsFileHasInvalidXml_Diagnostic() { var test = new TestFile(@" class Program { static void Main(string[] args) { } }"); var invalidBannedMethodsFileSource = @" <BannedMethods> <Entry>System.Console</Entry>"; var invalidBannedMethodsFile = new TestAdditionalDocument(ExampleBannedMethodsFileName, invalidBannedMethodsFileSource); VerifyDiagnostics( test, new[] { invalidBannedMethodsFile }, expectedDiagnostics: GetNI1006XmlErrorResult( ExampleBannedMethodsFileName, "Unexpected end of file has occurred. The following elements are not closed: BannedMethods. Line 3, position 34.")); }
public void LRT001_TypeNearExemptedNamespace_Diagnostic() { var test = new TestFile(@" namespace Foo { namespace Bar { class BarsClass { } } class FoosClass { } }"); var exemptionFile = new TestAdditionalDocument( ExampleExemptNamespacesFileName, "<ExemptNamespaces><Entry>Foo.Bar</Entry></ExemptNamespaces>"); VerifyDiagnostics(test, additionalFiles: new[] { exemptionFile }, expectedDiagnostics: GetLRT001ResultAt(11, 5, "FoosClass")); }