VisualStudioWorkspaceDiagnosticAnalyzerProviderServiceTests.vb 3.8 KB
Newer Older
H
Heejae Chang 已提交
1 2
' Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.

3
Imports System.Collections.Immutable
H
Heejae Chang 已提交
4
Imports Microsoft.CodeAnalysis
5 6
Imports Microsoft.CodeAnalysis.Diagnostics
Imports Microsoft.CodeAnalysis.Test.Utilities
H
Heejae Chang 已提交
7
Imports Microsoft.VisualStudio.LanguageServices.Implementation.Diagnostics
8
Imports Roslyn.Test.Utilities
9
Imports Roslyn.Utilities
H
Heejae Chang 已提交
10 11 12

Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.Diagnostics
    Public Class VisualStudioWorkspaceDiagnosticAnalyzerProviderServiceTests
13
        <Fact>
H
Heejae Chang 已提交
14 15
        Public Sub GetHostAnalyzerPackagesWithNameTest()
            Dim extensionManager = New MockExtensionManager("Microsoft.VisualStudio.Analyzer", "$RootFolder$\test\test.dll", "$ShellFolder$\test\test.dll", "test\test.dll")
G
Gen Lu 已提交
16
            Dim packages = VisualStudioWorkspaceDiagnosticAnalyzerProviderService.GetHostAnalyzerPackagesWithName(extensionManager, GetType(MockExtensionManager.MockContent))
H
Heejae Chang 已提交
17 18 19 20

            Assert.Equal(packages.Count(), 3)

            Assert.Equal(packages(0).Name, "Vsix")
H
Heejae Chang 已提交
21
            Assert.Equal(packages(0).Assemblies.Length, 3)
H
Heejae Chang 已提交
22 23 24
            Assert.Equal(packages(0).Assemblies(0), "ResolvedRootFolder\test\test.dll")

            Assert.Equal(packages(1).Name, "Vsix")
H
Heejae Chang 已提交
25
            Assert.Equal(packages(1).Assemblies.Length, 3)
H
Heejae Chang 已提交
26 27 28
            Assert.Equal(packages(1).Assemblies(0), "ResolvedShellFolder\test\test.dll")

            Assert.Equal(packages(2).Name, "Vsix")
H
Heejae Chang 已提交
29
            Assert.Equal(packages(2).Assemblies.Length, 3)
H
Heejae Chang 已提交
30 31 32
            Assert.Equal(packages(2).Assemblies(0), "\InstallPath\test\test.dll")
        End Sub

33
        <Fact>
H
Heejae Chang 已提交
34 35 36 37 38 39 40 41 42 43 44 45
        Public Sub GetHostAnalyzerPackagesTest()
            Dim extensionManager = New MockExtensionManager("Microsoft.VisualStudio.Analyzer", "installPath1", "installPath2", "installPath3")
            Dim packages = VisualStudioWorkspaceDiagnosticAnalyzerProviderService.GetHostAnalyzerPackages(extensionManager)

            Assert.Equal(packages.Count(), 1)

            Assert.Null(packages(0).Name)
            Assert.Equal(packages(0).Assemblies.Length, 3)
            Assert.Equal(packages(0).Assemblies(0), "installPath1")
            Assert.Equal(packages(0).Assemblies(1), "installPath2")
            Assert.Equal(packages(0).Assemblies(2), "installPath3")
        End Sub
46

47
        <Fact, WorkItem(6285, "https://github.com/dotnet/roslyn/issues/6285")>
48 49 50
        Public Sub TestHostAnalyzerAssemblyLoader()
            Using tempRoot = New TempRoot
                Dim dir = tempRoot.CreateDirectory
A
Andy Gocke 已提交
51
                Dim analyzerFile = DesktopTestHelpers.CreateCSharpAnalyzerAssemblyWithTestAnalyzer(dir, "TestAnalyzer")
52
                Dim analyzerPackage = New HostDiagnosticAnalyzerPackage("MyPackage", ImmutableArray.Create(analyzerFile.Path))
53
                Dim analyzerPackages = ImmutableArray.Create(analyzerPackage)
54
                Dim analyzerLoader = VisualStudioWorkspaceDiagnosticAnalyzerProviderService.GetLoader()
55 56 57 58
                Dim hostAnalyzerManager = New HostAnalyzerManager(New Lazy(Of ImmutableArray(Of HostDiagnosticAnalyzerPackage))(
                                                                  Function() analyzerPackages), analyzerLoader,
                                                                  hostDiagnosticUpdateSource:=Nothing,
                                                                  primaryWorkspace:=Nothing)
59 60 61 62 63 64 65
                Dim analyzerReferenceMap = hostAnalyzerManager.GetHostDiagnosticAnalyzersPerReference(LanguageNames.CSharp)
                Assert.Single(analyzerReferenceMap)
                Dim analyzers = analyzerReferenceMap.Single().Value
                Assert.Single(analyzers)
                Assert.Equal("TestAnalyzer", analyzers(0).ToString)
            End Using
        End Sub
H
Heejae Chang 已提交
66 67
    End Class
End Namespace