diff options
author | Lluis Sanchez <llsan@microsoft.com> | 2018-12-17 14:40:23 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-17 14:40:23 +0300 |
commit | 1f8b4d40ef857c95e521eacd6213e814e6ab15fe (patch) | |
tree | a25bb54bfc7ec17ca1dd1339006bc44ea1a8b748 /main/src/addins/MonoDevelop.UnitTesting | |
parent | 4501a65d519f5b8c34c5371f1531ab8ead0dcbf5 (diff) | |
parent | d98e94c6ea8600e87803f35dd9a06aab15302d46 (diff) |
Merge pull request #6735 from mono/master-vsts729387
Fixes VSTS Bug 729387: [Feedback] Broken text editor unit test
Diffstat (limited to 'main/src/addins/MonoDevelop.UnitTesting')
7 files changed, 65 insertions, 15 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 8fa4dcb98d..eb3a3f208c 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 @@ -85,6 +85,17 @@ namespace MonoDevelop.UnitTesting.Tests grp.AddTest (new MyVsTestUnitTest ("Test", "Test", "TestCase1")); grp.AddTest (new MyVsTestUnitTest ("Test", "Test.Test", "TestCase1")); } + + /// <summary> + /// VSTS Bug 729387: [Feedback] Broken text editor unit test #6735 + /// </summary> + [Test] + public void TestVSTS729387 () + { + var test = CreateVsUnitTest ("Namespace.MyTest.Test1", "Test1"); + Assert.AreEqual ("Namespace.MyTest.Test1", test.TestSourceCodeDocumentId); + } + class MyVsTestUnitTest : VsTestUnitTest { public MyVsTestUnitTest (string displayName, string fixtureTypeNamespace, string fixtureTypeName) : base(displayName) 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 c0de605ff3..60c1c951a0 100644 --- a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestNamespaceTestGroup.cs +++ b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestNamespaceTestGroup.cs @@ -67,7 +67,7 @@ namespace MonoDevelop.UnitTesting.VsTest string childNamespace = VsTestTest.GetChildNamespace (FixtureTypeNamespace); if (string.IsNullOrEmpty (childNamespace)) { if (currentClass == null || currentClass.FixtureTypeName != VsTestTest.FixtureTypeName) { - currentClass = new VsTestTestClass (testRunner, Project, VsTestTest.FixtureTypeName); + currentClass = new VsTestTestClass (testRunner, Project, VsTestTest); Tests.Add (currentClass); } currentClass.Tests.Add (VsTestTest); diff --git a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestTestClass.cs b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestTestClass.cs index f008443107..1cd77f293a 100644 --- a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestTestClass.cs +++ b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestTestClass.cs @@ -37,12 +37,13 @@ namespace MonoDevelop.UnitTesting.VsTest public Project Project { get; private set; } IVsTestTestRunner testRunner; - public VsTestTestClass (IVsTestTestRunner testRunner, Project project, string name) - : base (name) + public VsTestTestClass (IVsTestTestRunner testRunner, Project project, VsTestUnitTest vsTestUnit) + : base (vsTestUnit.FixtureTypeName) { this.Project = project; this.testRunner = testRunner; - FixtureTypeName = name; + FixtureTypeName = vsTestUnit.FixtureTypeName; + TestSourceCodeDocumentId = string.IsNullOrEmpty (vsTestUnit.FixtureTypeNamespace) ? FixtureTypeName : vsTestUnit.FixtureTypeNamespace + "." + FixtureTypeName; } protected override UnitTestResult OnRun (TestContext testContext) 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 64af96eb9e..24a5e9dcc9 100644 --- a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestUnitTest.cs +++ b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.VsTest/VsTestUnitTest.cs @@ -60,6 +60,7 @@ namespace MonoDevelop.UnitTesting.VsTest void Init () { TestId = test.Id.ToString (); + TestSourceCodeDocumentId = test.FullyQualifiedName; if (!string.IsNullOrEmpty (test.CodeFilePath)) sourceCodeLocation = new SourceCodeLocation (test.CodeFilePath, test.LineNumber, 0); else { diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/AbstractUnitTestEditorExtension.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/AbstractUnitTestEditorExtension.cs index d1e5822717..58449a06a8 100644 --- a/main/src/addins/MonoDevelop.UnitTesting/Services/AbstractUnitTestEditorExtension.cs +++ b/main/src/addins/MonoDevelop.UnitTesting/Services/AbstractUnitTestEditorExtension.cs @@ -152,7 +152,7 @@ namespace MonoDevelop.UnitTesting public override Xwt.Drawing.Image GetStatusIcon (string unitTestIdentifier, string caseId = null) { - var test = UnitTestService.SearchTestById (unitTestIdentifier + caseId); + var test = UnitTestService.SearchTestByDocumentId (unitTestIdentifier + caseId); if (test != null) return test.StatusIcon; return TestStatusIcon.None; @@ -160,7 +160,7 @@ namespace MonoDevelop.UnitTesting public override bool IsFailure (string unitTestIdentifier, string caseId = null) { - var test = UnitTestService.SearchTestById (unitTestIdentifier + caseId); + var test = UnitTestService.SearchTestByDocumentId (unitTestIdentifier + caseId); if (test != null) { var result = test.GetLastResult (); if (result != null) @@ -171,7 +171,7 @@ namespace MonoDevelop.UnitTesting public override string GetMessage (string unitTestIdentifier, string caseId = null) { - var test = UnitTestService.SearchTestById (unitTestIdentifier + caseId); + var test = UnitTestService.SearchTestByDocumentId (unitTestIdentifier + caseId); if (test != null) { var result = test.GetLastResult (); if (result != null) @@ -182,7 +182,7 @@ namespace MonoDevelop.UnitTesting public override bool HasResult (string unitTestIdentifier, string caseId = null) { - return UnitTestService.SearchTestById (unitTestIdentifier + caseId) != null; + return UnitTestService.SearchTestByDocumentId (unitTestIdentifier + caseId) != null; } public override void PopupContextMenu (UnitTestLocation unitTest, int x, int y) @@ -240,7 +240,7 @@ namespace MonoDevelop.UnitTesting var label = "Test" + id; string tooltip = null; - var test = UnitTestService.SearchTestById (unitTest.UnitTestIdentifier + id); + var test = UnitTestService.SearchTestByDocumentId (unitTest.UnitTestIdentifier + id); if (test != null) { var result = test.GetLastResult (); if (result != null && result.IsFailure) { @@ -292,7 +292,7 @@ namespace MonoDevelop.UnitTesting bool TimeoutHandler () { - var test = UnitTestService.SearchTestById (testCase); + var test = UnitTestService.SearchTestByDocumentId (testCase); if (test != null) { RunTest (test); timeoutHandler = 0; @@ -308,7 +308,7 @@ namespace MonoDevelop.UnitTesting IdeApp.ProjectOperations.IsRunning (IdeApp.ProjectOperations.CurrentSelectedSolution)) return; - var foundTest = UnitTestService.SearchTestById (testCase); + var foundTest = UnitTestService.SearchTestByDocumentId (testCase); if (foundTest != null) { RunTest (foundTest); return; @@ -321,7 +321,7 @@ namespace MonoDevelop.UnitTesting await UnitTestService.RefreshTests (CancellationToken.None); } - foundTest = UnitTestService.SearchTestById (testCase); + foundTest = UnitTestService.SearchTestByDocumentId (testCase); if (foundTest != null) RunTest (foundTest); else @@ -330,7 +330,7 @@ namespace MonoDevelop.UnitTesting internal void Select (object sender, EventArgs e) { - var test = UnitTestService.SearchTestById (testCase); + var test = UnitTestService.SearchTestByDocumentId (testCase); if (test == null) return; UnitTestService.CurrentSelectedTest = test; diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs index cf5f615d0c..da956f00ae 100644 --- a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs +++ b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs @@ -238,7 +238,16 @@ namespace MonoDevelop.UnitTesting get; protected set; } - + + /// <summary> + /// Used for the text editor integration to identify the source code member connected to the unit test. + /// </summary> + public string TestSourceCodeDocumentId { + get; + protected set; + } + + public string FullName { get { if (parent != null) diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestService.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestService.cs index aaa2daa49d..9f89cee925 100644 --- a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestService.cs +++ b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestService.cs @@ -243,6 +243,16 @@ namespace MonoDevelop.UnitTesting return null; } + public static UnitTest SearchTestByDocumentId (string id) + { + foreach (UnitTest t in RootTests) { + UnitTest r = SearchTestByDocumentId (t, id); + if (r != null) + return r; + } + return null; + } + static UnitTest SearchTest (UnitTest test, string fullName) { @@ -270,7 +280,7 @@ namespace MonoDevelop.UnitTesting return test; UnitTestGroup group = test as UnitTestGroup; - if (group != null) { + if (group != null) { foreach (UnitTest t in group.Tests) { UnitTest result = SearchTestById (t, id); if (result != null) @@ -280,6 +290,24 @@ namespace MonoDevelop.UnitTesting return null; } + static UnitTest SearchTestByDocumentId (UnitTest test, string id) + { + if (test == null) + return null; + if (test.TestSourceCodeDocumentId == id) + return test; + + UnitTestGroup group = test as UnitTestGroup; + if (group != null) { + foreach (UnitTest t in group.Tests) { + UnitTest result = SearchTestByDocumentId (t, id); + if (result != null) + return result; + } + } + return null; + } + public static UnitTest FindRootTest (WorkspaceObject item) { return FindRootTest (RootTests, item); |