Convreted TreeProcessor to async/await

This commit is contained in:
Steve Gravrock
2022-08-22 17:04:44 -07:00
parent fec8dd37b0
commit b3d9435dbb
4 changed files with 129 additions and 131 deletions

View File

@@ -8518,10 +8518,8 @@ getJasmineRequireObj().Runner = function(j$) {
}); });
this.currentlyExecutingSuites_.push(this.topSuite_); this.currentlyExecutingSuites_.push(this.topSuite_);
await processor.execute();
return new Promise(resolve => {
processor.execute(() => {
(async () => {
if (this.topSuite_.hadBeforeAllFailure) { if (this.topSuite_.hadBeforeAllFailure) {
await this.reportChildrenOfBeforeAllFailure_(this.topSuite_); await this.reportChildrenOfBeforeAllFailure_(this.topSuite_);
} }
@@ -8566,10 +8564,7 @@ getJasmineRequireObj().Runner = function(j$) {
}; };
this.topSuite_.reportedDone = true; this.topSuite_.reportedDone = true;
await this.reporter_.jasmineDone(jasmineDoneInfo); await this.reporter_.jasmineDone(jasmineDoneInfo);
resolve(jasmineDoneInfo); return jasmineDoneInfo;
})();
});
});
} }
reportSuiteDone_(suite, result, next) { reportSuiteDone_(suite, result, next) {
@@ -10190,7 +10185,7 @@ getJasmineRequireObj().TreeProcessor = function() {
return stats; return stats;
}; };
this.execute = function(done) { this.execute = async function() {
if (!processed) { if (!processed) {
this.processTree(); this.processTree();
} }
@@ -10201,17 +10196,19 @@ getJasmineRequireObj().TreeProcessor = function() {
const childFns = wrapChildren(tree, 0); const childFns = wrapChildren(tree, 0);
await new Promise(function(resolve) {
queueRunnerFactory({ queueRunnerFactory({
queueableFns: childFns, queueableFns: childFns,
userContext: tree.sharedUserContext(), userContext: tree.sharedUserContext(),
onException: function() { onException: function() {
tree.handleException.apply(tree, arguments); tree.handleException.apply(tree, arguments);
}, },
onComplete: done, onComplete: resolve,
onMultipleDone: tree.onMultipleDone onMultipleDone: tree.onMultipleDone
? tree.onMultipleDone.bind(tree) ? tree.onMultipleDone.bind(tree)
: null : null
}); });
});
}; };
function runnableIndex(id) { function runnableIndex(id) {

View File

@@ -274,7 +274,7 @@ describe('TreeProcessor', function() {
expect(result.valid).toBe(true); expect(result.valid).toBe(true);
}); });
it('runs a single leaf', function() { it('runs a single leaf', async function() {
const leaf = new Leaf(), const leaf = new Leaf(),
node = new Node({ children: [leaf], userContext: { root: 'context' } }), node = new Node({ children: [leaf], userContext: { root: 'context' } }),
queueRunner = jasmine.createSpy('queueRunner'), queueRunner = jasmine.createSpy('queueRunner'),
@@ -282,25 +282,27 @@ describe('TreeProcessor', function() {
tree: node, tree: node,
runnableIds: [leaf.id], runnableIds: [leaf.id],
queueRunnerFactory: queueRunner queueRunnerFactory: queueRunner
}), });
treeComplete = jasmine.createSpy('treeComplete');
processor.execute(treeComplete); const promise = processor.execute();
expect(queueRunner).toHaveBeenCalledWith({ expect(queueRunner).toHaveBeenCalledWith({
onComplete: treeComplete, onComplete: jasmine.any(Function),
onException: jasmine.any(Function), onException: jasmine.any(Function),
userContext: { root: 'context' }, userContext: { root: 'context' },
queueableFns: [{ fn: jasmine.any(Function) }], queueableFns: [{ fn: jasmine.any(Function) }],
onMultipleDone: null onMultipleDone: null
}); });
queueRunner.calls.mostRecent().args[0].queueableFns[0].fn('foo'); const queueRunnerArgs = queueRunner.calls.mostRecent().args[0];
queueRunnerArgs.queueableFns[0].fn('foo');
expect(leaf.execute).toHaveBeenCalledWith(queueRunner, 'foo', false, false); expect(leaf.execute).toHaveBeenCalledWith(queueRunner, 'foo', false, false);
queueRunnerArgs.onComplete();
await expectAsync(promise).toBeResolvedTo(undefined);
}); });
it('runs a node with no children', function() { it('runs a node with no children', async function() {
const node = new Node({ userContext: { node: 'context' } }), const node = new Node({ userContext: { node: 'context' } }),
root = new Node({ children: [node], userContext: { root: 'context' } }), root = new Node({ children: [node], userContext: { root: 'context' } }),
nodeStart = jasmine.createSpy('nodeStart'), nodeStart = jasmine.createSpy('nodeStart'),
@@ -313,21 +315,20 @@ describe('TreeProcessor', function() {
nodeComplete: nodeComplete, nodeComplete: nodeComplete,
queueRunnerFactory: queueRunner queueRunnerFactory: queueRunner
}), }),
treeComplete = jasmine.createSpy('treeComplete'),
nodeDone = jasmine.createSpy('nodeDone'); nodeDone = jasmine.createSpy('nodeDone');
processor.execute(treeComplete); const promise = processor.execute();
expect(queueRunner).toHaveBeenCalledWith({ expect(queueRunner).toHaveBeenCalledWith({
onComplete: treeComplete, onComplete: jasmine.any(Function),
onException: jasmine.any(Function), onException: jasmine.any(Function),
userContext: { root: 'context' }, userContext: { root: 'context' },
queueableFns: [{ fn: jasmine.any(Function) }], queueableFns: [{ fn: jasmine.any(Function) }],
onMultipleDone: null onMultipleDone: null
}); });
queueRunner.calls.mostRecent().args[0].queueableFns[0].fn(nodeDone); const queueRunnerArgs = queueRunner.calls.mostRecent().args[0];
queueRunnerArgs.queueableFns[0].fn(nodeDone);
expect(queueRunner).toHaveBeenCalledWith({ expect(queueRunner).toHaveBeenCalledWith({
onComplete: jasmine.any(Function), onComplete: jasmine.any(Function),
onMultipleDone: null, onMultipleDone: null,
@@ -348,6 +349,9 @@ describe('TreeProcessor', function() {
{ my: 'result' }, { my: 'result' },
jasmine.any(Function) jasmine.any(Function)
); );
queueRunnerArgs.onComplete();
await expectAsync(promise).toBeResolvedTo(undefined);
}); });
it('runs a node with children', function() { it('runs a node with children', function() {

View File

@@ -136,10 +136,8 @@ getJasmineRequireObj().Runner = function(j$) {
}); });
this.currentlyExecutingSuites_.push(this.topSuite_); this.currentlyExecutingSuites_.push(this.topSuite_);
await processor.execute();
return new Promise(resolve => {
processor.execute(() => {
(async () => {
if (this.topSuite_.hadBeforeAllFailure) { if (this.topSuite_.hadBeforeAllFailure) {
await this.reportChildrenOfBeforeAllFailure_(this.topSuite_); await this.reportChildrenOfBeforeAllFailure_(this.topSuite_);
} }
@@ -184,10 +182,7 @@ getJasmineRequireObj().Runner = function(j$) {
}; };
this.topSuite_.reportedDone = true; this.topSuite_.reportedDone = true;
await this.reporter_.jasmineDone(jasmineDoneInfo); await this.reporter_.jasmineDone(jasmineDoneInfo);
resolve(jasmineDoneInfo); return jasmineDoneInfo;
})();
});
});
} }
reportSuiteDone_(suite, result, next) { reportSuiteDone_(suite, result, next) {

View File

@@ -27,7 +27,7 @@ getJasmineRequireObj().TreeProcessor = function() {
return stats; return stats;
}; };
this.execute = function(done) { this.execute = async function() {
if (!processed) { if (!processed) {
this.processTree(); this.processTree();
} }
@@ -38,17 +38,19 @@ getJasmineRequireObj().TreeProcessor = function() {
const childFns = wrapChildren(tree, 0); const childFns = wrapChildren(tree, 0);
await new Promise(function(resolve) {
queueRunnerFactory({ queueRunnerFactory({
queueableFns: childFns, queueableFns: childFns,
userContext: tree.sharedUserContext(), userContext: tree.sharedUserContext(),
onException: function() { onException: function() {
tree.handleException.apply(tree, arguments); tree.handleException.apply(tree, arguments);
}, },
onComplete: done, onComplete: resolve,
onMultipleDone: tree.onMultipleDone onMultipleDone: tree.onMultipleDone
? tree.onMultipleDone.bind(tree) ? tree.onMultipleDone.bind(tree)
: null : null
}); });
});
}; };
function runnableIndex(id) { function runnableIndex(id) {