From e33edc1cad4f2e0d281dd2a89dd97ebd408d7fd4 Mon Sep 17 00:00:00 2001 From: Ian Yates Date: Tue, 16 Nov 2021 12:34:35 +0000 Subject: [PATCH 1/8] Code tidy and extra test --- Shimterface.Tests/GenericConstructorTests.cs | 17 +++ Shimterface.Tests/Internal/ILBuilderTests.cs | 22 ---- .../Internal/ILGeneratorExtensionsTests.cs | 101 ++++++++++++++++++ Shimterface/Internal/ILBuilder.cs | 43 +++----- Shimterface/Internal/ILGeneratorExtensions.cs | 89 +++++++++++++++ 5 files changed, 220 insertions(+), 52 deletions(-) create mode 100644 Shimterface.Tests/Internal/ILGeneratorExtensionsTests.cs create mode 100644 Shimterface/Internal/ILGeneratorExtensions.cs diff --git a/Shimterface.Tests/GenericConstructorTests.cs b/Shimterface.Tests/GenericConstructorTests.cs index b7da47f..3821e74 100644 --- a/Shimterface.Tests/GenericConstructorTests.cs +++ b/Shimterface.Tests/GenericConstructorTests.cs @@ -16,6 +16,8 @@ public interface IInstanceInterface } public interface IFactoryInterface { + [ConstructorShim(typeof(TestClass<>))] + IInstanceInterface Create(); [ConstructorShim(typeof(TestClass<>))] IInstanceInterface Create(T value); [ConstructorShim(typeof(TestClass<>))] @@ -31,6 +33,10 @@ public class TestClass public string Text { get; set; } public int Count { get; set; } + public TestClass() + { + Count = 0; + } public TestClass(T value) { Value = value; @@ -53,6 +59,17 @@ public interface ITest object Exec(); } + [TestMethod] + public void Can_shim_to_constructor_without_args() + { + var shim = ShimBuilder.Create(); + + var inst = shim.Create(); + + Assert.AreEqual(0, inst.Count); + Assert.IsInstanceOfType(((IShim)inst).Unshim(), typeof(TestClass)); + } + [TestMethod] public void Can_shim_to_constructor() { diff --git a/Shimterface.Tests/Internal/ILBuilderTests.cs b/Shimterface.Tests/Internal/ILBuilderTests.cs index 31677da..019d76e 100644 --- a/Shimterface.Tests/Internal/ILBuilderTests.cs +++ b/Shimterface.Tests/Internal/ILBuilderTests.cs @@ -11,28 +11,6 @@ namespace Shimterface.Internal.Tests [TestClass] public class ILBuilderTests { - [TestMethod] - [DataRow((byte)0, 1)] - [DataRow((byte)1, 1)] - [DataRow((byte)2, 1)] - [DataRow((byte)3, 1)] - [DataRow((byte)4, 2)] - [DataRow((byte)5, 2)] - public void Ldarg__Provides_efficient_bytecode(byte input, int expOffset) - { - // Arrange - var asm = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("Shimterface.Tests.dynamic"), AssemblyBuilderAccess.Run); - var mod = asm.DefineDynamicModule("Shimterface.Tests.dynamic"); - var tb = mod.DefineType($"TestClass", TypeAttributes.Public | TypeAttributes.Class | TypeAttributes.AutoClass | TypeAttributes.AnsiClass | TypeAttributes.BeforeFieldInit | TypeAttributes.AutoLayout, null, null); - - // Act - var impl = tb.DefinePublicMethod("TestMethod", typeof(bool), new List { typeof(string), typeof(int) }); - ILBuilder.Ldarg(impl, input); - - // Assert - Assert.AreEqual(expOffset, impl.ILOffset); - } - [TestMethod] public void DefinePublicMethod__With_paramTypes__Creates_method() { diff --git a/Shimterface.Tests/Internal/ILGeneratorExtensionsTests.cs b/Shimterface.Tests/Internal/ILGeneratorExtensionsTests.cs new file mode 100644 index 0000000..a0d3212 --- /dev/null +++ b/Shimterface.Tests/Internal/ILGeneratorExtensionsTests.cs @@ -0,0 +1,101 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Reflection.Emit; + +namespace Shimterface.Internal.Tests +{ + [TestClass] + public class ILGeneratorExtensionsTests + { + private static ILGenerator getGenerator() + { + var asm = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("Shimterface.Tests.dynamic"), AssemblyBuilderAccess.Run); + var mod = asm.DefineDynamicModule("Shimterface.Tests.dynamic"); + var tb = mod.DefineType($"TestClass", TypeAttributes.Public | TypeAttributes.Class | TypeAttributes.AutoClass | TypeAttributes.AnsiClass | TypeAttributes.BeforeFieldInit | TypeAttributes.AutoLayout, null, null); + return tb.DefinePublicMethod("TestMethod", typeof(bool), new List { typeof(string), typeof(int) }); + } + + [TestMethod] + [DataRow((byte)0, 1)] + [DataRow((byte)1, 1)] + [DataRow((byte)2, 1)] + [DataRow((byte)3, 1)] + [DataRow((byte)4, 2)] + [DataRow((byte)5, 2)] + public void Ldarg__Provides_efficient_bytecode(byte input, int expOffset) + { + // Arrange + var impl = getGenerator(); + + // Act + ILGeneratorExtensions.Ldarg(impl, input); + + // Assert + Assert.AreEqual(expOffset, impl.ILOffset); + } + + [TestMethod] + [DataRow((byte)0, 1)] + [DataRow((byte)1, 1)] + [DataRow((byte)2, 1)] + [DataRow((byte)3, 1)] + [DataRow((byte)4, 1)] + [DataRow((byte)5, 1)] + [DataRow((byte)6, 1)] + [DataRow((byte)7, 1)] + [DataRow((byte)8, 1)] + [DataRow((byte)9, 2)] + [DataRow((byte)10, 2)] + public void Ldc_I4__Provides_efficient_bytecode(byte input, int expOffset) + { + // Arrange + var impl = getGenerator(); + + // Act + ILGeneratorExtensions.Ldc_I4(impl, input); + + // Assert + Assert.AreEqual(expOffset, impl.ILOffset); + } + + [TestMethod] + [DataRow((byte)0, 1)] + [DataRow((byte)1, 1)] + [DataRow((byte)2, 1)] + [DataRow((byte)3, 1)] + [DataRow((byte)4, 6)] + [DataRow((byte)5, 6)] + public void Ldloc__Provides_efficient_bytecode(byte input, int expOffset) + { + // Arrange + var impl = getGenerator(); + + // Act + ILGeneratorExtensions.Ldloc(impl, input); + + // Assert + Assert.AreEqual(expOffset, impl.ILOffset); + } + + [TestMethod] + [DataRow((byte)0, 1)] + [DataRow((byte)1, 1)] + [DataRow((byte)2, 1)] + [DataRow((byte)3, 1)] + [DataRow((byte)4, 6)] + [DataRow((byte)5, 6)] + public void Stloc__Provides_efficient_bytecode(byte input, int expOffset) + { + // Arrange + var impl = getGenerator(); + + // Act + ILGeneratorExtensions.Stloc(impl, input); + + // Assert + Assert.AreEqual(expOffset, impl.ILOffset); + } + } +} \ No newline at end of file diff --git a/Shimterface/Internal/ILBuilder.cs b/Shimterface/Internal/ILBuilder.cs index f5fa892..3f6093e 100644 --- a/Shimterface/Internal/ILBuilder.cs +++ b/Shimterface/Internal/ILBuilder.cs @@ -8,28 +8,6 @@ namespace Shimterface.Internal { internal static class ILBuilder { - public static void Ldarg(this ILGenerator impl, byte num) - { - switch (num) - { - case 0: - impl.Emit(OpCodes.Ldarg_0); - break; - case 1: - impl.Emit(OpCodes.Ldarg_1); - break; - case 2: - impl.Emit(OpCodes.Ldarg_2); - break; - case 3: - impl.Emit(OpCodes.Ldarg_3); - break; - default: - impl.Emit(OpCodes.Ldarg_S, num); - break; - } - } - private static bool resolveIfInstance(bool isStatic, ILGenerator impl, FieldInfo? instField) { if (isStatic || instField == null) @@ -175,7 +153,7 @@ public static void EmitTypeUnshim(this ILGenerator impl, Type shimType, Type rea public static void WrapConstructor(this TypeBuilder tb, ShimBinding binding, ConstructorInfo constrInfo) { - var factory = tb.DefinePublicMethod(binding.InterfaceMethod, out var args); + var factory = tb.DefinePublicMethod(binding.InterfaceMethod, out var argTypes); var impl = factory.GetILGenerator(); var genericParams = factory.GetGenericArguments(); @@ -184,22 +162,27 @@ public static void WrapConstructor(this TypeBuilder tb, ShimBinding binding, Con // Build args array var pars = binding.InterfaceMethod.GetParameters(); var argsArr = impl.DeclareLocal(typeof(object[])); - impl.Emit(OpCodes.Ldc_I4, args.Length); + impl.Ldc_I4(argTypes.Length); impl.Emit(OpCodes.Newarr, typeof(object)); - for (var i = 0; i < args.Length; ++i) + for (var i = 0; i < argTypes.Length; ++i) { impl.Emit(OpCodes.Dup); - impl.Emit(OpCodes.Ldc_I4, i); + impl.Ldc_I4(i); impl.Ldarg((byte)(i + 1)); - impl.Emit(OpCodes.Box, args[i]); + impl.Emit(OpCodes.Box, argTypes[i]); impl.Emit(OpCodes.Stelem_Ref); } - impl.Emit(OpCodes.Stloc, argsArr.LocalIndex); + impl.Stloc(argsArr.LocalIndex); // Build target type - impl.Emit(OpCodes.Ldtoken, constrInfo.DeclaringType.RebuildGenericType(genericParams)); - impl.Emit(OpCodes.Ldloc, argsArr.LocalIndex); + var resultType = constrInfo.DeclaringType.RebuildGenericType(genericParams); + impl.Emit(OpCodes.Ldtoken, resultType); + //impl.Emit(OpCodes.Call, typeof(Type). + impl.Ldloc(argsArr.LocalIndex); impl.Emit(OpCodes.Call, typeof(Activator).GetMethod(nameof(Activator.CreateInstance), new[] { typeof(Type), typeof(object[]) })); + //impl.Emit(OpCodes.Castclass, resultType); + //impl.Stloc(1); + //impl.Ldloc(1); } else { diff --git a/Shimterface/Internal/ILGeneratorExtensions.cs b/Shimterface/Internal/ILGeneratorExtensions.cs new file mode 100644 index 0000000..ef5ae25 --- /dev/null +++ b/Shimterface/Internal/ILGeneratorExtensions.cs @@ -0,0 +1,89 @@ +using System.Reflection.Emit; + +namespace Shimterface.Internal +{ + internal static class ILGeneratorExtensions + { + public static void Ldarg(this ILGenerator impl, byte num) + { + var op = num switch + { + 0 => OpCodes.Ldarg_0, + 1 => OpCodes.Ldarg_1, + 2 => OpCodes.Ldarg_2, + 3 => OpCodes.Ldarg_3, + _ => default + }; + if (op.Value > 0) + { + impl.Emit(op); + } + else + { + impl.Emit(OpCodes.Ldarg_S, num); + } + } + public static void Ldc_I4(this ILGenerator impl, int num) + { + var op = num switch + { + 0 => OpCodes.Ldc_I4_0, + 1 => OpCodes.Ldc_I4_1, + 2 => OpCodes.Ldc_I4_2, + 3 => OpCodes.Ldc_I4_3, + 4 => OpCodes.Ldc_I4_4, + 5 => OpCodes.Ldc_I4_5, + 6 => OpCodes.Ldc_I4_6, + 7 => OpCodes.Ldc_I4_7, + 8 => OpCodes.Ldc_I4_8, + _ => default + }; + if (op.Value > 0) + { + impl.Emit(op); + } + else + { + impl.Emit(OpCodes.Ldc_I4, num); + } + } + public static void Ldloc(this ILGenerator impl, int num) + { + var op = num switch + { + 0 => OpCodes.Ldloc_0, + 1 => OpCodes.Ldloc_1, + 2 => OpCodes.Ldloc_2, + 3 => OpCodes.Ldloc_3, + _ => default + }; + if (op.Value > 0) + { + impl.Emit(op); + } + else + { + impl.Emit(OpCodes.Ldloc, num); // TODO: Might be able to use Ldloc_S + } + } + public static void Stloc(this ILGenerator impl, int num) + { + var op = num switch + { + 0 => OpCodes.Stloc_0, + 1 => OpCodes.Stloc_1, + 2 => OpCodes.Stloc_2, + 3 => OpCodes.Stloc_3, + _ => default + }; + if (op.Value > 0) + { + impl.Emit(op); + } + else + { + impl.Emit(OpCodes.Stloc, num); // TODO: Might be able to use Stloc_S + } + } + } +} \ No newline at end of file From 86df6f785dbd70ac6d62e31b76db4897adfd0c7c Mon Sep 17 00:00:00 2001 From: Ian Yates Date: Tue, 16 Nov 2021 14:01:53 +0000 Subject: [PATCH 2/8] Fixed IL on generic constructors for .NET 6 Tests run for .NET Core 3.1, 5.0, 6.0 #17 --- Shimterface.Standard.sln | 4 ++-- .../Internal/ILGeneratorExtensionsTests.cs | 5 +++++ .../Shimterface - Backup.Standard.Tests.csproj | 16 ++++++++++++++++ .../Shimterface.Standard.Tests.csproj | 2 +- Shimterface/Internal/ILBuilder.cs | 5 +---- 5 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 Shimterface.Tests/Shimterface - Backup.Standard.Tests.csproj diff --git a/Shimterface.Standard.sln b/Shimterface.Standard.sln index ebb7015..c583186 100644 --- a/Shimterface.Standard.sln +++ b/Shimterface.Standard.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29326.143 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D260D65D-0F00-4D2C-9E72-38EC9D2E3F41}" ProjectSection(SolutionItems) = preProject diff --git a/Shimterface.Tests/Internal/ILGeneratorExtensionsTests.cs b/Shimterface.Tests/Internal/ILGeneratorExtensionsTests.cs index a0d3212..529e89a 100644 --- a/Shimterface.Tests/Internal/ILGeneratorExtensionsTests.cs +++ b/Shimterface.Tests/Internal/ILGeneratorExtensionsTests.cs @@ -46,8 +46,13 @@ public void Ldarg__Provides_efficient_bytecode(byte input, int expOffset) [DataRow((byte)6, 1)] [DataRow((byte)7, 1)] [DataRow((byte)8, 1)] +#if NETCOREAPP3_1 + [DataRow((byte)9, 5)] + [DataRow((byte)10, 5)] +#else [DataRow((byte)9, 2)] [DataRow((byte)10, 2)] +#endif public void Ldc_I4__Provides_efficient_bytecode(byte input, int expOffset) { // Arrange diff --git a/Shimterface.Tests/Shimterface - Backup.Standard.Tests.csproj b/Shimterface.Tests/Shimterface - Backup.Standard.Tests.csproj new file mode 100644 index 0000000..a6b2538 --- /dev/null +++ b/Shimterface.Tests/Shimterface - Backup.Standard.Tests.csproj @@ -0,0 +1,16 @@ + + + net5.0;net6.0 + false + Shimterface.Tests + + + + + + + + + + + \ No newline at end of file diff --git a/Shimterface.Tests/Shimterface.Standard.Tests.csproj b/Shimterface.Tests/Shimterface.Standard.Tests.csproj index 0ce3bd9..4b838bc 100644 --- a/Shimterface.Tests/Shimterface.Standard.Tests.csproj +++ b/Shimterface.Tests/Shimterface.Standard.Tests.csproj @@ -1,6 +1,6 @@  - net5.0 + netcoreapp3.1;net5.0;net6.0 false Shimterface.Tests diff --git a/Shimterface/Internal/ILBuilder.cs b/Shimterface/Internal/ILBuilder.cs index 3f6093e..1b80bd3 100644 --- a/Shimterface/Internal/ILBuilder.cs +++ b/Shimterface/Internal/ILBuilder.cs @@ -177,12 +177,9 @@ public static void WrapConstructor(this TypeBuilder tb, ShimBinding binding, Con // Build target type var resultType = constrInfo.DeclaringType.RebuildGenericType(genericParams); impl.Emit(OpCodes.Ldtoken, resultType); - //impl.Emit(OpCodes.Call, typeof(Type). + impl.Emit(OpCodes.Call, typeof(Type).GetMethod(nameof(Type.GetTypeFromHandle), new[] { typeof(RuntimeTypeHandle) })); impl.Ldloc(argsArr.LocalIndex); impl.Emit(OpCodes.Call, typeof(Activator).GetMethod(nameof(Activator.CreateInstance), new[] { typeof(Type), typeof(object[]) })); - //impl.Emit(OpCodes.Castclass, resultType); - //impl.Stloc(1); - //impl.Ldloc(1); } else { From 3b92538a27ef101dc5be171036c89a89f99e9a51 Mon Sep 17 00:00:00 2001 From: Ian Yates Date: Tue, 16 Nov 2021 14:03:44 +0000 Subject: [PATCH 3/8] Version v1.6.7 --- Shimterface.Tests/Shimterface.Standard.Tests.csproj | 2 +- Shimterface/Shimterface.Standard.csproj | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Shimterface.Tests/Shimterface.Standard.Tests.csproj b/Shimterface.Tests/Shimterface.Standard.Tests.csproj index 4b838bc..5455f16 100644 --- a/Shimterface.Tests/Shimterface.Standard.Tests.csproj +++ b/Shimterface.Tests/Shimterface.Standard.Tests.csproj @@ -5,7 +5,7 @@ Shimterface.Tests - + diff --git a/Shimterface/Shimterface.Standard.csproj b/Shimterface/Shimterface.Standard.csproj index ecb7e2b..7a571d0 100644 --- a/Shimterface/Shimterface.Standard.csproj +++ b/Shimterface/Shimterface.Standard.csproj @@ -4,13 +4,14 @@ true IFYates MIT - 1.6.6 - 1.6.6 - 1.6.6 + 1.6.7 + 1.6.7 + 1.6.7 https://github.com/IFYates/Shimterface https://github.com/IFYates/Shimterface GitHub - [v1.6.6] Fixed issue #16 - invalid shim for multiple args to generic type constructor + [v1.6.7] Fixed issue #17 - .NET 6 support for constructors on generic types +[v1.6.6] Fixed issue #16 - invalid shim for multiple args to generic type constructor [v1.6.5] Generic method can be used to construct a generic type (Issue #14) [v1.6.4] Can specify true implementation type in attribute, to work around explicit implementation hiding [v1.6.3] Fixed issue #12 - shim of hidden property From 1f4613bb54e6327f3a95004044c3eab672eed3fc Mon Sep 17 00:00:00 2001 From: I Freeman-Yates Date: Tue, 16 Nov 2021 14:07:45 +0000 Subject: [PATCH 4/8] Build against .NET 6 --- .github/workflows/dotnet.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 70665f9..b1c4cdf 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -14,10 +14,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Setup .NET 5 + - name: Setup .NET 6 uses: actions/setup-dotnet@v1.7.2 with: - dotnet-version: 5.0.x + dotnet-version: 6.0.x - name: Restore dependencies run: dotnet restore @@ -56,4 +56,4 @@ jobs: - name: Publish package uses: actions/upload-artifact@v2 with: - path: ./**/Shimterface.Standard.*.nupkg \ No newline at end of file + path: ./**/Shimterface.Standard.*.nupkg From c247aa2fd924f9df28a9a55803b8b237e48111d1 Mon Sep 17 00:00:00 2001 From: I Freeman-Yates Date: Tue, 16 Nov 2021 14:42:06 +0000 Subject: [PATCH 5/8] Enable all test frameworks --- .github/workflows/dotnet.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index b1c4cdf..ea0ba41 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -14,6 +14,14 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Setup .NET Core 3.1 + uses: actions/setup-dotnet@v1.7.2 + with: + dotnet-version: 3.1.x + - name: Setup .NET 5 + uses: actions/setup-dotnet@v1.7.2 + with: + dotnet-version: 5.0.x - name: Setup .NET 6 uses: actions/setup-dotnet@v1.7.2 with: From 358ee755c1b657ebb975e725bdc88e64458d7963 Mon Sep 17 00:00:00 2001 From: I Freeman-Yates Date: Tue, 16 Nov 2021 14:45:01 +0000 Subject: [PATCH 6/8] Fixed Styker detecting an auto-generated project --- .github/workflows/dotnet.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index ea0ba41..db3dd60 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -54,7 +54,7 @@ jobs: # verbose: true - name: Run Stryker.NET - run: cd ./Shimterface.Tests/; dotnet stryker --reporters "['cleartext','html','dashboard']" --dashboard-api-key ${{ secrets.STRYKER_DASHBOARD }} --dashboard-project github.com/IFYates/Shimterface --dashboard-version $GITHUB_REF + run: cd ./Shimterface.Tests/Shimterface.Standard.Tests.csproj; dotnet stryker --reporters "['cleartext','html','dashboard']" --dashboard-api-key ${{ secrets.STRYKER_DASHBOARD }} --dashboard-project github.com/IFYates/Shimterface --dashboard-version $GITHUB_REF - name: Upload mutation report uses: actions/upload-artifact@v2.2.2 with: From e3794db7ad1eb0b9523c685fa832aef5098b6504 Mon Sep 17 00:00:00 2001 From: I Freeman-Yates Date: Tue, 16 Nov 2021 15:00:41 +0000 Subject: [PATCH 7/8] Fix Stryker CLI use --- .github/workflows/dotnet.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index db3dd60..536f582 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -54,7 +54,7 @@ jobs: # verbose: true - name: Run Stryker.NET - run: cd ./Shimterface.Tests/Shimterface.Standard.Tests.csproj; dotnet stryker --reporters "['cleartext','html','dashboard']" --dashboard-api-key ${{ secrets.STRYKER_DASHBOARD }} --dashboard-project github.com/IFYates/Shimterface --dashboard-version $GITHUB_REF + run: cd ./Shimterface.Tests/; dotnet stryker --project Shimterface.Standard.Tests.csproj --reporters "['cleartext','html','dashboard']" --dashboard-api-key ${{ secrets.STRYKER_DASHBOARD }} --dashboard-project github.com/IFYates/Shimterface --dashboard-version $GITHUB_REF - name: Upload mutation report uses: actions/upload-artifact@v2.2.2 with: From bdb9efbca559b31b1250fe28fefa7ecc226a8b0f Mon Sep 17 00:00:00 2001 From: I Freeman-Yates Date: Tue, 16 Nov 2021 15:02:48 +0000 Subject: [PATCH 8/8] Disabling Stryker for now --- .github/workflows/dotnet.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 536f582..0742178 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -53,13 +53,13 @@ jobs: # files: coverage.cobertura.xml # verbose: true - - name: Run Stryker.NET - run: cd ./Shimterface.Tests/; dotnet stryker --project Shimterface.Standard.Tests.csproj --reporters "['cleartext','html','dashboard']" --dashboard-api-key ${{ secrets.STRYKER_DASHBOARD }} --dashboard-project github.com/IFYates/Shimterface --dashboard-version $GITHUB_REF - - name: Upload mutation report - uses: actions/upload-artifact@v2.2.2 - with: - name: mutation-report.html - path: ./**/mutation-report.html +# - name: Run Stryker.NET +# run: cd ./Shimterface.Tests/; dotnet stryker --project Shimterface.Standard.Tests.csproj --reporters "['cleartext','html','dashboard']" --dashboard-api-key ${{ secrets.STRYKER_DASHBOARD }} --dashboard-project github.com/IFYates/Shimterface --dashboard-version $GITHUB_REF +# - name: Upload mutation report +# uses: actions/upload-artifact@v2.2.2 +# with: +# name: mutation-report.html +# path: ./**/mutation-report.html - name: Publish package uses: actions/upload-artifact@v2