Deprecate spec/suite orders that interleave suites
This commit is contained in:
@@ -107,7 +107,7 @@ var getJasmineRequireObj = (function(jasmineGlobal) {
|
|||||||
j$.Suite = jRequire.Suite(j$);
|
j$.Suite = jRequire.Suite(j$);
|
||||||
j$.SuiteBuilder = jRequire.SuiteBuilder(j$);
|
j$.SuiteBuilder = jRequire.SuiteBuilder(j$);
|
||||||
j$.Timer = jRequire.Timer();
|
j$.Timer = jRequire.Timer();
|
||||||
j$.TreeProcessor = jRequire.TreeProcessor();
|
j$.TreeProcessor = jRequire.TreeProcessor(j$);
|
||||||
j$.version = jRequire.version();
|
j$.version = jRequire.version();
|
||||||
j$.Order = jRequire.Order();
|
j$.Order = jRequire.Order();
|
||||||
j$.DiffBuilder = jRequire.DiffBuilder(j$);
|
j$.DiffBuilder = jRequire.DiffBuilder(j$);
|
||||||
@@ -11299,7 +11299,7 @@ getJasmineRequireObj().Timer = function() {
|
|||||||
return Timer;
|
return Timer;
|
||||||
};
|
};
|
||||||
|
|
||||||
getJasmineRequireObj().TreeProcessor = function() {
|
getJasmineRequireObj().TreeProcessor = function(j$) {
|
||||||
const defaultMin = Infinity;
|
const defaultMin = Infinity;
|
||||||
const defaultMax = 1 - Infinity;
|
const defaultMax = 1 - Infinity;
|
||||||
|
|
||||||
@@ -11429,14 +11429,17 @@ getJasmineRequireObj().TreeProcessor = function() {
|
|||||||
|
|
||||||
segmentChildren(node, orderedChildren, this.#stats, executableIndex);
|
segmentChildren(node, orderedChildren, this.#stats, executableIndex);
|
||||||
|
|
||||||
if (
|
if (this.#stats[node.id].segments.length > 1) {
|
||||||
!node.canBeReentered() &&
|
if (node.canBeReentered()) {
|
||||||
this.#stats[node.id].segments.length > 1
|
j$.getEnv().deprecated(
|
||||||
) {
|
'The specified spec/suite order splits up a suite, running unrelated specs in the middle of it. This will become an error in a future release.'
|
||||||
this.#stats = { valid: false };
|
);
|
||||||
throw new Error(
|
} else {
|
||||||
'Invalid order: would cause a beforeAll or afterAll to be run multiple times'
|
this.#stats = { valid: false };
|
||||||
);
|
throw new Error(
|
||||||
|
'Invalid order: would cause a beforeAll or afterAll to be run multiple times'
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -241,18 +241,24 @@ describe('TreeProcessor', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('marks the run order valid if a node being re-entered allows re-entry', function() {
|
it('marks the run order valid if a node being re-entered allows re-entry', function() {
|
||||||
const leaf1 = new Leaf(),
|
const leaf1 = new Leaf();
|
||||||
leaf2 = new Leaf(),
|
const leaf2 = new Leaf();
|
||||||
leaf3 = new Leaf(),
|
const leaf3 = new Leaf();
|
||||||
reentered = new Node({ children: [leaf1, leaf2] }),
|
const reentered = new Node({ children: [leaf1, leaf2] });
|
||||||
root = new Node({ children: [reentered, leaf3] }),
|
const root = new Node({ children: [reentered, leaf3] });
|
||||||
processor = new jasmineUnderTest.TreeProcessor({
|
const processor = new jasmineUnderTest.TreeProcessor({
|
||||||
tree: root,
|
tree: root,
|
||||||
runnableIds: [leaf1.id, leaf3.id, leaf2.id]
|
runnableIds: [leaf1.id, leaf3.id, leaf2.id]
|
||||||
}),
|
});
|
||||||
result = processor.processTree();
|
const env = jasmineUnderTest.getEnv();
|
||||||
|
spyOn(env, 'deprecated');
|
||||||
|
|
||||||
|
const result = processor.processTree();
|
||||||
|
|
||||||
expect(result.valid).toBe(true);
|
expect(result.valid).toBe(true);
|
||||||
|
expect(env.deprecated).toHaveBeenCalledWith(
|
||||||
|
'The specified spec/suite order splits up a suite, running unrelated specs in the middle of it. This will become an error in a future release.'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("marks the run order valid if a node which can't be re-entered is only entered once", function() {
|
it("marks the run order valid if a node which can't be re-entered is only entered once", function() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
getJasmineRequireObj().TreeProcessor = function() {
|
getJasmineRequireObj().TreeProcessor = function(j$) {
|
||||||
const defaultMin = Infinity;
|
const defaultMin = Infinity;
|
||||||
const defaultMax = 1 - Infinity;
|
const defaultMax = 1 - Infinity;
|
||||||
|
|
||||||
@@ -128,14 +128,17 @@ getJasmineRequireObj().TreeProcessor = function() {
|
|||||||
|
|
||||||
segmentChildren(node, orderedChildren, this.#stats, executableIndex);
|
segmentChildren(node, orderedChildren, this.#stats, executableIndex);
|
||||||
|
|
||||||
if (
|
if (this.#stats[node.id].segments.length > 1) {
|
||||||
!node.canBeReentered() &&
|
if (node.canBeReentered()) {
|
||||||
this.#stats[node.id].segments.length > 1
|
j$.getEnv().deprecated(
|
||||||
) {
|
'The specified spec/suite order splits up a suite, running unrelated specs in the middle of it. This will become an error in a future release.'
|
||||||
this.#stats = { valid: false };
|
);
|
||||||
throw new Error(
|
} else {
|
||||||
'Invalid order: would cause a beforeAll or afterAll to be run multiple times'
|
this.#stats = { valid: false };
|
||||||
);
|
throw new Error(
|
||||||
|
'Invalid order: would cause a beforeAll or afterAll to be run multiple times'
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ var getJasmineRequireObj = (function(jasmineGlobal) {
|
|||||||
j$.Suite = jRequire.Suite(j$);
|
j$.Suite = jRequire.Suite(j$);
|
||||||
j$.SuiteBuilder = jRequire.SuiteBuilder(j$);
|
j$.SuiteBuilder = jRequire.SuiteBuilder(j$);
|
||||||
j$.Timer = jRequire.Timer();
|
j$.Timer = jRequire.Timer();
|
||||||
j$.TreeProcessor = jRequire.TreeProcessor();
|
j$.TreeProcessor = jRequire.TreeProcessor(j$);
|
||||||
j$.version = jRequire.version();
|
j$.version = jRequire.version();
|
||||||
j$.Order = jRequire.Order();
|
j$.Order = jRequire.Order();
|
||||||
j$.DiffBuilder = jRequire.DiffBuilder(j$);
|
j$.DiffBuilder = jRequire.DiffBuilder(j$);
|
||||||
|
|||||||
Reference in New Issue
Block a user