Skip to content
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

Tests fail after FSharp.Core update to 4.5.2 #5814

Closed
auduchinok opened this issue Oct 24, 2018 · 13 comments
Closed

Tests fail after FSharp.Core update to 4.5.2 #5814

auduchinok opened this issue Oct 24, 2018 · 13 comments
Labels
Area-Library Issues for FSharp.Core not covered elsewhere Bug
Milestone

Comments

@auduchinok
Copy link
Member

auduchinok commented Oct 24, 2018

I've upgraded FSharp.Core package from 4.3.4 to 4.5.2 in our solution and changed binding redirects accordingly:

<dependentAssembly>
  <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.5.0.0" />
</dependentAssembly>

When I try to run tests on the build server, they fail due to strong name validation problems:

TearDown method failed. TearDown : JetBrains.TestFramework.Utils.TestLoggerListener+TestWrapperException : 2 exceptions were thrown.
#1: Resolve request for “FSharp.Core.resources, Version=4.5.0.0, Culture=en-US, PublicKeyToken=b03f5f7f11d50a3a”, parsed as “FSharp.Core.resources, Version=4.5.0.0, Culture=en-US, PublicKeyToken=b03f5f7f11d50a3a” has failed to bind it correctly. Could not load file or assembly 'FSharp.Core.resources, Version=4.5.0.0, Culture=zh-Hant, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)

--- EXCEPTION #1/3 [SecurityException]
Message = “Strong name validation failed. (Exception from HRESULT: 0x8013141A)”
ExceptionPath = Root.InnerException.InnerException
ClassName = System.Security.SecurityException
HResult = CORSEC_E_INVALID_STRONGNAME=8013141A
Action = “<ERROR> The value '0' is not a valid value for the enum 'SecurityAction'.”
Zone = MyComputer

--- Outer ---

--- EXCEPTION #2/3 [FileLoadException]
Message = “Could not load file or assembly 'FSharp.Core.resources, Version=4.5.0.0, Culture=zh-Hant, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)”
ExceptionPath = Root.InnerException
ClassName = System.IO.FileLoadException
InnerException = “Exception #1 at Root.InnerException.InnerException”
HResult = CORSEC_E_INVALID_STRONGNAME=8013141A
Source = mscorlib
FileLoad_FileName = “FSharp.Core.resources, Version=4.5.0.0, Culture=zh-Hant, PublicKeyToken=b03f5f7f11d50a3a”
StackTraceString = “
  at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
     at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
     at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
     at System.Reflection.Assembly.LoadFrom(String assemblyFile)
     at JetBrains.Util.Reflection.AppDomainAssembliesResolver.AssemblyBinding.Bind()
     at JetBrains.Util.Reflection.AppDomainAssembliesResolver.AssemblyResolve(Object sender, ResolveEventArgs args)
”

--- Outer ---

--- EXCEPTION #3/3 [LoggerException]
Message = “Resolve request for “FSharp.Core.resources, Version=4.5.0.0, Culture=en-US, PublicKeyToken=b03f5f7f11d50a3a”, parsed as “FSharp.Core.resources, Version=4.5.0.0, Culture=en-US, PublicKeyToken=b03f5f7f11d50a3a” has failed to bind it correctly. Could not load file or assembly 'FSharp.Core.resources, Version=4.5.0.0, Culture=zh-Hant, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)”
ExceptionPath = Root
ClassName = JetBrains.Util.LoggerException
Data.ManagedThreadName = <NULL>
InnerException = “Exception #2 at Root.InnerException”
HResult = COR_E_APPLICATION=80131600
StackTraceString = “
  at JetBrains.Util.ILoggerEx.Error(ILogger this, Exception ex, String message)
     at JetBrains.Util.Reflection.AppDomainAssembliesResolver.AssemblyResolve(Object sender, ResolveEventArgs args)
     at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
     at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
     at System.Reflection.RuntimeAssembly.InternalGetSatelliteAssembly(String name, CultureInfo culture, Version version, Boolean throwOnFileNotFound, StackCrawlMark& stackMark)
     at System.Resources.ManifestBasedResourceGroveler.GetSatelliteAssembly(CultureInfo lookForCulture, StackCrawlMark& stackMark)
     at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
     at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
     at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
     at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
     at Microsoft.FSharp.Quotations.PatternsModule.bindField(Type tc, String fldName, FSharpList`1 tyargs)
     at Microsoft.FSharp.Quotations.PatternsModule.u_constSpec@1554-11.Invoke(FSharpList`1 tyargs)
     at [email protected](BindingEnv env)
     at [email protected](BindingEnv env)
     at Microsoft.FSharp.Primitives.Basics.List.map[T,TResult](FSharpFunc`2 mapping, FSharpList`1 x)
     at [email protected](BindingEnv env)
     at [email protected](BindingEnv env)
     at Microsoft.FSharp.Quotations.PatternsModule.deserialize(Type localAssembly, Type[] referencedTypeDefs, Type[] spliceTypes, FSharpExpr[] spliceExprs, Byte[] bytes)
     at JetBrains.ReSharper.Plugins.FSharp.Services.Settings.Fsi.FsiOptionsProvider..ctor(Lifetime lifetime, ISolution solution, ISettingsStore settingsStore)
     at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
     at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
     at JetBrains.Application.Extensibility.PartCatalogTypeComponentDescriptor.CreateInstanceOf(Type type, IValueResolveContext context)
     at JetBrains.Application.Extensibility.PartCatalogTypeComponentDescriptor.CreateInstance(IValueResolveContext context)
     at JetBrains.Application.Components.SingletonDescriptor.CreateInstanceChecked(OnError onError, IComponentContainer container)
     at JetBrains.Application.Components.SingletonDescriptor.GetValue()
     at JetBrains.Application.Components.InitializationStrategyDefault.Schedule(Lifetime lifetime, ICollection`1 dscs, IComponentContainer container)
     at JetBrains.Application.Components.ComponentStorage.ComposeDescriptors(ICollection`1 descriptors)
     at JetBrains.ProjectModel.SolutionInstance.OpenSolutionInstance(ISolutionLoadTasksScheduler taskScheduler)
     at JetBrains.ProjectModel.SolutionManagerBase.CreateSolutionInstance(SolutionElement solutionElement, SolutionInstance solutionInstance)
     at JetBrains.ProjectModel.Impl.SolutionManagerImpl.CreateSolution(FileSystemPath solutionFilePath)
     at JetBrains.TestFramework.Projects.TestSolutionManager.<>c__DisplayClass3_2.<CreateSolutionWithReuse>b__2()
     at JetBrains.Application.Threading.IShellLocksEx.ExecuteWithWriteLock(IShellLocks thіs, Action F, CallerInfo caller)
     at JetBrains.TestFramework.Projects.TestSolutionManager.CreateSolutionWithReuse(Action`1 fillSolution, Func`2 createEmptySolution, Func`2 canUseCurrentSolution)
     at JetBrains.ReSharper.TestFramework.BaseTestWithSolution.InitSolution(Func`2 createSolutionConfiguration, IReuseSolutionInTestsComponent reuseSolutionInTestsComponent)
     at JetBrains.ReSharper.TestFramework.BaseTestWithSolution.InitSolution(Func`2 testSolutionConfiguration)
     at JetBrains.ReSharper.TestFramework.BaseTestWithSolution.<>c__DisplayClass46_1.<DoTestSolution>b__1()
     at JetBrains.Application.Threading.IShellLocksEx.ExecuteWithReadLock(IShellLocks thіs, Action F)
     at JetBrains.Threading.ReentrancyGuard.Execute(String name, Action action)
     at JetBrains.TestFramework.BaseTest.RunGuarded(Action action)
     at JetBrains.ReSharper.TestFramework.BaseTestWithSolution.DoTestSolution(Func`2 testSolutionConfiguration, Action`2 test)
     at JetBrains.ReSharper.TestFramework.BaseTestWithTextControl`1.DoTestSolution(String[] fileSet)
     at JetBrains.ReSharper.Plugins.FSharp.Tests.Features.Actions.FSharpCommentLineTests.testLine01()
     at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
     at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
     at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
     at NUnit.Core.Reflect.InvokeMethod(MethodInfo method, Object fixture, Object[] args)
     at NUnit.Core.TestMethod.RunTestMethod()
     ...
”

It seems to be related to #5224 (duplicates?) but the fix commit was merged before the 4.5.2 package release. I cannot reproduce it locally.

@auduchinok
Copy link
Member Author

auduchinok commented Oct 24, 2018

Does the following signature info (delay-signed or test-signed) look as expected?

sn /vf C:\Users\Eugene.Auduchinok\.nuget\packages\fsharp.core\4.5.2\lib\net45\FSharp.Core.resources.dll

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.0
Copyright (c) Microsoft Corporation.  All rights reserved.

C:\Users\Eugene.Auduchinok\.nuget\packages\fsharp.core\4.5.2\lib\net45\FSharp.Core.resources.dll is a delay-signed or test-signed assembly

@auduchinok
Copy link
Member Author

auduchinok commented Oct 24, 2018

A workaround is to delete the file from the output directory by adding the following to tests projects:

  <Target Name="PostBuild" AfterTargets="Build">
    <Delete Files="$(OutputPath)\FSharp.Core.resources.dll" />
  </Target>

@cartermp
Copy link
Contributor

cc @brettfo

@cartermp
Copy link
Contributor

@auduchinok Does this still repro with FSharp.Core 4.5.4?

@auduchinok
Copy link
Member Author

auduchinok commented Jan 15, 2019

@cartermp No, with FSharp.Core 4.5.4 it seems to work fine on the build server without the workaround above.

However, looking at the package, there's a directory MockTypeProviders in fsharp.core.4.5.4.nukpg/lib/net45/UnitTests. Is it placed there intentionally? What it is for?

@cartermp
Copy link
Contributor

Not sure, but I know that those are a part of the TP smoke tests we do in CI ... no idea why anything from there would end up in the package. @KevinRansom since you added these tests, any ideas?

@KevinRansom
Copy link
Member

No it shouldn't be there.

@cartermp cartermp added the Area-Library Issues for FSharp.Core not covered elsewhere label Jan 16, 2019
@auduchinok
Copy link
Member Author

4.6.0 still contains these files.

@cartermp
Copy link
Contributor

@KevinRansom was this taken care of?

@KevinRansom
Copy link
Member

Hmm … yes … I wonder if there was a merge issue.

@KevinRansom
Copy link
Member

Except, I can't see a commit that would actually fix it.

@KevinRansom
Copy link
Member

@cartermp,

Okay,
I know what happened:

I propped the version of FSharp.Core that matches the FSharp shipped in Preview 2 of VS. That version didn't have the change that stops us adding UnitTests to the nuget package, because it is from early in December.

We are preparing an insertion for Preview 3. As soon as that is confirmed I will prop the corresponding FSharp.Core 4.6.1 to nuget. It should happen by the end of next week.

Kevin

@cartermp cartermp added the Bug label Jan 30, 2019
@cartermp cartermp added this to the 16.0 milestone Jan 30, 2019
@auduchinok
Copy link
Member Author

I can confirm FSharp.Core 4.6.1 doesn't have these files bundled.

Thank you @KevinRansom.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Library Issues for FSharp.Core not covered elsewhere Bug
Projects
None yet
Development

No branches or pull requests

3 participants