mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-22 08:26:16 -04:00
tests: Change waitFor()
to check before first sleep
There are a few problems with sleeping before checking the condition for the first time: * It slows down tests. * The predicate is never checked if the interval duration is greater than the timeout. * 0 can't be used to test if the condition is currently true. There is a minor disadvantage to sleeping before checking: It will cause more tests to run without an asynchronous interruption, which could theoretically mask some async bugs.
This commit is contained in:
parent
8016bd225f
commit
c222fc5d0b
2 changed files with 29 additions and 4 deletions
|
@ -193,6 +193,26 @@ describe("the test helper", function(){
|
|||
},100);
|
||||
});
|
||||
});
|
||||
|
||||
describe('checks first then sleeps', function() {
|
||||
it('resolves quickly if the predicate is immediately true', async function() {
|
||||
const before = Date.now();
|
||||
await helper.waitFor(() => true, 1000, 900);
|
||||
expect(Date.now() - before).to.be.lessThan(800);
|
||||
});
|
||||
|
||||
it('polls exactly once if timeout < interval', async function() {
|
||||
let calls = 0;
|
||||
await helper.waitFor(() => { calls++; }, 1, 1000)
|
||||
.fail(() => {}) // Suppress the redundant uncatchable exception.
|
||||
.catch(() => {}); // Don't throw an exception -- we know it rejects.
|
||||
expect(calls).to.be(1);
|
||||
});
|
||||
|
||||
it('resolves if condition is immediately true even if timeout is 0', async function() {
|
||||
await helper.waitFor(() => true, 0);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("the selectLines method", function(){
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue