Skip to content

Commit

Permalink
fix(merge-reports): do not fail in case of intersecting suite and sta…
Browse files Browse the repository at this point in the history
…te names
  • Loading branch information
eGavr committed Feb 28, 2019
1 parent a1bfe2f commit 13d2e5a
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/merge-reports/data-tree.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ module.exports = class DataTree {
this._data.suites.push(suite);
} else {
const existentParentSuite = findNode(this._data.suites, suite.suitePath.slice(0, -1));
existentParentSuite.children = existentParentSuite.children || [];
existentParentSuite.children.push(suite);
}

Expand All @@ -89,6 +90,7 @@ module.exports = class DataTree {

async _addBrowserResult(bro, suitePath) {
const existentParentSuite = findNode(this._data.suites, suitePath);
existentParentSuite.browsers = existentParentSuite.browsers || [];
existentParentSuite.browsers.push(bro);

this._mergeStatistics(bro);
Expand Down
74 changes: 74 additions & 0 deletions test/lib/merge-reports/data-tree.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,80 @@ describe('lib/merge-reports/data-tree', () => {
assert.deepEqual(suites[0].children[0].browsers[0], srcDataSuites2.children[0].browsers[0]);
});

it('should add data to state from suite with the same name', async () => {
const srcDataSuites1 = mkSuite({
suitePath: ['suite'],
children: [mkState({
suitePath: ['suite', 'state'],
browsers: [mkBrowserResult()]
})]
});
const srcDataSuites2 = mkSuite({
suitePath: ['suite'],
children: [mkSuite({
suitePath: ['suite', 'state'],
children: [mkState({
suitePath: ['suite', 'state', 'state'],
browsers: [mkBrowserResult()]
})]
})]
});
const expected = mkSuite({
suitePath: ['suite'],
children: [mkState({
suitePath: ['suite', 'state'],
browsers: [mkBrowserResult()],
children: [mkState({
suitePath: ['suite', 'state', 'state'],
browsers: [mkBrowserResult()]
})]
})]
});

const initialData = {suites: [srcDataSuites1]};
const dataCollection = {'src-report/path': {suites: [srcDataSuites2]}};
const {suites} = await mkDataTree_(initialData).mergeWith(dataCollection);

assert.deepEqual(suites[0], expected);
});

it('should add data to suite from state with the same name', async () => {
const srcDataSuites1 = mkSuite({
suitePath: ['suite'],
children: [mkSuite({
suitePath: ['suite', 'state'],
children: [mkState({
suitePath: ['suite', 'state', 'state'],
browsers: [mkBrowserResult()]
})]
})]
});
const srcDataSuites2 = mkSuite({
suitePath: ['suite'],
children: [mkState({
suitePath: ['suite', 'state'],
browsers: [mkBrowserResult()]
})]
});
const expected = mkSuite({
suitePath: ['suite'],
children: [mkState({
suitePath: ['suite', 'state'],
browsers: [mkBrowserResult()],
children: [mkState({
suitePath: ['suite', 'state', 'state'],
browsers: [mkBrowserResult()]
})]
})]
});

const initialData = {suites: [srcDataSuites1]};
const dataCollection = {'src-report/path': {suites: [srcDataSuites2]}};
const {suites} = await mkDataTree_(initialData).mergeWith(dataCollection);

assert.deepEqual(suites[0], expected);
});

describe('from existent browser with correct modified "attempt" field', () => {
it('should merge browser results if there are no successful tests', async () => {
const srcDataSuites1 = mkSuiteTree({
Expand Down

0 comments on commit 13d2e5a

Please sign in to comment.