diff --git a/TestPlatform.sln b/TestPlatform.sln index 2e140d8990..efbbf64ac9 100644 --- a/TestPlatform.sln +++ b/TestPlatform.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.779 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29319.158 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED0C35EB-7F31-4841-A24F-8EB708FFA959}" EndProject @@ -179,6 +179,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Exte EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests", "test\Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests\Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests.csproj", "{41248B96-6E15-4E5E-A78F-859897676814}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coverlet.collector", "test\TestAssets\coverlet.collector\coverlet.collector.csproj", "{F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -897,6 +899,18 @@ Global {41248B96-6E15-4E5E-A78F-859897676814}.Release|x64.Build.0 = Release|Any CPU {41248B96-6E15-4E5E-A78F-859897676814}.Release|x86.ActiveCfg = Release|Any CPU {41248B96-6E15-4E5E-A78F-859897676814}.Release|x86.Build.0 = Release|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Debug|x64.ActiveCfg = Debug|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Debug|x64.Build.0 = Debug|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Debug|x86.ActiveCfg = Debug|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Debug|x86.Build.0 = Debug|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Release|Any CPU.Build.0 = Release|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Release|x64.ActiveCfg = Release|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Release|x64.Build.0 = Release|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Release|x86.ActiveCfg = Release|Any CPU + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -973,6 +987,7 @@ Global {D16ACC60-52F8-4912-8870-5733A9F6852D} = {8DA7CBD9-F17E-41B6-90C4-CFF55848A25A} {236A71E3-01DA-4679-9DFF-16A8E079ACFF} = {5E7F18A8-F843-4C8A-AB02-4C7D9205C6CF} {41248B96-6E15-4E5E-A78F-859897676814} = {020E15EA-731F-4667-95AF-226671E0C3AE} + {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3} = {8DA7CBD9-F17E-41B6-90C4-CFF55848A25A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0541B30C-FF51-4E28-B172-83F5F3934BCD} diff --git a/src/Microsoft.TestPlatform.Common/Resources/Resources.Designer.cs b/src/Microsoft.TestPlatform.Common/Resources/Resources.Designer.cs index f41b5b64b8..541a9fb661 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/Resources.Designer.cs +++ b/src/Microsoft.TestPlatform.Common/Resources/Resources.Designer.cs @@ -349,7 +349,7 @@ internal static string TestCaseFilterFormatException { } /// - /// Looks up a localized string similar to Unable to find a datacollector with friendly name '[0}'.. + /// Looks up a localized string similar to Unable to find a datacollector with friendly name '{0}'.. /// internal static string UnableToFetchUriString { get { diff --git a/src/Microsoft.TestPlatform.Common/Resources/Resources.resx b/src/Microsoft.TestPlatform.Common/Resources/Resources.resx index 295afaf19e..66a2074364 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/Resources.resx +++ b/src/Microsoft.TestPlatform.Common/Resources/Resources.resx @@ -214,7 +214,7 @@ Incorrect format for TestCaseFilter {0}. Specify the correct format and try again. Note that the incorrect format can lead to no test getting executed. - Unable to find a datacollector with friendly name '[0}'. + Unable to find a datacollector with friendly name '{0}'. This option works only with vstest.console.exe installed as part of Visual Studio. diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.cs.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.cs.xlf index a57ca426de..4747df02a6 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.cs.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.cs.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - Nepovedlo se najít kolekci dat s popisným názvem [0}. + Unable to find a datacollector with friendly name '{0}'. + Nepovedlo se najít kolekci dat s popisným názvem {0}. diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.de.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.de.xlf index ae83676cc9..432bb99cf5 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.de.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.de.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - Ein Datensammler mit dem Anzeigenamen "[0}" wurde nicht gefunden. + Unable to find a datacollector with friendly name '{0}'. + Ein Datensammler mit dem Anzeigenamen "{0}" wurde nicht gefunden. diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.es.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.es.xlf index 35e1447a4b..44b0ea6386 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.es.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.es.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - No se encuentra ningún recopilador de datos con el nombre descriptivo "[0}". + Unable to find a datacollector with friendly name '{0}'. + No se encuentra ningún recopilador de datos con el nombre descriptivo "{0}". diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.fr.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.fr.xlf index ad873289fa..46fd06f544 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.fr.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.fr.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - Impossible de trouver un collecteur de données avec le nom convivial « [0} ». + Unable to find a datacollector with friendly name '{0}'. + Impossible de trouver un collecteur de données avec le nom convivial « {0} ». diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.it.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.it.xlf index 0f6f9e7053..122b54a88e 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.it.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.it.xlf @@ -270,7 +270,7 @@ - Unable to find a datacollector with friendly name '[0}'. + Unable to find a datacollector with friendly name '{0}'. Non è possibile trovare un agente di raccolta dati con nome descrittivo '{0}'. diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ja.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ja.xlf index 258b458690..c2ad50fa4f 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ja.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ja.xlf @@ -270,7 +270,7 @@ - Unable to find a datacollector with friendly name '[0}'. + Unable to find a datacollector with friendly name '{0}'. フレンドリ名 '{0}' のデータコレクターが見つかりません。 diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ko.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ko.xlf index 19b7432715..644796b039 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ko.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ko.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - 이름이 '[0}'인 datacollector를 찾을 수 없습니다. + Unable to find a datacollector with friendly name '{0}'. + 이름이 '{0}'인 datacollector를 찾을 수 없습니다. diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.pl.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.pl.xlf index 3d82fb839d..f22f84c02c 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.pl.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.pl.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - Nie można znaleźć modułu zbierającego dane o przyjaznej nazwie „[0}”. + Unable to find a datacollector with friendly name '{0}'. + Nie można znaleźć modułu zbierającego dane o przyjaznej nazwie „{0}”. diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.pt-BR.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.pt-BR.xlf index 704f5a62ca..b08f2d75be 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.pt-BR.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.pt-BR.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - Não é possível localizar um datacollector com o nome amigável '[0}'. + Unable to find a datacollector with friendly name '{0}'. + Não é possível localizar um datacollector com o nome amigável '{0}'. diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ru.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ru.xlf index 2f0aa5ca23..65b65eda47 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ru.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.ru.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - Не удается найти объект сбора данных с понятным именем "[0}". + Unable to find a datacollector with friendly name '{0}'. + Не удается найти объект сбора данных с понятным именем "{0}". diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.tr.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.tr.xlf index 507314f8e5..54d48f12b1 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.tr.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.tr.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - '[0}' kolay adıyla bir datacollector bulunamıyor. + Unable to find a datacollector with friendly name '{0}'. + '{0}' kolay adıyla bir datacollector bulunamıyor. diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf index 0fb8c3f172..4e6a67d1be 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf @@ -147,7 +147,7 @@ - Unable to find a datacollector with friendly name '[0}'. + Unable to find a datacollector with friendly name '{0}'. Unable to find a datacollector with friendly name '[0}'. diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.zh-Hans.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.zh-Hans.xlf index f2b3308853..71f4f362d3 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.zh-Hans.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.zh-Hans.xlf @@ -270,8 +270,8 @@ - Unable to find a datacollector with friendly name '[0}'. - 找不到友好名称为 "[0}" 的 datacollector。 + Unable to find a datacollector with friendly name '{0}'. + 找不到友好名称为 "{0}" 的 datacollector。 diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.zh-Hant.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.zh-Hant.xlf index 508ddb3147..276ae44fff 100644 --- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.zh-Hant.xlf +++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.zh-Hant.xlf @@ -270,7 +270,7 @@ - Unable to find a datacollector with friendly name '[0}'. + Unable to find a datacollector with friendly name '{0}'. 找不到易記名稱為 '{0}' 的資料收集器。 diff --git a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs index c9abb9b217..3bd88022ab 100644 --- a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs +++ b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs @@ -329,5 +329,15 @@ internal static class Constants /// Test sources property name /// public const string TestSourcesPropertyName = "TestSources"; + + /// + /// Coverlet inproc data collector codebase + /// + public const string CoverletDataCollectorCodebase = "coverlet.collector.dll"; + + /// + /// Coverlet inproc data collector type name + /// + public const string CoverletDataCollectorTypeName = "Coverlet.Collector.DataCollection.CoverletInProcDataCollector"; } } diff --git a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollector.cs b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollector.cs index 88dd845c76..74b734de18 100644 --- a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollector.cs +++ b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollector.cs @@ -4,6 +4,7 @@ namespace Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection { using System; + using System.IO; using System.Linq; using System.Reflection; @@ -67,10 +68,20 @@ internal InProcDataCollector(string codeBase, string assemblyQualifiedName, Type this.assemblyLoadContext = assemblyLoadContext; var assembly = this.LoadInProcDataCollectorExtension(codeBase); - this.dataCollectorType = - assembly?.GetTypes() - .FirstOrDefault(x => x.AssemblyQualifiedName.Equals(assemblyQualifiedName) && interfaceTypeInfo.IsAssignableFrom(x.GetTypeInfo())); + Func filterPredicate; + if (Path.GetFileName(codeBase) == Constants.CoverletDataCollectorCodebase) + { + // If we're loading coverlet collector we skip to check the version of assembly + // to allow upgrade throught nuget package + filterPredicate = (x) => x.FullName.Equals(Constants.CoverletDataCollectorTypeName) && interfaceTypeInfo.IsAssignableFrom(x.GetTypeInfo()); + } + else + { + filterPredicate = (x) => x.AssemblyQualifiedName.Equals(assemblyQualifiedName) && interfaceTypeInfo.IsAssignableFrom(x.GetTypeInfo()); + } + + this.dataCollectorType = assembly?.GetTypes().FirstOrDefault(filterPredicate); this.AssemblyQualifiedName = this.dataCollectorType?.AssemblyQualifiedName; } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectorTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectorTests.cs index b7cca3f296..a0fb8316f3 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectorTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectorTests.cs @@ -5,7 +5,7 @@ namespace TestPlatform.CrossPlatEngine.UnitTests.DataCollection { using System.IO; using System.Reflection; - + using Coverlet.Collector.DataCollection; using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; @@ -64,7 +64,7 @@ public void InProcDataCollectorShouldNotThrowExceptionIfAssemblyDoesNotContainAn public void InProcDataCollectorShouldInitializeIfAssemblyContainsAnyInProcDataCollector() { var typeInfo = typeof(TestableInProcDataCollector).GetTypeInfo(); - + this.assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) .Returns(typeInfo.Assembly); @@ -79,6 +79,27 @@ public void InProcDataCollectorShouldInitializeIfAssemblyContainsAnyInProcDataCo Assert.AreEqual(this.inProcDataCollector.AssemblyQualifiedName, typeInfo.AssemblyQualifiedName); } + [TestMethod] + public void InProcDataCollectorLoadCoverlet() + { + var typeInfo = typeof(CoverletInProcDataCollector).GetTypeInfo(); + + Assert.AreEqual("9.9.9.9", typeInfo.Assembly.GetName().Version.ToString()); + + this.assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) + .Returns(typeInfo.Assembly); + + this.inProcDataCollector = new InProcDataCollector( + typeInfo.Assembly.Location, + "Coverlet.Collector.DataCollection.CoverletInProcDataCollector, coverlet.collector, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", + typeof(InProcDataCollection).GetTypeInfo(), + string.Empty, + this.assemblyLoadContext.Object); + + Assert.IsNotNull(this.inProcDataCollector.AssemblyQualifiedName); + Assert.AreEqual(this.inProcDataCollector.AssemblyQualifiedName, typeInfo.AssemblyQualifiedName); + } + private class TestableInProcDataCollector : InProcDataCollection { public void Initialize(IDataCollectionSink dataCollectionSink) diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Microsoft.TestPlatform.CrossPlatEngine.UnitTests.csproj b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Microsoft.TestPlatform.CrossPlatEngine.UnitTests.csproj index 12e0cff4dd..d99d8a4486 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Microsoft.TestPlatform.CrossPlatEngine.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Microsoft.TestPlatform.CrossPlatEngine.UnitTests.csproj @@ -18,6 +18,7 @@ true + diff --git a/test/TestAssets/coverlet.collector/CoverletInProcDataCollector.cs b/test/TestAssets/coverlet.collector/CoverletInProcDataCollector.cs new file mode 100644 index 0000000000..844e681ce6 --- /dev/null +++ b/test/TestAssets/coverlet.collector/CoverletInProcDataCollector.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Reflection; +using System; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector.InProcDataCollector; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.InProcDataCollector; + +[assembly: AssemblyKeyFile("key.snk")] +[assembly: AssemblyVersion("9.9.9.9")] + +namespace Coverlet.Collector.DataCollection +{ + // This class MUST have the same full name as + // https://github.com/tonerdo/coverlet/blob/master/src/coverlet.collector/InProcDataCollection/CoverletInProcDataCollector.cs + // to mimic real behaviour + public class CoverletInProcDataCollector : InProcDataCollection + { + public void Initialize(IDataCollectionSink dataCollectionSink) + { + throw new NotImplementedException(); + } + + public void TestCaseEnd(TestCaseEndArgs testCaseEndArgs) + { + throw new NotImplementedException(); + } + + public void TestCaseStart(TestCaseStartArgs testCaseStartArgs) + { + throw new NotImplementedException(); + } + + public void TestSessionEnd(TestSessionEndArgs testSessionEndArgs) + { + throw new NotImplementedException(); + } + + public void TestSessionStart(TestSessionStartArgs testSessionStartArgs) + { + throw new NotImplementedException(); + } + } +} diff --git a/test/TestAssets/coverlet.collector/coverlet.collector.csproj b/test/TestAssets/coverlet.collector/coverlet.collector.csproj new file mode 100644 index 0000000000..74bce9aef6 --- /dev/null +++ b/test/TestAssets/coverlet.collector/coverlet.collector.csproj @@ -0,0 +1,12 @@ + + + + netcoreapp2.1;net451 + false + + + + + + + diff --git a/test/TestAssets/coverlet.collector/key.snk b/test/TestAssets/coverlet.collector/key.snk new file mode 100644 index 0000000000..16bbaafe56 Binary files /dev/null and b/test/TestAssets/coverlet.collector/key.snk differ