Skip to content
This repository was archived by the owner on Dec 12, 2017. It is now read-only.

Commit e0a453d

Browse files
committed
More robust execution of dynamic elements
Only include valid method and theory elements as known children of a class. Including invalid elements could confuse things - it's a known child, but there's no task, so the dynamic element isn't executed.
1 parent 36381e8 commit e0a453d

File tree

6 files changed

+27
-13
lines changed

6 files changed

+27
-13
lines changed

resharper/CommonAssemblyInfo.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
[assembly : AssemblyDescription("xUnit.net unit test provider for " + ProductInfo.Product)]
77
[assembly : AssemblyCopyright("Copyright (C) Matt Ellis")]
88
[assembly : ComVisible(false)]
9-
[assembly : AssemblyVersion("2.3.0.0")]
9+
[assembly : AssemblyVersion("2.3.1.0")]

resharper/nuget/xunitcontrib.nuspec

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@
33
<metadata>
44
<id>CitizenMatt.Xunit</id>
55
<title>xUnit.net Test Support for ReSharper 10</title>
6-
<version>2.3.0</version>
6+
<version>2.3.1</version>
77
<authors>Matt Ellis</authors>
88
<owners>Matt Ellis</owners>
99
<description>A unit test provider for xUnit.net. Discovers and runs xUnit.net 1.x and 2.x tests. Includes annotations to aid ReSharper inspections and Live Templates to speed up inserting test methods and asserts.</description>
1010
<summary>A unit test provider for xUnit.net</summary>
1111
<releaseNotes>
12+
&#8226; Fixed issue with discovering theories at runtime
13+
14+
From previous releases:
1215
&#8226; Support for ReSharper 10 (#82)
1316
&#8226; Inherited tests not showing in results (#79)
1417
&#8226; Theories can now be excluded by category (#89)

resharper/src/provider/UnitTestElements/XunitTestClassElement.cs

+3
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,12 @@ public override IEnumerable<IProjectFile> GetProjectFiles()
6767
public override IList<UnitTestTask> GetTaskSequence(ICollection<IUnitTestElement> explicitElements, IUnitTestRun run)
6868
{
6969
var knownMethods = from c in Children.OfType<XunitTestMethodElement>()
70+
where c.State.IsValid()
7071
select c.MethodName;
7172
var knownTheories = from c in Children.OfType<XunitTestMethodElement>()
73+
where c.State.IsValid()
7274
from gc in c.Children.OfType<XunitTestTheoryElement>()
75+
where gc.State.IsValid()
7376
select gc.ShortName;
7477
var knownChildren = new HashSet<string>(knownMethods);
7578
knownChildren.AddRange(knownTheories);

resharper/src/runner/DiagnosticMessages.cs

+13-7
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,20 @@ namespace XunitContrib.Runner.ReSharper.RemoteRunner
1111
public class DiagnosticMessages
1212
{
1313
private readonly DiagnosticsVisitor visitor;
14+
private readonly IList<string> messages;
1415

1516
public DiagnosticMessages(bool enabled)
1617
{
17-
visitor = new DiagnosticsVisitor(enabled);
18+
messages = new List<string>();
19+
visitor = new DiagnosticsVisitor(enabled, messages);
1820
}
1921

2022
public IMessageSink Visitor { get { return visitor; } }
21-
public bool HasMessages { get { return visitor.Messages.Count > 0; } }
23+
public bool HasMessages { get { return messages.Count > 0; } }
2224

2325
public string Messages
2426
{
25-
get { return string.Join(Environment.NewLine, visitor.Messages.ToArray()); }
27+
get { return string.Join(Environment.NewLine, messages.ToArray()); }
2628
}
2729

2830
public void Report(IRemoteTaskServer server)
@@ -34,24 +36,28 @@ public void Report(IRemoteTaskServer server)
3436
private class DiagnosticsVisitor : TestMessageVisitor
3537
{
3638
private readonly bool enabled;
39+
private readonly IList<string> messages;
3740

38-
public DiagnosticsVisitor(bool enabled)
41+
public DiagnosticsVisitor(bool enabled, IList<string> messages)
3942
{
4043
this.enabled = enabled;
41-
Messages = new List<string>();
44+
this.messages = messages;
4245
}
4346

4447
protected override bool Visit(IDiagnosticMessage diagnosticMessage)
4548
{
4649
if (enabled && !string.IsNullOrEmpty(diagnosticMessage.Message))
4750
{
4851
Logger.LogVerbose("xunit diagnostic: {0}", diagnosticMessage.Message);
49-
Messages.Add(diagnosticMessage.Message);
52+
messages.Add(diagnosticMessage.Message);
5053
}
5154
return base.Visit(diagnosticMessage);
5255
}
56+
}
5357

54-
public IList<string> Messages { get; private set; }
58+
public void Add(string message)
59+
{
60+
messages.Add(message);
5561
}
5662
}
5763
}

resharper/src/runner/Tasks/XunitTaskBase.cs

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Xml;
22
using JetBrains.ReSharper.TaskRunnerFramework;
3+
using JetBrains.ReSharper.UnitTestFramework;
34

45
namespace XunitContrib.Runner.ReSharper.RemoteRunner.Tasks
56
{

resharper/src/runner/TestRunner.cs

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using JetBrains.ReSharper.TaskRunnerFramework;
3+
using JetBrains.Util;
34
using Xunit;
45
using XunitContrib.Runner.ReSharper.RemoteRunner.Logging;
56
using XunitContrib.Runner.ReSharper.RemoteRunner.Tasks;
@@ -31,7 +32,9 @@ public void Run(XunitTestAssemblyTask assemblyTask)
3132
var discoverer = new Discoverer(controller, RunContext, environment);
3233
var testCases = discoverer.GetTestCases();
3334

34-
// TODO: Report something if no test cases?
35+
if (testCases.Count == 0)
36+
throw new InternalErrorException("Unexpected: Unable to find any matching test cases");
37+
3538
if (testCases.Count > 0)
3639
{
3740
RunContext.AddRange(testCases);
@@ -66,15 +69,13 @@ private void ReportException(XunitTestAssemblyTask assemblyTask, TestEnvironment
6669
{
6770
Logger.LogException(e);
6871

69-
var message = e.Message + Environment.NewLine + Environment.NewLine +
70-
"(Note: xUnit.net ReSharper runner requires projects are built with xUnit.net 2.0.0 RTM or later)";
7172
var description = "Exception: " + e;
7273
if (environment.DiagnosticMessages != null && environment.DiagnosticMessages.HasMessages)
7374
{
7475
description = string.Format("{0}{1}{1}Diagnostic Messages:{1}{2}", description,
7576
Environment.NewLine, environment.DiagnosticMessages.Messages);
7677
}
77-
server.ShowNotification("Unable to run xUnit.net tests - " + message, description);
78+
server.ShowNotification("Unable to run xUnit.net tests - " + e.Message, description);
7879

7980
// This doesn't help - assemblyTask doesn't map to anything in the tree...
8081
server.TaskException(assemblyTask, new[] {new TaskException(e)});

0 commit comments

Comments
 (0)