Skip to content

remove test dependency on sn.exe #3992

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 22, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions tests/fsharp/FSharp.Tests.FSharpSuite.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,21 @@
<Compile Include="TypeProviderTests.fs" />
<Compile Include="tests.fs" />
<Content Include="packages.config" />
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<Reference Include="mscorlib" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Numerics" />
<Reference Include="System.Collections.Immutable">
<HintPath>$(FSharpSourcesRoot)\..\packages\System.Collections.Immutable.$(SystemCollectionsImmutableVersion)\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Reflection.Metadata">
<HintPath>$(FSharpSourcesRoot)\..\packages\System.Reflection.Metadata.1.4.2\lib\portable-net45+win8\System.Reflection.Metadata.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="nunit.framework">
<HintPath>..\..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll</HintPath>
<Private>True</Private>
Expand Down
11 changes: 11 additions & 0 deletions tests/fsharp/app.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
4 changes: 0 additions & 4 deletions tests/fsharp/core/signedtests/test-sha1-delay-attributes.bsl

This file was deleted.

4 changes: 0 additions & 4 deletions tests/fsharp/core/signedtests/test-sha1-delay-cl.bsl

This file was deleted.

3 changes: 0 additions & 3 deletions tests/fsharp/core/signedtests/test-sha1-full-attributes.bsl

This file was deleted.

3 changes: 0 additions & 3 deletions tests/fsharp/core/signedtests/test-sha1-full-cl.bsl

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions tests/fsharp/core/signedtests/test-sha1024-delay-cl.bsl

This file was deleted.

This file was deleted.

3 changes: 0 additions & 3 deletions tests/fsharp/core/signedtests/test-sha1024-full-cl.bsl

This file was deleted.

4 changes: 0 additions & 4 deletions tests/fsharp/core/signedtests/test-sha1024-public-cl.bsl

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions tests/fsharp/core/signedtests/test-sha256-delay-cl.bsl

This file was deleted.

3 changes: 0 additions & 3 deletions tests/fsharp/core/signedtests/test-sha256-full-attributes.bsl

This file was deleted.

3 changes: 0 additions & 3 deletions tests/fsharp/core/signedtests/test-sha256-full-cl.bsl

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions tests/fsharp/core/signedtests/test-sha512-delay-cl.bsl

This file was deleted.

3 changes: 0 additions & 3 deletions tests/fsharp/core/signedtests/test-sha512-full-attributes.bsl

This file was deleted.

3 changes: 0 additions & 3 deletions tests/fsharp/core/signedtests/test-sha512-full-cl.bsl

This file was deleted.

4 changes: 0 additions & 4 deletions tests/fsharp/core/signedtests/test-unsigned.bsl

This file was deleted.

2 changes: 2 additions & 0 deletions tests/fsharp/packages.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NUnit3TestAdapter" version="3.7.0" targetFramework="net45" />
<package id="System.Collections.Immutable" version="1.3.1" targetFramework="net45" />
<package id="System.Reflection.Metadata" version="1.4.2" targetFramework="net45" />
</packages>
4 changes: 0 additions & 4 deletions tests/fsharp/test-framework.fs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,6 @@ type TestConfig =
FSI_FOR_SCRIPTS : string
fsi_flags : string
ILDASM : string
SN : string
NGEN : string
PEVERIFY : string
Directory: string
Expand Down Expand Up @@ -179,7 +178,6 @@ let config configurationName envVars =
let CSC = requireFile (CORDIR ++ "csc.exe")
let NGEN = requireFile (CORDIR ++ "ngen.exe")
let ILDASM = requireFile (CORSDK ++ "ildasm.exe")
let SN = requireFile (CORSDK ++ "sn.exe")
let PEVERIFY = requireFile (CORSDK ++ "peverify.exe")
let FSI_FOR_SCRIPTS =
match envVars |> Map.tryFind "_fsiexe" with
Expand Down Expand Up @@ -217,7 +215,6 @@ let config configurationName envVars =
FSCBinPath = FSCBinPath |> Commands.pathAddBackslash
FSCOREDLLPATH = FSCOREDLLPATH
ILDASM = ILDASM
SN = SN
NGEN = NGEN
PEVERIFY = PEVERIFY
CSC = CSC
Expand Down Expand Up @@ -452,7 +449,6 @@ let fscAppendErrExpectFail cfg errPath arg = Printf.ksprintf (Commands.fsc cfg.D
let csc cfg arg = Printf.ksprintf (Commands.csc (exec cfg) cfg.CSC) arg
let ildasm cfg arg = Printf.ksprintf (Commands.ildasm (exec cfg) cfg.ILDASM) arg
let peverify cfg = Commands.peverify (exec cfg) cfg.PEVERIFY "/nologo"
let sn cfg outfile arg = execAppendOutIgnoreExitCode cfg cfg.Directory outfile cfg.SN arg
let peverifyWithArgs cfg args = Commands.peverify (exec cfg) cfg.PEVERIFY args
let fsi cfg = Printf.ksprintf (Commands.fsi (exec cfg) cfg.FSI)
let fsi_script cfg = Printf.ksprintf (Commands.fsi (exec cfg) cfg.FSI_FOR_SCRIPTS)
Expand Down
79 changes: 42 additions & 37 deletions tests/fsharp/tests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module ``FSharp-Tests-Core``
open System
open System.IO
open System.Reflection
open System.Reflection.PortableExecutable
open NUnit.Framework
open TestFramework
open Scripting
Expand Down Expand Up @@ -568,84 +569,88 @@ module CoreTests =
let ``printing-5`` () =
printing "--quiet" "z.output.test.quiet.stdout.txt" "z.output.test.quiet.stdout.bsl" "z.output.test.quiet.stderr.txt" "z.output.test.quiet.stderr.bsl"

type SigningType =
| DelaySigned
| PublicSigned
| NotSigned

let signedtest(args,bslfile) =
let signedtest(programId:string, args:string, expectedSigning:SigningType) =

let cfg = testConfig "core/signedtests"
let cfg = { cfg with fsc_flags=cfg.fsc_flags + " " + args }

let outfile = Path.ChangeExtension(bslfile,"sn.out")
let exefile = Path.ChangeExtension(bslfile,"exe")
do File.WriteAllLines(getfullpath cfg outfile,
["sn -q stops all output except error messages "
"if the output is a valid file no output is produced. "
"delay-signed and unsigned produce error messages. "])

fsc cfg "%s -o:%s" cfg.fsc_flags exefile ["test.fs"]
sn cfg outfile ("-q -vf "+exefile)
let diffs = fsdiff cfg outfile bslfile

match diffs with
| "" -> ()
| _ -> Assert.Fail (sprintf "'%s' and '%s' differ; %A" outfile bslfile diffs)
let newFlags = cfg.fsc_flags + " " + args

let exefile = programId + ".exe"
fsc cfg "%s -o:%s" newFlags exefile ["test.fs"]

let assemblyPath = Path.Combine(cfg.Directory, exefile)
let assemblyName = AssemblyName.GetAssemblyName(assemblyPath)
let publicKeyToken = assemblyName.GetPublicKeyToken()
let isPublicKeyTokenPresent = not (Array.isEmpty publicKeyToken)
use exeStream = new FileStream(assemblyPath, FileMode.Open)
let peHeader = PEHeaders(exeStream)
let isSigned = peHeader.CorHeader.Flags.HasFlag(CorFlags.StrongNameSigned)
let actualSigning =
match isSigned, isPublicKeyTokenPresent with
| true, true-> SigningType.PublicSigned
| true, false -> failwith "unreachable"
| false, true -> SigningType.DelaySigned
| false, false -> SigningType.NotSigned

Assert.AreEqual(expectedSigning, actualSigning)

[<Test; Category("signedtest")>]
let ``signedtest-1`` () = signedtest("","test-unsigned.bsl")
let ``signedtest-1`` () = signedtest("test-unsigned", "", SigningType.NotSigned)

[<Test; Category("signedtest")>]
let ``signedtest-2`` () = signedtest("--keyfile:sha1full.snk", "test-sha1-full-cl.bsl")
let ``signedtest-2`` () = signedtest("test-sha1-full-cl", "--keyfile:sha1full.snk", SigningType.PublicSigned)

[<Test; Category("signedtest")>]
let ``signedtest-3`` () = signedtest("--keyfile:sha256full.snk", "test-sha256-full-cl.bsl")
let ``signedtest-3`` () = signedtest("test-sha256-full-cl", "--keyfile:sha256full.snk", SigningType.PublicSigned)

[<Test; Category("signedtest")>]
let ``signedtest-4`` () = signedtest("--keyfile:sha512full.snk", "test-sha512-full-cl.bsl")
let ``signedtest-4`` () = signedtest("test-sha512-full-cl", "--keyfile:sha512full.snk", SigningType.PublicSigned)

[<Test; Category("signedtest")>]
let ``signedtest-5`` () = signedtest("--keyfile:sha1024full.snk", "test-sha1024-full-cl.bsl")
let ``signedtest-5`` () = signedtest("test-sha1024-full-cl", "--keyfile:sha1024full.snk", SigningType.PublicSigned)

[<Test; Category("signedtest")>]
let ``signedtest-6`` () = signedtest("--keyfile:sha1delay.snk --delaysign", "test-sha1-delay-cl.bsl")
let ``signedtest-6`` () = signedtest("test-sha1-delay-cl", "--keyfile:sha1delay.snk --delaysign", SigningType.DelaySigned)

[<Test; Category("signedtest")>]
let ``signedtest-7`` () = signedtest("--keyfile:sha256delay.snk --delaysign", "test-sha256-delay-cl.bsl")
let ``signedtest-7`` () = signedtest("test-sha256-delay-cl", "--keyfile:sha256delay.snk --delaysign", SigningType.DelaySigned)

[<Test; Category("signedtest")>]
let ``signedtest-8`` () = signedtest("--keyfile:sha512delay.snk --delaysign", "test-sha512-delay-cl.bsl")
let ``signedtest-8`` () = signedtest("test-sha512-delay-cl", "--keyfile:sha512delay.snk --delaysign", SigningType.DelaySigned)

[<Test; Category("signedtest")>]
let ``signedtest-9`` () = signedtest("--keyfile:sha1024delay.snk --delaysign", "test-sha1024-delay-cl.bsl")
let ``signedtest-9`` () = signedtest("test-sha1024-delay-cl", "--keyfile:sha1024delay.snk --delaysign", SigningType.DelaySigned)

// Test SHA1 key full signed Attributes
[<Test; Category("signedtest")>]
let ``signedtest-10`` () = signedtest("--define:SHA1","test-sha1-full-attributes.bsl")
let ``signedtest-10`` () = signedtest("test-sha1-full-attributes", "--define:SHA1", SigningType.PublicSigned)

// Test SHA1 key delayl signed Attributes
[<Test; Category("signedtest")>]
let ``signedtest-11`` () = signedtest("--keyfile:sha1delay.snk --define:SHA1 --define:DELAY", "test-sha1-delay-attributes.bsl")
let ``signedtest-11`` () = signedtest("test-sha1-delay-attributes", "--keyfile:sha1delay.snk --define:SHA1 --define:DELAY", SigningType.DelaySigned)

[<Test; Category("signedtest")>]
let ``signedtest-12`` () = signedtest("--define:SHA256", "test-sha256-full-attributes.bsl")
let ``signedtest-12`` () = signedtest("test-sha256-full-attributes", "--define:SHA256", SigningType.PublicSigned)

// Test SHA 256 bit key delay signed Attributes
[<Test; Category("signedtest")>]
let ``signedtest-13`` () = signedtest("--define:SHA256 --define:DELAY", "test-sha256-delay-attributes.bsl")
let ``signedtest-13`` () = signedtest("test-sha256-delay-attributes", "--define:SHA256 --define:DELAY", SigningType.DelaySigned)

// Test SHA 512 bit key fully signed Attributes
[<Test; Category("signedtest")>]
let ``signedtest-14`` () = signedtest("--define:SHA512", "test-sha512-full-attributes.bsl")
let ``signedtest-14`` () = signedtest("test-sha512-full-attributes", "--define:SHA512", SigningType.PublicSigned)

// Test SHA 512 bit key delay signed Attributes
[<Test; Category("signedtest")>]
let ``signedtest-15`` () = signedtest("--define:SHA512 --define:DELAY", "test-sha512-delay-attributes.bsl")
let ``signedtest-15`` () = signedtest("test-sha512-delay-attributes", "--define:SHA512 --define:DELAY", SigningType.DelaySigned)

// Test SHA 1024 bit key fully signed Attributes
[<Test; Category("signedtest")>]
let ``signedtest-16`` () = signedtest("--define:SHA1024", "test-sha1024-full-attributes.bsl")

// Test dumpbin with SHA 1024 bit key public signed CL
[<Test; Category("signedtest")>]
let ``signedtest-17`` () = signedtest("--keyfile:sha1024delay.snk --publicsign", "test-sha1024-public-cl.bsl")
let ``signedtest-16`` () = signedtest("test-sha1024-full-attributes", "--define:SHA1024", SigningType.PublicSigned)
#endif

#if !FSHARP_SUITE_DRIVES_CORECLR_TESTS
Expand Down