Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up XUnitParser and add tests. #7263

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
4a5e485
Clean up the file a little.
ericsnowcurrently Aug 29, 2019
b2883f5
Use IFileSystem instead of fs directly.
ericsnowcurrently Aug 29, 2019
2cd1507
Add missing doc comments.
ericsnowcurrently Aug 29, 2019
a69667b
Add a commented-out testing helper.
ericsnowcurrently Sep 5, 2019
46fa9c4
Add some general testing helpers.
ericsnowcurrently Sep 5, 2019
64f2760
Add testing helpers for test nodes.
ericsnowcurrently Sep 5, 2019
436e4b3
Add basic unit tests for XUnitParser.updateResultsFromXmlLogFile().
ericsnowcurrently Sep 5, 2019
b17675a
Factor out updateTests().
ericsnowcurrently Sep 5, 2019
fbceaf4
Make updateResultsFromXmlLogFile() properly async again.
ericsnowcurrently Sep 6, 2019
96b012b
Make XUnitParser.updateResultsFromXmlLogFile() explicitly async.
ericsnowcurrently Sep 6, 2019
0a37722
Merge updateResultsFromXmlLogFile() into XUnitParser.updateResultsFro…
ericsnowcurrently Sep 6, 2019
f513004
Handle passCalculationFormulae earlier.
ericsnowcurrently Sep 6, 2019
3e159d6
Wrap the callback-oriented xml2js.parseString in an async function.
ericsnowcurrently Sep 6, 2019
c6d8ae5
Fix createFileResults() on Windows.
ericsnowcurrently Sep 6, 2019
176c956
Factor out updateSummary().
ericsnowcurrently Sep 17, 2019
832cc24
Factor out findTestFunction().
ericsnowcurrently Sep 17, 2019
0f4a96e
Factor out updateResultInfo() and updateResultStatus().
ericsnowcurrently Sep 17, 2019
019d0d9
Add a comment about unknown tests.
ericsnowcurrently Sep 17, 2019
5959283
Link to the GH issue for missing tests.
ericsnowcurrently Sep 17, 2019
8f781bd
Drop the commented-out util line.
ericsnowcurrently Sep 17, 2019
9b66793
Use "await import" instead of "require".
ericsnowcurrently Sep 17, 2019
ab9c4a1
Combine helpers-nodes and helpers-results.
ericsnowcurrently Sep 18, 2019
b8a0967
Combine helpers-declarative and helpers-results.
ericsnowcurrently Sep 18, 2019
8145887
Clean up testing common types.
ericsnowcurrently Sep 18, 2019
4c8aafe
Drop PassCalculationFormulae.
ericsnowcurrently Sep 18, 2019
bed432c
Drop Node.
ericsnowcurrently Sep 18, 2019
ef054bd
TestType -> TestDataItemType
ericsnowcurrently Sep 18, 2019
e1b7f84
Factor out TestingNode and TestingXMLNode.
ericsnowcurrently Sep 18, 2019
62bd8ae
Drop a dead comment.
ericsnowcurrently Sep 19, 2019
2d46d6a
Fix TestDataItemType.
ericsnowcurrently Sep 19, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions src/client/testing/common/services/discoveredTestParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import * as path from 'path';
import { Uri } from 'vscode';
import { IWorkspaceService } from '../../../common/application/types';
import { traceError } from '../../../common/logger';
import { TestDataItem } from '../../types';
import { getParentFile, getParentSuite, getTestType } from '../testUtils';
import { TestDataItem, TestDataItemType } from '../../types';
import { getParentFile, getParentSuite, getTestDataItemType } from '../testUtils';
import * as testing from '../types';
import * as discovery from './types';

Expand Down Expand Up @@ -74,17 +74,17 @@ export class TestDiscoveredTestParser implements discovery.ITestDiscoveredTestPa
discoveredTests: discovery.DiscoveredTests,
tests: testing.Tests
) {
const parentType = getTestType(parent);
const parentType = getTestDataItemType(parent);
switch (parentType) {
case testing.TestType.testFolder: {
case TestDataItemType.folder: {
this.processFolder(rootFolder, parent as testing.TestFolder, discoveredTests, tests);
break;
}
case testing.TestType.testFile: {
case TestDataItemType.file: {
this.processFile(rootFolder, parent as testing.TestFile, discoveredTests, tests);
break;
}
case testing.TestType.testSuite: {
case TestDataItemType.suite: {
this.processSuite(rootFolder, parent as testing.TestSuite, discoveredTests, tests);
break;
}
Expand Down Expand Up @@ -383,11 +383,11 @@ function createFlattenedParameterizedFunction(
func: testing.TestFunction,
parent: testing.TestFile | testing.TestSuite
): testing.FlattenedTestFunction {
const type = getTestType(parent);
const parentFile = (type && type === testing.TestType.testSuite) ?
const type = getTestDataItemType(parent);
const parentFile = (type && type === TestDataItemType.suite) ?
getParentFile(tests, func) :
parent as testing.TestFile;
const parentSuite = (type && type === testing.TestType.testSuite) ?
const parentSuite = (type && type === TestDataItemType.suite) ?
parent as testing.TestSuite :
undefined;
return {
Expand All @@ -403,8 +403,8 @@ function createFlattenedFunction(
func: testing.TestFunction
): testing.FlattenedTestFunction {
const parent = getParentFile(tests, func);
const type = parent ? getTestType(parent) : undefined;
const parentFile = (type && type === testing.TestType.testSuite) ?
const type = parent ? getTestDataItemType(parent) : undefined;
const parentFile = (type && type === TestDataItemType.suite) ?
getParentFile(tests, func) :
parent as testing.TestFile;
const parentSuite = getParentSuite(tests, func);
Expand Down
10 changes: 5 additions & 5 deletions src/client/testing/common/services/testResultsService.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { inject, injectable, named } from 'inversify';
import { TestDataItem } from '../../types';
import { getChildren, getTestType } from '../testUtils';
import { ITestResultsService, ITestVisitor, Tests, TestStatus, TestType } from './../types';
import { TestDataItem, TestDataItemType } from '../../types';
import { getChildren, getTestDataItemType } from '../testUtils';
import { ITestResultsService, ITestVisitor, Tests, TestStatus } from '../types';

@injectable()
export class TestResultsService implements ITestResultsService {
Expand Down Expand Up @@ -33,7 +33,7 @@ export class TestResultsService implements ITestResultsService {
}
}
private updateTestItem(test: TestDataItem): void {
if (getTestType(test) === TestType.testFunction) {
if (getTestDataItemType(test) === TestDataItemType.function) {
return;
}
let allChildrenPassed = true;
Expand All @@ -42,7 +42,7 @@ export class TestResultsService implements ITestResultsService {

const children = getChildren(test);
children.forEach(child => {
if (getTestType(child) === TestType.testFunction) {
if (getTestDataItemType(child) === TestDataItemType.function) {
if (typeof child.passed === 'boolean') {
noChildrenRan = false;
if (child.passed) {
Expand Down
41 changes: 20 additions & 21 deletions src/client/testing/common/testUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { IApplicationShell, ICommandManager } from '../../common/application/typ
import * as constants from '../../common/constants';
import { ITestingSettings, Product } from '../../common/types';
import { IServiceContainer } from '../../ioc/types';
import { TestDataItem, TestWorkspaceFolder } from '../types';
import { TestDataItem, TestDataItemType, TestWorkspaceFolder } from '../types';
import { CommandSource } from './constants';
import { TestFlatteningVisitor } from './testVisitors/flatteningVisitor';
import {
Expand All @@ -21,7 +21,6 @@ import {
TestSettingsPropertyNames,
TestsToRun,
TestSuite,
TestType,
UnitTestProduct
} from './types';

Expand Down Expand Up @@ -244,21 +243,21 @@ export class TestsHelper implements ITestsHelper {
}
}

export function getTestType(test: TestDataItem): TestType {
export function getTestDataItemType(test: TestDataItem): TestDataItemType {
if (test instanceof TestWorkspaceFolder) {
return TestType.testWorkspaceFolder;
return TestDataItemType.workspaceFolder;
}
if (getTestFile(test)) {
return TestType.testFile;
return TestDataItemType.file;
}
if (getTestFolder(test)) {
return TestType.testFolder;
return TestDataItemType.folder;
}
if (getTestSuite(test)) {
return TestType.testSuite;
return TestDataItemType.suite;
}
if (getTestFunction(test)) {
return TestType.testFunction;
return TestDataItemType.function;
}
throw new Error('Unknown test type');
}
Expand Down Expand Up @@ -305,14 +304,14 @@ export function getTestFunction(test: TestDataItem): TestFunction | undefined {
* @returns {(TestDataItem | undefined)}
*/
export function getParent(tests: Tests, data: TestDataItem): TestDataItem | undefined {
switch (getTestType(data)) {
case TestType.testFile: {
switch (getTestDataItemType(data)) {
case TestDataItemType.file: {
return getParentTestFolderForFile(tests, data as TestFile);
}
case TestType.testFolder: {
case TestDataItemType.folder: {
return getParentTestFolder(tests, data as TestFolder);
}
case TestType.testSuite: {
case TestDataItemType.suite: {
const suite = data as TestSuite;
if (isSubtestsParent(suite)) {
const fn = suite.functions[0];
Expand All @@ -328,7 +327,7 @@ export function getParent(tests: Tests, data: TestDataItem): TestDataItem | unde
}
return tests.testFiles.find(item => item.suites.indexOf(suite) >= 0);
}
case TestType.testFunction: {
case TestDataItemType.function: {
const fn = data as TestFunction;
if (fn.subtestParent) {
return fn.subtestParent.asSuite;
Expand All @@ -354,7 +353,7 @@ export function getParent(tests: Tests, data: TestDataItem): TestDataItem | unde
* @returns {(TestFolder | undefined)}
*/
function getParentTestFolder(tests: Tests, item: TestFolder | TestFile): TestFolder | undefined {
if (getTestType(item) === TestType.testFolder) {
if (getTestDataItemType(item) === TestDataItemType.folder) {
return getParentTestFolderForFolder(tests, item as TestFolder);
}
return getParentTestFolderForFile(tests, item as TestFile);
Expand All @@ -370,7 +369,7 @@ function getParentTestFolder(tests: Tests, item: TestFolder | TestFile): TestFol
export function getParentFile(tests: Tests, suite: TestSuite | TestFunction): TestFile {
let parent = getParent(tests, suite);
while (parent) {
if (getTestType(parent) === TestType.testFile) {
if (getTestDataItemType(parent) === TestDataItemType.file) {
return parent as TestFile;
}
parent = getParent(tests, parent);
Expand All @@ -387,7 +386,7 @@ export function getParentFile(tests: Tests, suite: TestSuite | TestFunction): Te
export function getParentSuite(tests: Tests, suite: TestSuite | TestFunction): TestSuite | undefined {
let parent = getParent(tests, suite);
while (parent) {
if (getTestType(parent) === TestType.testSuite) {
if (getTestDataItemType(parent) === TestDataItemType.suite) {
return parent as TestSuite;
}
parent = getParent(tests, parent);
Expand Down Expand Up @@ -453,22 +452,22 @@ export function findFlattendTestSuite(tests: Tests, suite: TestSuite): Flattened
* @returns {TestDataItem[]}
*/
export function getChildren(item: TestDataItem): TestDataItem[] {
switch (getTestType(item)) {
case TestType.testFolder: {
switch (getTestDataItemType(item)) {
case TestDataItemType.folder: {
return [
...(item as TestFolder).folders,
...(item as TestFolder).testFiles
];
}
case TestType.testFile: {
case TestDataItemType.file: {
const [subSuites, functions] = divideSubtests((item as TestFile).functions);
return [
...functions,
...(item as TestFile).suites,
...subSuites
];
}
case TestType.testSuite: {
case TestDataItemType.suite: {
let subSuites: TestSuite[] = [];
let functions = (item as TestSuite).functions;
if (!isSubtestsParent((item as TestSuite))) {
Expand All @@ -480,7 +479,7 @@ export function getChildren(item: TestDataItem): TestDataItem[] {
...subSuites
];
}
case TestType.testFunction: {
case TestDataItemType.function: {
return [];
}
default: {
Expand Down
Loading