Skip to content

Commit 8dc6569

Browse files
committed
Merge branch 'mocha-skip-support' into v1.3.x
2 parents e06b3a8 + 66a344f commit 8dc6569

File tree

2 files changed

+58
-31
lines changed

2 files changed

+58
-31
lines changed

Nodejs/Product/Nodejs/TestFrameworks/mocha/mocha.js

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@
22
var EOL = require('os').EOL;
33
var fs = require('fs');
44
var path = require('path');
5-
var result = {
6-
'title': '',
7-
'passed': false,
8-
'stdOut': '',
9-
'stdErr': ''
10-
};
115
// Choose 'tap' rather than 'min' or 'xunit'. The reason is that
126
// 'min' produces undisplayable text to stdout and stderr under piped/redirect,
137
// and 'xunit' does not print the stack trace from the test.
@@ -22,6 +16,17 @@ function hook_outputs() {
2216
process.stdout.write = append_stdout;
2317
process.stderr.write = append_stderr;
2418
}
19+
function reset_result() {
20+
return {
21+
'title': '',
22+
'passed': false,
23+
'pending': false,
24+
'stdOut': '',
25+
'stdErr': ''
26+
};
27+
}
28+
29+
var result = reset_result();
2530

2631
hook_outputs();
2732

@@ -142,6 +147,17 @@ var run_tests = function (testCases, callback) {
142147
});
143148
});
144149

150+
runner.on('pending', function (test) {
151+
result.pending = true;
152+
result.title = test.fullTitle();
153+
post({
154+
type: 'pending',
155+
title: result.title,
156+
result: result
157+
});
158+
result = reset_result();
159+
});
160+
145161
runner.on('test', function (test) {
146162
result.title = test.fullTitle();
147163
post({
@@ -164,12 +180,7 @@ var run_tests = function (testCases, callback) {
164180
title: result.title,
165181
result: result
166182
});
167-
result = {
168-
'title': '',
169-
'passed': false,
170-
'stdOut': '',
171-
'stdErr': ''
172-
}
183+
result = reset_result();
173184
});
174185

175186
runner.on('fail', function (test, err) {
@@ -179,12 +190,7 @@ var run_tests = function (testCases, callback) {
179190
title: result.title,
180191
result: result
181192
});
182-
result = {
183-
'title': '',
184-
'passed': false,
185-
'stdOut': '',
186-
'stdErr': ''
187-
}
193+
result = reset_result();
188194
});
189195
};
190196

Nodejs/Product/TestAdapter/TestExecutor.cs

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,18 +88,29 @@ private void ProcessTestRunnerEmit(string line)
8888
{
8989
TestEvent testEvent = JsonConvert.DeserializeObject<TestEvent>(line);
9090
// Extract test from list of tests
91-
var test = _currentTests.Where(n => n.DisplayName == testEvent.title);
92-
if (test.Count() > 0)
91+
var tests = _currentTests.Where(n => n.DisplayName == testEvent.title);
92+
if (tests.Count() > 0)
9393
{
94-
if (testEvent.type == "test start")
94+
switch (testEvent.type)
9595
{
96-
_currentResult = new TestResult(test.First());
97-
_currentResult.StartTime = DateTimeOffset.Now;
98-
_frameworkHandle.RecordStart(test.First());
99-
}
100-
else if (testEvent.type == "result")
101-
{
102-
RecordEnd(_frameworkHandle, test.First(), _currentResult, testEvent.result);
96+
case "test start":
97+
{
98+
_currentResult = new TestResult(tests.First());
99+
_currentResult.StartTime = DateTimeOffset.Now;
100+
_frameworkHandle.RecordStart(tests.First());
101+
}
102+
break;
103+
case "result":
104+
{
105+
RecordEnd(_frameworkHandle, tests.First(), _currentResult, testEvent.result);
106+
}
107+
break;
108+
case "pending":
109+
{
110+
_currentResult = new TestResult(tests.First());
111+
RecordEnd(_frameworkHandle, tests.First(), _currentResult, testEvent.result);
112+
}
113+
break;
103114
}
104115
}
105116
else if (testEvent.type == "suite end")
@@ -345,9 +356,17 @@ private NodejsProjectSettings LoadProjectSettings(string projectFile) {
345356
private void RecordEnd(IFrameworkHandle frameworkHandle, TestCase test, TestResult result, ResultObject resultObject) {
346357
String[] standardOutputLines = resultObject.stdout.Split('\n');
347358
String[] standardErrorLines = resultObject.stderr.Split('\n');
348-
result.EndTime = DateTimeOffset.Now;
349-
result.Duration = result.EndTime - result.StartTime;
350-
result.Outcome = resultObject.passed ? TestOutcome.Passed : TestOutcome.Failed;
359+
360+
if (null != resultObject.pending && (bool)resultObject.pending)
361+
{
362+
result.Outcome = TestOutcome.Skipped;
363+
}
364+
else
365+
{
366+
result.EndTime = DateTimeOffset.Now;
367+
result.Duration = result.EndTime - result.StartTime;
368+
result.Outcome = resultObject.passed ? TestOutcome.Passed : TestOutcome.Failed;
369+
}
351370
result.Messages.Add(new TestResultMessage(TestResultMessage.StandardOutCategory, String.Join(Environment.NewLine, standardOutputLines)));
352371
result.Messages.Add(new TestResultMessage(TestResultMessage.StandardErrorCategory, String.Join(Environment.NewLine, standardErrorLines)));
353372
result.Messages.Add(new TestResultMessage(TestResultMessage.AdditionalInfoCategory, String.Join(Environment.NewLine, standardErrorLines)));
@@ -397,11 +416,13 @@ class ResultObject {
397416
public ResultObject() {
398417
title = String.Empty;
399418
passed = false;
419+
pending = false;
400420
stdout = String.Empty;
401421
stderr = String.Empty;
402422
}
403423
public string title { get; set; }
404424
public bool passed { get; set; }
425+
public bool? pending { get; set; }
405426
public string stdout { get; set; }
406427
public string stderr { get; set; }
407428
}

0 commit comments

Comments
 (0)