/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Analyzers/VisualBasic/Tests/FileHeaders/FileHeaderTests.vb
420 строк
15 KB
Cyrus Najmabadi
Update vb analyzer tests
07 мар 2023, 04:21
07 мар 2023, 04:21
24f867f
Код
Авторство
О чём код?
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports Microsoft.CodeAnalysis.Formatting Imports VerifyVB = Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions.VisualBasicCodeFixVerifier(Of Microsoft.CodeAnalysis.VisualBasic.FileHeaders.VisualBasicFileHeaderDiagnosticAnalyzer, Microsoft.CodeAnalysis.VisualBasic.FileHeaders.VisualBasicFileHeaderCodeFixProvider) Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.FileHeaders Public Class FileHeaderTests Private Const TestSettings As String = " [*.vb] file_header_template = Copyright (c) SomeCorp. All rights reserved.\nLicensed under the ??? license. See LICENSE file in the project root for full license information. " Private Const TestSettingsWithEmptyLines As String = " [*.vb] file_header_template = \nCopyright (c) SomeCorp. All rights reserved.\n\nLicensed under the ??? license. See LICENSE file in the project root for full license information.\n " ''' <summary> ''' Verifies that the analyzer will not report a diagnostic when the file header is not configured. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Theory> <InlineData("")> <InlineData("file_header_template =")> <InlineData("file_header_template = unset")> Public Async Function TestFileHeaderNotConfiguredAsync(fileHeaderTemplate As String) As Task Dim testCode = "Namespace N End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = testCode, .EditorConfig = $" [*] {fileHeaderTemplate} " }.RunAsync() End Function ''' <summary> ''' Verifies that the analyzer will report a diagnostic when the file is completely missing a header. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Theory> <InlineData(vbLf)> <InlineData(vbCrLf)> <WorkItem("https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1414432")> Public Async Function TestNoFileHeaderAsync(lineEnding As String) As Task Dim testCode = "[||]Namespace N End Namespace " Dim fixedCode = "' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Namespace N End Namespace " Dim test As VerifyVB.Test = New VerifyVB.Test With { .TestCode = testCode.ReplaceLineEndings(lineEnding), .FixedCode = fixedCode.ReplaceLineEndings(lineEnding), .EditorConfig = TestSettings } test.Options.Add(FormattingOptions2.NewLine, lineEnding) Await test.RunAsync() End Function ''' <summary> ''' Verifies that the analyzer will report a diagnostic when the file is completely missing a header. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Fact> Public Async Function TestNoFileHeaderWithUsingDirectiveAsync() As Task Dim testCode = "[||]Imports System Namespace N End Namespace " Dim fixedCode = "' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Imports System Namespace N End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = TestSettings }.RunAsync() End Function ''' <summary> ''' Verifies that the analyzer will report a diagnostic when the file is completely missing a header. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Fact> Public Async Function TestNoFileHeaderWithBlankLineAndUsingDirectiveAsync() As Task Dim testCode = "[||] Imports System Namespace N End Namespace " Dim fixedCode = "' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Imports System Namespace N End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = TestSettings }.RunAsync() End Function ''' <summary> ''' Verifies that the analyzer will report a diagnostic when the file is completely missing a header. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Fact> Public Async Function TestNoFileHeaderWithWhitespaceLineAsync() As Task Dim testCode = "[||] " & " Imports System Namespace N End Namespace " Dim fixedCode = "' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Imports System Namespace N End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = TestSettings }.RunAsync() End Function ''' <summary> ''' Verifies that the built-in variable <c>fileName</c> works as expected. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Fact> Public Async Function TestFileNameBuiltInVariableAsync() As Task Dim editorConfig = " [*.vb] file_header_template = {fileName} Copyright (c) SomeCorp. All rights reserved.\nLicensed under the ??? license. See LICENSE file in the project root for full license information. " Dim testCode = "[||]Namespace N End Namespace " Dim fixedCode = "' Test0.vb Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Namespace N End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = editorConfig }.RunAsync() End Function ''' <summary> ''' Verifies that a valid file header built using single line comments will not produce a diagnostic message. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Fact> Public Async Function TestValidFileHeaderWithSingleLineCommentsAsync() As Task Dim testCode = "' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Namespace Bar End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = testCode, .EditorConfig = TestSettings }.RunAsync() End Function ''' <summary> ''' Verifies that a file header without text / only whitespace will produce the expected diagnostic message. ''' </summary> ''' <param name="comment">The comment text.</param> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Theory> <InlineData("[|'|]")> <InlineData("[|'|] ")> Public Async Function TestInvalidFileHeaderWithoutTextAsync(comment As String) As Task Dim testCode = $"{comment} Namespace Bar End Namespace " Dim fixedCode = "' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Namespace Bar End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = TestSettings }.RunAsync() End Function ''' <summary> ''' Verifies that an invalid file header built using single line comments will produce the expected diagnostic message. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Fact> Public Async Function TestInvalidFileHeaderWithWrongTextAsync() As Task Dim testCode = "[|'|] Copyright (c) OtherCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Namespace Bar End Namespace " Dim fixedCode = "' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Namespace Bar End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = TestSettings }.RunAsync() End Function ''' <summary> ''' Verifies that an invalid file header built using single line comments will produce the expected diagnostic message. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Theory> <InlineData("", "")> <InlineData(" ' Header", "")> <InlineData(" ' Header", " ' Header")> Public Async Function TestValidFileHeaderInRegionAsync(startLabel As String, endLabel As String) As Task Dim testCode = $"#Region ""Header""{startLabel} ' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. #End Region{endLabel} Namespace Bar End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = testCode, .EditorConfig = TestSettings }.RunAsync() End Function ''' <summary> ''' Verifies that an invalid file header built using single line comments will produce the expected diagnostic message. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Theory> <InlineData("", "")> <InlineData(" ' Header", "")> <InlineData(" ' Header", " ' Header")> Public Async Function TestInvalidFileHeaderWithWrongTextInRegionAsync(startLabel As String, endLabel As String) As Task Dim testCode = $"#Region ""Header""{startLabel} [|'|] Copyright (c) OtherCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. #End Region{endLabel} Namespace Bar End Namespace " Dim fixedCode = $"' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. #Region ""Header""{startLabel} ' Copyright (c) OtherCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. #End Region{endLabel} Namespace Bar End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = TestSettings }.RunAsync() End Function ''' <summary> ''' Verifies that an invalid file header built using single line comments will produce the expected diagnostic message. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Theory> <InlineData("")> <InlineData(" ")> Public Async Function TestInvalidFileHeaderWithWrongTextAfterBlankLineAsync(firstLine As String) As Task Dim testCode = $"{firstLine} [|'|] Copyright (c) OtherCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Namespace Bar End Namespace " Dim fixedCode = "' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Namespace Bar End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = TestSettings }.RunAsync() End Function ''' <summary> ''' Verifies that an invalid file header built using single line comments will produce the expected diagnostic message. ''' </summary> ''' <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns> <Fact> Public Async Function TestInvalidFileHeaderWithWrongTextFollowedByCommentAsync() As Task Dim testCode = "[|'|] Copyright (c) OtherCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. 'Imports System Namespace Bar End Namespace " Dim fixedCode = "' Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. 'Imports System Namespace Bar End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = TestSettings }.RunAsync() End Function <Fact> Public Async Function TestHeaderMissingRequiredNewLinesAsync() As Task Dim testCode = "[|'|] Copyright (c) SomeCorp. All rights reserved. ' Licensed under the ??? license. See LICENSE file in the project root for full license information. Namespace Bar End Namespace " Dim fixedCode = "' ' Copyright (c) SomeCorp. All rights reserved. ' ' Licensed under the ??? license. See LICENSE file in the project root for full license information. ' Namespace Bar End Namespace " Await New VerifyVB.Test With { .TestCode = testCode, .FixedCode = fixedCode, .EditorConfig = TestSettingsWithEmptyLines }.RunAsync() End Function End Class End Namespace