Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mikkrg@microsoft.com>2018-10-11 14:28:58 +0300
committerMike Krüger <mikkrg@microsoft.com>2018-10-11 14:30:13 +0300
commit4b55cb84cafa985e6325f857b5890745e46672ac (patch)
tree5d6f1978c625b2ed538bfb0b1246284908c2a263 /main/src/addins/MonoDevelop.UnitTesting
parent49733687242ce1186dde13cc9d6236696181b3e8 (diff)
Fixes VSTS Bug 701330: DTS: When adding Unit Test into the
application, the application will crash with a stack trace that seems to try to recursively add unit test over 85,000 times https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_workitems/edit/701330
Diffstat (limited to 'main/src/addins/MonoDevelop.UnitTesting')
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.Tests/MonoDevelop.UnitTesting.Tests/VsTestUnitTestTests.cs21
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestNamespaceTestGroup.cs4
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestUnitTest.cs3
3 files changed, 26 insertions, 2 deletions
diff --git a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.Tests/MonoDevelop.UnitTesting.Tests/VsTestUnitTestTests.cs b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.Tests/MonoDevelop.UnitTesting.Tests/VsTestUnitTestTests.cs
index 635d0b5197..4ae6127211 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.Tests/MonoDevelop.UnitTesting.Tests/VsTestUnitTestTests.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.Tests/MonoDevelop.UnitTesting.Tests/VsTestUnitTestTests.cs
@@ -27,6 +27,7 @@
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using MonoDevelop.UnitTesting.VsTest;
using NUnit.Framework;
+using System;
namespace MonoDevelop.UnitTesting.Tests
{
@@ -71,5 +72,25 @@ namespace MonoDevelop.UnitTesting.Tests
Assert.AreEqual (expectedFixtureTypeName, test.FixtureTypeName);
Assert.AreEqual (expectedName, test.Name);
}
+
+ /// <summary>
+ /// Bug 701330: DTS: When adding Unit Test into the application, the application will crash with a stack trace that seems to try to recursively add unit test over 85,000 times
+ /// </summary>
+ [Test]
+ public void TestVSTS701330 ()
+ {
+ var grp = new VsTestNamespaceTestGroup (null, null, null, "Test");
+ var uri = new Uri ("/test/Test.cs");
+ grp.AddTest (new MyVsTestUnitTest ("Test", "Test", "TestCase1"));
+ grp.AddTest (new MyVsTestUnitTest ("Test", "Test.Test", "TestCase1"));
+ }
+ class MyVsTestUnitTest : VsTestUnitTest
+ {
+ public MyVsTestUnitTest (string displayName, string fixtureTypeNamespace, string fixtureTypeName) : base(displayName)
+ {
+ FixtureTypeNamespace = fixtureTypeNamespace;
+ FixtureTypeName = fixtureTypeName;
+ }
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestNamespaceTestGroup.cs b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestNamespaceTestGroup.cs
index 3aa4f5e069..c0de605ff3 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestNamespaceTestGroup.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestNamespaceTestGroup.cs
@@ -62,7 +62,7 @@ namespace MonoDevelop.UnitTesting.VsTest
}
}
- void AddTest (VsTestUnitTest VsTestTest)
+ internal void AddTest (VsTestUnitTest VsTestTest)
{
string childNamespace = VsTestTest.GetChildNamespace (FixtureTypeNamespace);
if (string.IsNullOrEmpty (childNamespace)) {
@@ -71,7 +71,7 @@ namespace MonoDevelop.UnitTesting.VsTest
Tests.Add (currentClass);
}
currentClass.Tests.Add (VsTestTest);
- } else if (currentNamespace.Name == childNamespace) {
+ } else if (currentNamespace != this && currentNamespace.Name == childNamespace) {
currentNamespace.AddTest (VsTestTest);
} else {
currentNamespace = new VsTestNamespaceTestGroup (testRunner, currentNamespace, Project, childNamespace);
diff --git a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestUnitTest.cs b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestUnitTest.cs
index 0e414065a2..e78a0a9903 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestUnitTest.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestUnitTest.cs
@@ -44,6 +44,9 @@ namespace MonoDevelop.UnitTesting.VsTest
string name;
SourceCodeLocation sourceCodeLocation;
+ protected VsTestUnitTest(string displayName) : base (displayName)
+ { }
+
public VsTestUnitTest (IVsTestTestRunner testRunner, TestCase test, Project project)
: base (test.DisplayName)
{