From 1df266ea9d3bfe012411ee4483f314d5fd984b7e Mon Sep 17 00:00:00 2001 From: Charlie Poole Date: Sun, 26 Sep 2021 15:18:56 -0700 Subject: [PATCH] Automatically skip non-test assemblies when loading solution --- src/extension/VSSolution.cs | 2 ++ src/tests/SolutionLoadTests.cs | 50 ++++++++++++++++------------------ 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/extension/VSSolution.cs b/src/extension/VSSolution.cs index 96ad193..648a251 100644 --- a/src/extension/VSSolution.cs +++ b/src/extension/VSSolution.cs @@ -90,6 +90,8 @@ public TestPackage GetTestPackage(string configName) } } + package.AddSetting("SkipNonTestAssemblies", true); + return package; } diff --git a/src/tests/SolutionLoadTests.cs b/src/tests/SolutionLoadTests.cs index be05add..1cbb213 100644 --- a/src/tests/SolutionLoadTests.cs +++ b/src/tests/SolutionLoadTests.cs @@ -42,9 +42,7 @@ public void VS2003Solution() { IProject project = _loader.LoadFrom(file.Path); - Assert.AreEqual(2, project.ConfigNames.Count); - Assert.AreEqual(4, project.GetTestPackage("Debug").SubPackages.Count); - Assert.AreEqual(4, project.GetTestPackage("Release").SubPackages.Count); + PerformStandardChecks(project, 4, 4); } } @@ -59,9 +57,7 @@ public void VS2005Solution() { IProject project = _loader.LoadFrom(file.Path); - Assert.AreEqual(2, project.ConfigNames.Count); - Assert.AreEqual(4, project.GetTestPackage("Debug").SubPackages.Count); - Assert.AreEqual(4, project.GetTestPackage("Release").SubPackages.Count); + PerformStandardChecks(project, 4, 4); } } @@ -72,13 +68,12 @@ public void SolutionWithMultiplePlatforms() using (TestResource file = new TestResource("solution-with-multiple-platforms.sln")) { IProject project = _loader.LoadFrom(file.Path); - Assert.That(project.ConfigNames, Is.EqualTo(new[] { "Debug", "Release" })); + PerformStandardChecks(project, 3, 3); string tempDir = Path.GetDirectoryName(file.Path); foreach (string config in project.ConfigNames) { var subPackages = project.GetTestPackage(config).SubPackages; - Assert.That(subPackages.Count, Is.EqualTo(3)); Assert.That(subPackages[0].FullName, Is.EqualTo( $"{tempDir}\\bin\\{config}\\MultiplePlatformProject.dll")); Assert.That(subPackages[1].FullName, Is.EqualTo( @@ -96,10 +91,8 @@ public void SolutionWithWebApplication() using (TestResource file = new TestResource("solution-with-web-application.sln")) { IProject project = _loader.LoadFrom(file.Path); - Assert.AreEqual(2, project.ConfigNames.Count); // Web project is ignored - Assert.AreEqual(1, project.GetTestPackage("Debug").SubPackages.Count); - Assert.AreEqual(1, project.GetTestPackage("Release").SubPackages.Count); + PerformStandardChecks(project, 1, 1); } } @@ -112,9 +105,7 @@ public void SolutionWithUnmanagedCpp() { IProject project = _loader.LoadFrom(file.Path); - Assert.AreEqual(2, project.ConfigNames.Count); - Assert.AreEqual(2, project.GetTestPackage("Debug").SubPackages.Count); - Assert.AreEqual(2, project.GetTestPackage("Release").SubPackages.Count); + PerformStandardChecks(project, 2, 2); } } @@ -126,9 +117,7 @@ public void SolutionWithDisabledProject() using (TestResource file = new TestResource("solution-with-disabled-project.sln")) { IProject project = _loader.LoadFrom(file.Path); - Assert.AreEqual(2, project.ConfigNames.Count); - Assert.AreEqual(2, project.GetTestPackage("Release").SubPackages.Count, "Release should have 2 assemblies"); - Assert.AreEqual(1, project.GetTestPackage("Debug").SubPackages.Count, "Debug should have 1 assembly"); + PerformStandardChecks(project, 1, 2); } } @@ -140,9 +129,7 @@ public void SolutionWithNonNunitTestProject() using (TestResource file = new TestResource("solution-with-non-nunit-project.sln")) { IProject project = _loader.LoadFrom(file.Path); - Assert.AreEqual(2, project.ConfigNames.Count); - Assert.AreEqual(2, project.GetTestPackage("Release").SubPackages.Count, "Release should have 2 assemblies"); - Assert.AreEqual(2, project.GetTestPackage("Debug").SubPackages.Count, "Debug should have 2 assemblies"); + PerformStandardChecks(project, 2, 2); } } @@ -153,9 +140,7 @@ public void SolutionWithProjectUsingPackageReference() using (TestResource file = new TestResource("solution-with-package-reference.sln")) { IProject project = _loader.LoadFrom(file.Path); - Assert.AreEqual(2, project.ConfigNames.Count); - Assert.AreEqual(1, project.GetTestPackage("Release").SubPackages.Count, "Release should have 1 assemblies"); - Assert.AreEqual(1, project.GetTestPackage("Debug").SubPackages.Count, "Debug should have 1 assembly"); + PerformStandardChecks(project, 1, 1); } } @@ -166,10 +151,23 @@ public void SolutionWithMultipleRuntimes() using (TestResource file = new TestResource("solution-multiple-frameworks.sln")) { IProject project = _loader.LoadFrom(file.Path); - Assert.AreEqual(2, project.ConfigNames.Count); - Assert.AreEqual(3, project.GetTestPackage("Release").SubPackages.Count, "Release should have 3 assemblies"); - Assert.AreEqual(3, project.GetTestPackage("Debug").SubPackages.Count, "Debug should have 3 assemblies"); + PerformStandardChecks(project, 3, 3); } } + + private void PerformStandardChecks(IProject project, int dbgCount, int relCount) + { + Assert.That(project.ConfigNames, Is.EqualTo(new object[] { "Debug", "Release" })); + + var package = project.GetTestPackage("Debug"); + Assert.That(package.SubPackages.Count, + Is.EqualTo(dbgCount), $"Debug should have {dbgCount} assemblies"); + Assert.That(package.Settings.ContainsKey("SkipNonTestAssemblies")); + + package = project.GetTestPackage("Release"); + Assert.That(package.SubPackages.Count, + Is.EqualTo(relCount), $"Release should have {relCount} assemblies"); + Assert.That(package.Settings.ContainsKey("SkipNonTestAssemblies")); + } } }