Author the root CompileAndVerify function

上级 7aca8346
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports System.Collections.Immutable
Imports System.Linq
Imports System.Xml.Linq
Imports Microsoft.CodeAnalysis.CodeGen
Imports Microsoft.CodeAnalysis.Emit
Imports Microsoft.CodeAnalysis.Test.Utilities
Imports Microsoft.CodeAnalysis.Text
Imports Roslyn.Test.Utilities
Imports Xunit
Public MustInherit Class BasicTestBase
Inherits CommonTestBase
Protected Overloads Function GetCompilationForEmit(
source As IEnumerable(Of String),
additionalRefs() As MetadataReference,
options As VisualBasicCompilationOptions,
parseOptions As VisualBasicParseOptions
) As VisualBasicCompilation
Return DirectCast(MyClass.GetCompilationForEmit(source, additionalRefs, options, parseOptions), VisualBasicCompilation)
End Function
Public Function XCDataToString(Optional data As XCData = Nothing) As String
Return data?.Value.Replace(vbLf, Environment.NewLine)
End Function
......@@ -203,45 +191,6 @@ Public MustInherit Class BasicTestBase
verify)
End Function
Friend Shadows Function CompileAndVerify(
source As String,
allReferences As IEnumerable(Of MetadataReference),
Optional expectedOutput As String = Nothing,
Optional expectedReturnCode As Integer? = Nothing,
Optional args As String() = Nothing,
Optional dependencies As IEnumerable(Of ModuleData) = Nothing,
Optional sourceSymbolValidator As Action(Of ModuleSymbol) = Nothing,
Optional validator As Action(Of PEAssembly) = Nothing,
Optional symbolValidator As Action(Of ModuleSymbol) = Nothing,
Optional expectedSignatures As SignatureDescription() = Nothing,
Optional options As VisualBasicCompilationOptions = Nothing,
Optional parseOptions As VisualBasicParseOptions = Nothing,
Optional emitOptions As EmitOptions = Nothing,
Optional assemblyName As String = Nothing,
Optional verify As Verification = Verification.Passes
) As CompilationVerifier
If options Is Nothing Then
options = If(expectedOutput Is Nothing, TestOptions.ReleaseDll, TestOptions.ReleaseExe)
End If
Dim compilation = CreateEmptyCompilation(source, allReferences, options, parseOptions, assemblyName)
Return MyBase.CompileAndVerifyCommon(
compilation,
Nothing,
dependencies,
Translate(sourceSymbolValidator),
validator,
Translate(symbolValidator),
expectedSignatures,
expectedOutput,
expectedReturnCode,
args,
emitOptions,
verify)
End Function
Friend Shadows Function CompileAndVerifyOnWin8Only(
source As XElement,
allReferences As IEnumerable(Of MetadataReference),
......@@ -333,6 +282,46 @@ Public MustInherit Class BasicTestBase
useLatestFramework:=useLatestFramework)
End Function
Friend Shadows Function CompileAndVerifyEx(
source As BasicTestSource,
Optional references As IEnumerable(Of MetadataReference) = Nothing,
Optional expectedOutput As String = Nothing,
Optional expectedReturnCode As Integer? = Nothing,
Optional args As String() = Nothing,
Optional dependencies As IEnumerable(Of ModuleData) = Nothing,
Optional sourceSymbolValidator As Action(Of ModuleSymbol) = Nothing,
Optional validator As Action(Of PEAssembly) = Nothing,
Optional symbolValidator As Action(Of ModuleSymbol) = Nothing,
Optional expectedSignatures As SignatureDescription() = Nothing,
Optional options As VisualBasicCompilationOptions = Nothing,
Optional parseOptions As VisualBasicParseOptions = Nothing,
Optional emitOptions As EmitOptions = Nothing,
Optional assemblyName As String = Nothing,
Optional verify As Verification = Verification.Passes,
Optional targetFramework As TargetFramework = TargetFramework.StandardAndVBRuntime
) As CompilationVerifier
If options Is Nothing Then
options = If(expectedOutput Is Nothing, TestOptions.ReleaseDll, TestOptions.ReleaseExe)
End If
Dim compilation = CreateCompilation(source, references, options, parseOptions, targetFramework, assemblyName)
Return MyBase.CompileAndVerifyCommon(
compilation,
Nothing,
dependencies,
Translate(sourceSymbolValidator),
validator,
Translate(symbolValidator),
expectedSignatures,
expectedOutput,
expectedReturnCode,
args,
emitOptions,
verify)
End Function
''' <summary>
''' Compile sources and adds a custom reference using a custom IL
''' </summary>
......
......@@ -7,6 +7,7 @@ Imports Microsoft.CodeAnalysis.Test.Utilities
Imports Microsoft.CodeAnalysis.Test.Utilities.VBInstrumentationChecker
Imports Microsoft.CodeAnalysis.VisualBasic
Imports Microsoft.CodeAnalysis.VisualBasic.UnitTests
Imports Roslyn.Test.Utilities
Namespace Microsoft.CodeAnalysis.VisualBasic.DynamicAnalysis.UnitTests
......@@ -2825,11 +2826,12 @@ True
End Function
Private Overloads Function CompileAndVerify(source As String, Optional expectedOutput As String = Nothing, Optional options As VisualBasicCompilationOptions = Nothing) As CompilationVerifier
Return CompileAndVerify(source,
Return CompileAndVerifyEx(source,
LatestVbReferences,
expectedOutput,
options:=If(options, TestOptions.ReleaseExe).WithDeterministic(True),
emitOptions:=EmitOptions.Default.WithInstrumentationKinds(ImmutableArray.Create(InstrumentationKind.TestCoverage)))
emitOptions:=EmitOptions.Default.WithInstrumentationKinds(ImmutableArray.Create(InstrumentationKind.TestCoverage)),
targetFramework:=TargetFramework.Empty)
End Function
End Class
End Namespace
......@@ -977,7 +977,7 @@ Class C
End Try
End Function
End Class"
Dim v = CompileAndVerify(src, LatestVbReferences, options:=TestOptions.DebugDll)
Dim v = CompileAndVerifyEx(src, references:=LatestVbReferences, options:=TestOptions.DebugDll, targetFramework:=TargetFramework.Empty)
v.VerifyPdb("C+VB$StateMachine_1_M.MoveNext",
<symbols>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册