diff --git a/src/Compilers/Test/Utilities/VisualBasic/TestOptions.vb b/src/Compilers/Test/Utilities/VisualBasic/TestOptions.vb index 005e42b788fe21bef395294bca4b66443020f33a..7704106690b590090ec989033626dddce122bc96 100644 --- a/src/Compilers/Test/Utilities/VisualBasic/TestOptions.vb +++ b/src/Compilers/Test/Utilities/VisualBasic/TestOptions.vb @@ -2,12 +2,14 @@ Imports System.Runtime.CompilerServices Imports Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax +Imports Roslyn.Test.Utilities Public Class TestOptions Public Shared ReadOnly Script As New VisualBasicParseOptions(kind:=SourceCodeKind.Script) ' https://github.com/dotnet/roslyn/issues/29819 remove explicit language version when VB 16 is latest Public Shared ReadOnly Regular As New VisualBasicParseOptions(kind:=SourceCodeKind.Regular, languageVersion:=LanguageVersion.VisualBasic16) Public Shared ReadOnly Regular15_5 As VisualBasicParseOptions = Regular.WithLanguageVersion(LanguageVersion.VisualBasic15_5) + Public Shared ReadOnly RegularWithLegacyStrongName As VisualBasicParseOptions = Regular.WithFeature("UseLegacyStrongNameProvider") Public Shared ReadOnly ReleaseDll As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(OutputKind.DynamicallyLinkedLibrary, optimizationLevel:=OptimizationLevel.Release).WithParseOptions(Regular) Public Shared ReadOnly ReleaseExe As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(OutputKind.ConsoleApplication, optimizationLevel:=OptimizationLevel.Release).WithParseOptions(Regular) @@ -24,12 +26,23 @@ Public Class TestOptions Public Shared ReadOnly ReleaseModule As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(OutputKind.NetModule, optimizationLevel:=OptimizationLevel.Release).WithParseOptions(Regular) Public Shared ReadOnly ReleaseWinMD As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(OutputKind.WindowsRuntimeMetadata, optimizationLevel:=OptimizationLevel.Release).WithParseOptions(Regular) Public Shared ReadOnly DebugWinMD As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(OutputKind.WindowsRuntimeMetadata, optimizationLevel:=OptimizationLevel.Debug).WithParseOptions(Regular) + + Public Shared ReadOnly SigningReleaseDll As VisualBasicCompilationOptions = ReleaseDll.WithStrongNameProvider(SigningTestHelpers.DefaultDesktopStrongNameProvider) + Public Shared ReadOnly SigningReleaseExe As VisualBasicCompilationOptions = ReleaseExe.WithStrongNameProvider(SigningTestHelpers.DefaultDesktopStrongNameProvider) + Public Shared ReadOnly SigningDebugDll As VisualBasicCompilationOptions = DebugDll.WithStrongNameProvider(SigningTestHelpers.DefaultDesktopStrongNameProvider) + Public Shared ReadOnly SigningDebugExe As VisualBasicCompilationOptions = DebugExe.WithStrongNameProvider(SigningTestHelpers.DefaultDesktopStrongNameProvider) + Public Shared ReadOnly SigningReleaseModule As VisualBasicCompilationOptions = SigningReleaseModule.WithStrongNameProvider(SigningTestHelpers.DefaultDesktopStrongNameProvider) End Class Friend Module TestOptionExtensions Public Function WithStrictFeature(options As VisualBasicParseOptions) As VisualBasicParseOptions - Return options.WithFeatures(options.Features.Concat(New KeyValuePair(Of String, String)() {New KeyValuePair(Of String, String)("Strict", "true")})) + Return WithFeature(options, "Strict") + End Function + + + Public Function WithFeature(options As VisualBasicParseOptions, feature As String, Optional value As String = "True") As VisualBasicParseOptions + Return options.WithFeatures(options.Features.Concat(New KeyValuePair(Of String, String)() {New KeyValuePair(Of String, String)(feature, value)})) End Function diff --git a/src/Compilers/VisualBasic/Test/Emit/Attributes/EmitTestStrongNameProvider.vb b/src/Compilers/VisualBasic/Test/Emit/Attributes/EmitTestStrongNameProvider.vb index 815f689e1082b2862951fef47013a003d6f87f62..05feb80727d5d865511dc93de67e5254c71f80cf 100644 --- a/src/Compilers/VisualBasic/Test/Emit/Attributes/EmitTestStrongNameProvider.vb +++ b/src/Compilers/VisualBasic/Test/Emit/Attributes/EmitTestStrongNameProvider.vb @@ -38,8 +38,8 @@ Partial Public Class InternalsVisibleToAndStrongNameTests Throw ThrownException End Function - Friend Overrides Function CreateKeys(keyFilePath As String, keyContainerName As String, messageProvider As CommonMessageProvider) As StrongNameKeys - Return _underlyingProvider.CreateKeys(keyFilePath, keyContainerName, messageProvider) + Friend Overrides Function CreateKeys(keyFilePath As String, keyContainerName As String, hasCounterSigature As Boolean, messageProvider As CommonMessageProvider) As StrongNameKeys + Return _underlyingProvider.CreateKeys(keyFilePath, keyContainerName, hasCounterSigature, messageProvider) End Function Friend Overrides Sub SignStream(keys As StrongNameKeys, inputStream As Stream, outputStream As Stream) diff --git a/src/Compilers/VisualBasic/Test/Emit/Attributes/InternalsVisibleToAndStrongNameTests.vb b/src/Compilers/VisualBasic/Test/Emit/Attributes/InternalsVisibleToAndStrongNameTests.vb index 56990c6379e19b8baad65a68faf0c22ab3052d3d..96d40dcb396766871a19aae39c0cdbe2c7f9cd2d 100644 --- a/src/Compilers/VisualBasic/Test/Emit/Attributes/InternalsVisibleToAndStrongNameTests.vb +++ b/src/Compilers/VisualBasic/Test/Emit/Attributes/InternalsVisibleToAndStrongNameTests.vb @@ -1,6 +1,6 @@ ' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -#If NET472 +Imports System.Collections.Generic Imports System.Collections.Immutable Imports System.IO Imports System.Reflection.Metadata @@ -18,6 +18,22 @@ Imports Roslyn.Test.Utilities.SigningTestHelpers Partial Public Class InternalsVisibleToAndStrongNameTests Inherits BasicTestBase + Public Shared ReadOnly Property AllProviderParseOptions As IEnumerable(Of Object()) + Get + If ExecutionConditionUtil.IsWindows Then + Return New Object()() { + New Object() {TestOptions.Regular}, + New Object() {TestOptions.RegularWithLegacyStrongName} + } + End If + + Return SpecializedCollections.SingletonEnumerable( + New Object() {TestOptions.Regular} + ) + End Get + End Property + + #Region "Helpers" Public Sub New() @@ -57,7 +73,7 @@ Partial Public Class InternalsVisibleToAndStrongNameTests g.ToString(), {VisualBasicSyntaxTree.ParseText(s)}, {MscorlibRef}, - TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + TestOptions.SigningReleaseDll) other.VerifyDiagnostics() Assert.True(ByteSequenceComparer.Equals(s_publicKey, other.Assembly.Identity.PublicKey)) @@ -75,7 +91,7 @@ Partial Public Class InternalsVisibleToAndStrongNameTests Dim syntaxTree = ParseAndVerify(s) ' verify failure with default assembly key file resolver - Dim comp = CreateCompilationWithMscorlib40({syntaxTree}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + Dim comp = CreateCompilationWithMscorlib40({syntaxTree}, options:=TestOptions.SigningReleaseDll) comp.VerifyDiagnostics( Diagnostic(ERRID.ERR_PublicKeyFileFailure).WithArguments(keyFileName, CodeAnalysisResources.FileNotFound)) @@ -104,7 +120,7 @@ Partial Public Class InternalsVisibleToAndStrongNameTests Dim syntaxTree = ParseAndVerify(s) ' verify failure with default assembly key file resolver - Dim comp As Compilation = CreateCompilationWithMscorlib40({syntaxTree}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + Dim comp As Compilation = CreateCompilationWithMscorlib40({syntaxTree}, options:=TestOptions.SigningReleaseDll) comp.VerifyDiagnostics( Diagnostic(ERRID.ERR_PublicKeyFileFailure).WithArguments("..\" & keyFileName, CodeAnalysisResources.FileNotFound)) @@ -133,7 +149,7 @@ Public Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) other.VerifyDiagnostics() Assert.True(ByteSequenceComparer.Equals(s_publicKey, other.Assembly.Identity.PublicKey)) @@ -151,7 +167,7 @@ End Class ]]> , - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) other.VerifyDiagnostics() Assert.True(ByteSequenceComparer.Equals(s_publicKey, other.Assembly.Identity.PublicKey)) @@ -176,7 +192,7 @@ End Class GetUniqueName(), references:=references, syntaxTrees:=syntaxTrees, - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(keyFileName).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(keyFileName)) comp.VerifyDiagnostics( Diagnostic(ERRID.ERR_PublicKeyFileFailure).WithArguments(keyFileName, CodeAnalysisResources.FileNotFound)) @@ -206,7 +222,7 @@ End Class ]]> - Dim other = CreateCompilationWithMscorlib40(s, options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) + Dim other = CreateCompilationWithMscorlib40(s, options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True)) Assert.Empty(other.GetDiagnostics()) Assert.True(ByteSequenceComparer.Equals(TestResources.General.snPublicKey.AsImmutableOrNull(), other.Assembly.Identity.PublicKey)) @@ -232,7 +248,7 @@ End Class GetUniqueName(), references:=references, syntaxTrees:=syntaxTrees, - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(publicKeyFileName).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(publicKeyFileName).WithDelaySign(True)) ' error CS7027: Error extracting public key from file 'PublicKeyFile.snk' -- File not found. ' warning CS7033: Delay signing was specified and requires a public key, but no public key was specified @@ -264,7 +280,7 @@ End Class ]]> , - options:=TestOptions.ReleaseExe.WithCryptoKeyFile("goo").WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseExe.WithCryptoKeyFile("goo")) CompilationUtils.AssertTheseDeclarationDiagnostics(other, @@ -286,7 +302,7 @@ Public Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) other.VerifyDiagnostics() Assert.True(other.Assembly.Identity.PublicKey.IsEmpty) @@ -304,7 +320,7 @@ Public Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) other.VerifyDiagnostics() Assert.True(other.Assembly.Identity.PublicKey.IsEmpty) @@ -412,11 +428,10 @@ End Class - Dim c = CreateCompilationWithMscorlib40(source, options:=TestOptions.ReleaseDll. + Dim c = CreateCompilationWithMscorlib40(source, options:=TestOptions.SigningReleaseDll. WithCryptoPublicKey(ImmutableArray.Create(Of Byte)(1, 2, 3)). WithCryptoKeyContainer("roslynTestContainer"). - WithCryptoKeyFile("file.snk"). - WithStrongNameProvider(s_defaultDesktopProvider)) + WithCryptoKeyFile("file.snk")) AssertTheseDiagnostics(c, @@ -459,7 +474,7 @@ Public Class C End Class ]]> -, options:=TestOptions.ReleaseExe.WithCryptoKeyContainer("goo").WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseExe.WithCryptoKeyContainer("goo")) ' CompilationUtils.AssertTheseDeclarationDiagnostics(other, ' @@ -492,7 +507,7 @@ Public Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) other.VerifyDiagnostics() @@ -508,7 +523,7 @@ Public Class A End Class ]]> -, {New VisualBasicCompilationReference(other)}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(other)}, options:=TestOptions.SigningReleaseDll) 'compilation should not succeed, and internals should not be imported. c.GetDiagnostics() @@ -531,7 +546,7 @@ Public Class A End Class ]]> -, {New VisualBasicCompilationReference(other)}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(other)}, options:=TestOptions.SigningReleaseDll) c2.VerifyDiagnostics() End Sub @@ -548,7 +563,7 @@ Public Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) Dim otherImage = other.EmitToArray() @@ -564,7 +579,7 @@ Public Class A End Class ]]> -, {MetadataReference.CreateFromImage(otherImage)}, TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, {MetadataReference.CreateFromImage(otherImage)}, TestOptions.SigningReleaseDll) 'compilation should not succeed, and internals should not be imported. c.GetDiagnostics() @@ -589,7 +604,7 @@ Public Class A End Class ]]> -, {MetadataReference.CreateFromImage(otherImage)}, TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, {MetadataReference.CreateFromImage(otherImage)}, TestOptions.SigningReleaseDll) c2.VerifyDiagnostics() End Sub @@ -604,7 +619,7 @@ Public Class A End Class ]]> -, options:=TestOptions.ReleaseModule.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseModule) 'shouldn't have an error. The attribute's contents are checked when the module is added. Dim reference = c1.EmitToImageReference() @@ -616,7 +631,7 @@ Public Class C End Class ]]> - ), {reference}, TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + ), {reference}, TestOptions.SigningReleaseDll) 'BC36981: Error extracting public key from container 'bogus': Keyset does not exist (Exception from HRESULT: 0x80090016) 'c2.VerifyDiagnostics(Diagnostic(ERRID.ERR_PublicKeyContainerFailure).WithArguments("bogus", "Keyset does not exist (Exception from HRESULT: 0x80090016)")) @@ -641,7 +656,7 @@ Public Class A End Class ]]> -, options:=TestOptions.ReleaseModule.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseModule) 'shouldn't have an error. The attribute's contents are checked when the module is added. Dim reference = c1.EmitToImageReference() @@ -653,7 +668,7 @@ Public Class C End Class ]]> - ), {reference}, TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + ), {reference}, TestOptions.SigningReleaseDll) c2.VerifyDiagnostics(Diagnostic(ERRID.ERR_PublicKeyFileFailure).WithArguments("bogus", CodeAnalysisResources.FileNotFound)) End Sub @@ -670,7 +685,7 @@ Friend Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True)) other.VerifyDiagnostics() @@ -685,7 +700,7 @@ End Class ]]> , -{New VisualBasicCompilationReference(other)}, TestOptions.ReleaseDll.WithCryptoKeyContainer("roslynTestContainer").WithStrongNameProvider(s_defaultDesktopProvider)) +{New VisualBasicCompilationReference(other)}, TestOptions.SigningReleaseDll.WithCryptoKeyContainer("roslynTestContainer")) Dim unused = requestor.Assembly.Identity requestor.VerifyDiagnostics() @@ -703,7 +718,7 @@ Friend Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) other.VerifyDiagnostics() @@ -717,7 +732,7 @@ Public Class A End Class ]]> -, {New VisualBasicCompilationReference(other)}, TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(other)}, TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True)) Dim unused = requestor.Assembly.Identity 'gives "is not accessible" error because internals were imported because IVT was found @@ -740,7 +755,7 @@ Friend Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) other.VerifyDiagnostics() @@ -754,7 +769,7 @@ Public Class A End Class ]]> -, {New VisualBasicCompilationReference(other)}, TestOptions.ReleaseModule.WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(other)}, TestOptions.SigningReleaseModule) Dim unused = requestor.Assembly.Identity CompilationUtils.AssertTheseDiagnostics(requestor, ) @@ -768,7 +783,7 @@ End Class assemblyName:="Paul", syntaxTrees:={CSharp.CSharpSyntaxTree.ParseText(cSource)}, references:={MscorlibRef_v4_0_30316_17626}, - options:=New CSharp.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=New CSharp.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary).WithStrongNameProvider(DefaultDesktopStrongNameProvider)) other.VerifyDiagnostics() @@ -782,7 +797,7 @@ Public Class A End Class ]]> -, {MetadataReference.CreateFromImage(other.EmitToArray())}, TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) +, {MetadataReference.CreateFromImage(other.EmitToArray())}, TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True)) Dim unused = requestor.Assembly.Identity 'gives "is not accessible" error because internals were imported because IVT was found @@ -805,7 +820,7 @@ Friend Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True)) other.VerifyDiagnostics() Dim requestor As VisualBasicCompilation = CreateCompilationWithMscorlib40AndReferences( @@ -817,7 +832,7 @@ Public Class A End Class ]]> -, {New VisualBasicCompilationReference(other)}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(other)}, options:=TestOptions.SigningReleaseDll) Dim unused = requestor.Assembly.Identity Assert.True(DirectCast(other.Assembly, IAssemblySymbol).GivesAccessTo(requestor.Assembly)) @@ -836,7 +851,7 @@ Friend Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) other.VerifyDiagnostics() @@ -849,7 +864,7 @@ Public Class A End Class ]]> -, {New VisualBasicCompilationReference(other)}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(other)}, options:=TestOptions.SigningReleaseDll) Dim unused = requestor.Assembly.Identity CompilationUtils.AssertTheseDiagnostics(requestor, @@ -869,7 +884,7 @@ Friend Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithCryptoKeyContainer("roslynTestContainer").WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll.WithCryptoKeyContainer("roslynTestContainer")) other.VerifyDiagnostics() @@ -882,7 +897,7 @@ Public Class A End Class ]]> -, {New VisualBasicCompilationReference(other)}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(other)}, options:=TestOptions.SigningReleaseDll) Dim unused = requestor.Assembly.Identity CompilationUtils.AssertTheseDiagnostics(requestor, BC36957: Friend access was granted by 'Paul, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ce65828c82a341f2', but the public key of the output assembly does not match that specified by the attribute in the granting assembly.) @@ -902,7 +917,7 @@ Friend Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithDelaySign(True)) other.VerifyDiagnostics() @@ -915,7 +930,7 @@ Public Class A End Class ]]> -, {New VisualBasicCompilationReference(other)}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(other)}, options:=TestOptions.SigningReleaseDll) Assert.True(DirectCast(other.Assembly, IAssemblySymbol).GivesAccessTo(requestor.Assembly)) End Sub @@ -932,7 +947,7 @@ Friend Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) other.VerifyDiagnostics() @@ -945,7 +960,7 @@ Public Class A End Class ]]> -, {New VisualBasicCompilationReference(other)}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(other)}, options:=TestOptions.SigningReleaseDll) Assert.False(DirectCast(other.Assembly, IAssemblySymbol).GivesAccessTo(requestor.Assembly)) End Sub @@ -965,7 +980,7 @@ Namespace ClassLibrary end Namespace ]]> -, options:=TestOptions.ReleaseDll.WithCryptoKeyFile(SigningTestHelpers.KeyPairFile2).WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(SigningTestHelpers.KeyPairFile2)) giver.VerifyDiagnostics() @@ -978,7 +993,7 @@ Public Class ClassWithFriendMethod End Class ]]> -, {New VisualBasicCompilationReference(giver)}, options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(giver)}, options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) Assert.True(DirectCast(giver.Assembly, IAssemblySymbol).GivesAccessTo(requestor.Assembly)) Assert.Empty(requestor.GetDiagnostics()) @@ -999,7 +1014,7 @@ Public Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) Dim expectedErrors = -, options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) Dim expectedErrors = , - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(SigningTestHelpers.MaxSizeKeyFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(SigningTestHelpers.MaxSizeKeyFile)) comp.VerifyEmitDiagnostics() @@ -1077,14 +1092,14 @@ End Class Dim comp2 = CreateCompilation(src, references:={comp.ToMetadataReference()}, -options:=TestOptions.ReleaseExe.WithCryptoKeyFile(SigningTestHelpers.MaxSizeKeyFile).WithStrongNameProvider(s_defaultDesktopProvider)) +options:=TestOptions.SigningReleaseExe.WithCryptoKeyFile(SigningTestHelpers.MaxSizeKeyFile)) CompileAndVerify(comp2, expectedOutput:="Called M") Assert.Equal(TestResources.General.snMaxSizePublicKey, comp2.Assembly.Identity.PublicKey) Assert.Equal(Of Byte)(pubKeyTokenBytes, comp2.Assembly.Identity.PublicKeyToken) Dim comp3 = CreateCompilation(src, references:={comp.EmitToImageReference()}, -options:=TestOptions.ReleaseExe.WithCryptoKeyFile(SigningTestHelpers.MaxSizeKeyFile).WithStrongNameProvider(s_defaultDesktopProvider)) +options:=TestOptions.SigningReleaseExe.WithCryptoKeyFile(SigningTestHelpers.MaxSizeKeyFile)) CompileAndVerify(comp3, expectedOutput:="Called M") Assert.Equal(TestResources.General.snMaxSizePublicKey, comp3.Assembly.Identity.PublicKey) @@ -1103,7 +1118,7 @@ End Class ]]> , - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) Dim peHeaders = New PEHeaders(other.EmitToStream()) Assert.Equal(CorFlags.StrongNameSigned, peHeaders.CorHeader.Flags And CorFlags.StrongNameSigned) @@ -1121,7 +1136,7 @@ End Class ]]> , - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_publicKeyFile)) Using outStrm = New MemoryStream() Dim emitResult = other.Emit(outStrm) @@ -1140,7 +1155,7 @@ BC36961: Key file '<%= s_publicKeyFile %>' is missing the private key needed for , {other.EmitToImageReference()}, - options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll) Using outStrm = New MemoryStream() Dim emitResult = assembly.Emit(outStrm) @@ -1165,7 +1180,7 @@ End Class ]]> , - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_publicKeyFile)) CompileAndVerify(other) End Sub @@ -1182,7 +1197,7 @@ Public Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) Dim outStrm = New MemoryStream() Dim emitResult = other.Emit(outStrm) @@ -1203,7 +1218,7 @@ Public Class C End Class ]]> -, options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) Dim outStrm = New MemoryStream() Dim emitResult = other.Emit(outStrm) @@ -1247,7 +1262,7 @@ End Class Dim ilRef = CompileIL(il.Value, prependDefaultHeader:=False) - Dim comp = CreateCompilationWithMscorlib40AndReferences(vb, {ilRef}, TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + Dim comp = CreateCompilationWithMscorlib40AndReferences(vb, {ilRef}, TestOptions.SigningReleaseDll) ' NOTE: dev10 reports ERR_FriendAssemblyNameInvalid, but Roslyn won't (DevDiv #15099). comp.VerifyDiagnostics( @@ -1275,7 +1290,7 @@ Public Class C End Class ]]> -, {MscorlibRef_v4_0_30316_17626}, TestOptions.ReleaseDll.WithDelaySign(True).WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) +, {MscorlibRef_v4_0_30316_17626}, TestOptions.SigningReleaseDll.WithDelaySign(True).WithCryptoKeyFile(s_keyPairFile)) ' confirm header has expected SN signature size Dim peHeaders = New PEHeaders(other.EmitToStream()) @@ -1295,7 +1310,7 @@ End Class "End Class" Dim tree = ParseAndVerify(src) - Dim comp = CreateCompilationWithMscorlib40({tree}, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + Dim comp = CreateCompilationWithMscorlib40({tree}, options:=TestOptions.SigningReleaseDll) ' Native Compiler: 'warning BC41008: Use command-line option '/keycontainer' or appropriate project settings instead of 'System.Reflection.AssemblyKeyNameAttribute() '. @@ -1316,7 +1331,7 @@ End Class Private Sub ConfirmModuleAttributePresentAndAddingToAssemblyResultsInSignedOutput( moduleContents As Stream, expectedModuleAttr As AttributeDescription, - legacyStrongName As Boolean) + parseOptions As VisualBasicParseOptions) ' a module doesn't get signed for real. It should have either a keyfile or keycontainer attribute ' parked on a typeRef named 'AssemblyAttributesGoHere.' When the module is added to an assembly, the ' resulting assembly is signed with the key referred to by the aforementioned attribute. @@ -1344,14 +1359,13 @@ End Class - Dim snProvider As StrongNameProvider = If(legacyStrongName, s_defaultDesktopProvider, s_defaultPortableProvider) - ' now that the module checks out, ensure that adding it to a compilation outputting a dll ' results in a signed assembly. Dim assemblyComp = CreateCompilationWithMscorlib40AndReferences( source, {metadata.GetReference()}, - TestOptions.ReleaseDll.WithStrongNameProvider(snProvider)) + TestOptions.SigningReleaseDll, + parseOptions) Using finalStrm = tempFile.Open() success = assemblyComp.Emit(finalStrm) @@ -1370,32 +1384,9 @@ End Class End Using End Sub - - Public Sub SignModuleKeyFileAttr_Legacy() - Dim x = s_keyPairFile - - Dim source = - - - Assembly: System.Reflection.AssemblyKeyFile("<%= x %>")> - -Public Class C -End Class - - - - Dim other = CreateCompilationWithMscorlib40( - source, - options:=TestOptions.ReleaseModule.WithStrongNameProvider(s_defaultDesktopProvider)) - - ConfirmModuleAttributePresentAndAddingToAssemblyResultsInSignedOutput( - other.EmitToStream(), - AttributeDescription.AssemblyKeyFileAttribute, - legacyStrongName:=True) - End Sub - - - Public Sub SignModuleKeyContainerAttr() + + + Public Sub SignModuleKeyContainerAttr(parseOptions As VisualBasicParseOptions) Dim source = @@ -1406,7 +1397,7 @@ End Class - Dim other = CreateCompilationWithMscorlib40(source, options:=TestOptions.ReleaseModule.WithStrongNameProvider(s_defaultDesktopProvider)) + Dim other = CreateCompilationWithMscorlib40(source, options:=TestOptions.SigningReleaseModule) Dim outStrm = New MemoryStream() Dim success = other.Emit(outStrm) @@ -1415,12 +1406,13 @@ End Class ConfirmModuleAttributePresentAndAddingToAssemblyResultsInSignedOutput( outStrm, AttributeDescription.AssemblyKeyNameAttribute, - legacyStrongName:=True) + parseOptions) End Sub - - Public Sub SignModuleKeyContainerCmdLine() + + + Public Sub SignModuleKeyContainerCmdLine(parseOptions As VisualBasicParseOptions) Dim source = @@ -1429,7 +1421,7 @@ End Class - Dim other = CreateCompilationWithMscorlib40(source, options:=TestOptions.ReleaseModule.WithCryptoKeyContainer("roslynTestContainer").WithStrongNameProvider(s_defaultDesktopProvider)) + Dim other = CreateCompilationWithMscorlib40(source, options:=TestOptions.SigningReleaseModule.WithCryptoKeyContainer("roslynTestContainer")) Dim outStrm = New MemoryStream() Dim success = other.Emit(outStrm) @@ -1438,12 +1430,13 @@ End Class ConfirmModuleAttributePresentAndAddingToAssemblyResultsInSignedOutput( outStrm, AttributeDescription.AssemblyKeyNameAttribute, - legacyStrongName:=True) + parseOptions) End Sub - - Public Sub SignModuleKeyContainerCmdLine_1() + + + Public Sub SignModuleKeyContainerCmdLine_1(parseOptions As VisualBasicParseOptions) Dim source = - Public Sub SignModuleKeyFileAttr() + + + Public Sub SignModuleKeyFileAttr(parseOptions As VisualBasicParseOptions) Dim x = s_keyPairFile Dim source = @@ -1484,12 +1478,12 @@ End Class Dim other = CreateCompilationWithMscorlib40( source, - options:=TestOptions.ReleaseModule.WithStrongNameProvider(s_defaultPortableProvider)) + options:=TestOptions.SigningReleaseModule) ConfirmModuleAttributePresentAndAddingToAssemblyResultsInSignedOutput( other.EmitToStream(), AttributeDescription.AssemblyKeyFileAttribute, - legacyStrongName:=False) + parseOptions) End Sub @@ -1505,7 +1499,7 @@ End Class ]]> - Dim other = CreateCompilationWithMscorlib40(source, options:=TestOptions.ReleaseModule.WithCryptoKeyContainer("roslynTestContainer").WithStrongNameProvider(s_defaultDesktopProvider)) + Dim other = CreateCompilationWithMscorlib40(source, options:=TestOptions.SigningReleaseModule.WithCryptoKeyContainer("roslynTestContainer")) AssertTheseDiagnostics(other, @@ -1514,39 +1508,12 @@ BC37207: Attribute 'System.Reflection.AssemblyKeyNameAttribute' given in a sourc End Sub - - Public Sub SignModuleKeyFileCmdLine_Legacy() - Dim source = - - -Public Class C -End Class - - - - Dim other = CreateCompilationWithMscorlib40( - source, - options:=TestOptions.ReleaseModule.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) - - Dim outStrm = New MemoryStream() - Dim success = other.Emit(outStrm) - Assert.True(success.Success) - - ConfirmModuleAttributePresentAndAddingToAssemblyResultsInSignedOutput( - outStrm, - AttributeDescription.AssemblyKeyFileAttribute, - legacyStrongName:=True) - End Sub - - - - Public Sub SignModuleKeyFileCmdLine_1_Legacy() - Dim x = s_keyPairFile + + + Public Sub SignModuleKeyFileCmdLine(parseOptions As VisualBasicParseOptions) Dim source = - assembly: System.Reflection.AssemblyKeyFile("<%= x %>")> - Public Class C End Class @@ -1554,7 +1521,7 @@ End Class Dim other = CreateCompilationWithMscorlib40( source, - options:=TestOptions.ReleaseModule.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseModule.WithCryptoKeyFile(s_keyPairFile)) Dim outStrm = New MemoryStream() Dim success = other.Emit(outStrm) @@ -1563,37 +1530,13 @@ End Class ConfirmModuleAttributePresentAndAddingToAssemblyResultsInSignedOutput( outStrm, AttributeDescription.AssemblyKeyFileAttribute, - legacyStrongName:=True) + parseOptions) End Sub - - Public Sub SignModuleKeyFileCmdLine() - Dim source = - - -Public Class C -End Class - - - - Dim other = CreateCompilationWithMscorlib40( - source, - options:=TestOptions.ReleaseModule.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultPortableProvider)) - - Dim outStrm = New MemoryStream() - Dim success = other.Emit(outStrm) - Assert.True(success.Success) - - ConfirmModuleAttributePresentAndAddingToAssemblyResultsInSignedOutput( - outStrm, - AttributeDescription.AssemblyKeyFileAttribute, - legacyStrongName:=False) - End Sub - - - - Public Sub SignModuleKeyFileCmdLine_1() + + + Public Sub SignModuleKeyFileCmdLine_1(parseOptions As VisualBasicParseOptions) Dim x = s_keyPairFile Dim source = @@ -1607,7 +1550,7 @@ End Class Dim other = CreateCompilationWithMscorlib40( source, - options:=TestOptions.ReleaseModule.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultPortableProvider)) + options:=TestOptions.SigningReleaseModule.WithCryptoKeyFile(s_keyPairFile)) Dim outStrm = New MemoryStream() Dim success = other.Emit(outStrm) @@ -1616,7 +1559,7 @@ End Class ConfirmModuleAttributePresentAndAddingToAssemblyResultsInSignedOutput( outStrm, AttributeDescription.AssemblyKeyFileAttribute, - legacyStrongName:=False) + parseOptions) End Sub @@ -1631,7 +1574,7 @@ End Class - Dim other = CreateCompilationWithMscorlib40(source, options:=TestOptions.ReleaseModule.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) + Dim other = CreateCompilationWithMscorlib40(source, options:=TestOptions.SigningReleaseModule.WithCryptoKeyFile(s_keyPairFile)) AssertTheseDiagnostics(other, @@ -1650,7 +1593,7 @@ End Class ]]> , - options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll) Dim other As VisualBasicCompilation = CreateCompilationWithMscorlib40( @@ -1664,7 +1607,7 @@ End Class ]]> , - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) CompileAndVerify(other.WithReferences({other.References(0), New VisualBasicCompilationReference(unsigned)})).VerifyDiagnostics() @@ -1682,7 +1625,7 @@ End Class ]]> , - options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll) Dim other As VisualBasicCompilation = CreateCompilationWithMscorlib40( @@ -1696,7 +1639,7 @@ End Class ]]> , - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) Dim comps = {other.WithReferences({other.References(0), New VisualBasicCompilationReference(unsigned)}), other.WithReferences({other.References(0), MetadataReference.CreateFromImage(unsigned.EmitToArray)})} @@ -1731,7 +1674,7 @@ End Class ]]> , {MscorlibRef_v4_0_30316_17626}, - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) Dim peHeaders = New PEHeaders(other.EmitToStream()) Assert.Equal(CorFlags.StrongNameSigned, peHeaders.CorHeader.Flags And CorFlags.StrongNameSigned) @@ -1753,7 +1696,7 @@ End Class ]]> , {MscorlibRef_v4_0_30316_17626}, - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) Dim outStrm = New MemoryStream() Dim emitResult = other.Emit(outStrm) @@ -1784,7 +1727,7 @@ End Class ]]> , {MscorlibRef_v4_0_30316_17626}, - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_keyPairFile).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_keyPairFile)) Dim outStrm = New MemoryStream() Dim emitResult = other.Emit(outStrm) @@ -1822,7 +1765,7 @@ End Class ]]> , {MscorlibRef_v4_0_30316_17626}, - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True)) Dim outStrm = New MemoryStream() Dim emitResult = other.Emit(outStrm) @@ -1853,7 +1796,7 @@ End Class ]]> , {MscorlibRef_v4_0_30316_17626}, - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True)) CompileAndVerify(other) End Sub @@ -1874,7 +1817,7 @@ End Class ]]> , {MscorlibRef_v4_0_30316_17626}, - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True)) Dim outStrm = New MemoryStream() Dim emitResult = other.Emit(outStrm) @@ -1905,7 +1848,7 @@ End Class ]]> , {MscorlibRef_v4_0_30316_17626}, - options:=TestOptions.ReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True).WithStrongNameProvider(s_defaultDesktopProvider)) + options:=TestOptions.SigningReleaseDll.WithCryptoKeyFile(s_publicKeyFile).WithDelaySign(True)) CompileAndVerify(other) End Sub @@ -2025,7 +1968,7 @@ BC42379: Attribute 'System.Reflection.AssemblyKeyNameAttribute' is ignored when Public Sub PublicSign_FromKeyFileAndStrongNameProvider() Dim snk = Temp.CreateFile().WriteAllBytes(TestResources.General.snKey2) - Dim options = TestOptions.ReleaseDll.WithCryptoKeyFile(snk.Path).WithPublicSign(True).WithStrongNameProvider(s_defaultDesktopProvider) + Dim options = TestOptions.SigningReleaseDll.WithCryptoKeyFile(snk.Path).WithPublicSign(True) PublicSignCore(options) End Sub @@ -2160,7 +2103,7 @@ Friend Class A Public Value As Integer = 3 End Class ]]> -, options:=TestOptions.ReleaseDll.WithStrongNameProvider(s_defaultDesktopProvider)) +, options:=TestOptions.SigningReleaseDll) CompileAndVerify(ca) @@ -2173,7 +2116,7 @@ Friend Class B End Function End Class ]]> -, {New VisualBasicCompilationReference(ca)}, options:=TestOptions.ReleaseModule.WithStrongNameProvider(s_defaultDesktopProvider)) +, {New VisualBasicCompilationReference(ca)}, options:=TestOptions.SigningReleaseModule) CompileAndVerify(cb, verify:=Verification.Fails).Diagnostics.Verify() End Sub @@ -2294,4 +2237,3 @@ BC37254: Public sign was specified and requires a public key, but no public key End Sub End Class -#End If