Skip to content
This repository has been archived by the owner on Apr 18, 2022. It is now read-only.

Improve test coverage for time.ts #7

Open
KyleJune opened this issue Sep 27, 2020 · 1 comment
Open

Improve test coverage for time.ts #7

KyleJune opened this issue Sep 27, 2020 · 1 comment
Labels
help wanted Extra attention is needed

Comments

@KyleJune
Copy link
Member

KyleJune commented Sep 27, 2020

I removed the last 2 tests here because they relied on system time and would intermittently fail. Need to figure out a better way to test FakeTime.

mock/time_test.ts

Lines 303 to 360 in a22be7f

Deno.test("FakeTime ticks forward when advanceRate is set", async () => {
let time: FakeTime = new FakeTime(null, { advanceRate: 1 });
let start: number = Date.now();
try {
assertEquals(Date.now(), start);
await delay(11);
assertEquals(Date.now(), start + 10);
await delay(6);
assertEquals(Date.now(), start + 10);
await delay(16);
assertEquals(Date.now(), start + 30);
time.restore();
time = new FakeTime(null, { advanceRate: 1000 });
start = Date.now();
assertEquals(Date.now(), start);
await delay(11);
assertEquals(Date.now(), start + 10000);
await delay(6);
assertEquals(Date.now(), start + 10000);
await delay(16);
assertEquals(Date.now(), start + 30000);
} finally {
time.restore();
}
});
Deno.test("FakeTime ticks forward at advanceFrequency when advanceRate is set", async () => {
let time: FakeTime = new FakeTime(
null,
{ advanceRate: 1, advanceFrequency: 15 },
);
let start: number = Date.now();
try {
assertEquals(Date.now(), start);
await delay(16);
assertEquals(Date.now(), start + 15);
await delay(11);
assertEquals(Date.now(), start + 15);
await delay(21);
assertEquals(Date.now(), start + 45);
time.restore();
time = new FakeTime(null, { advanceRate: 1000, advanceFrequency: 15 });
start = Date.now();
assertEquals(Date.now(), start);
await delay(16);
assertEquals(Date.now(), start + 15000);
await delay(11);
assertEquals(Date.now(), start + 15000);
await delay(21);
assertEquals(Date.now(), start + 45000);
} finally {
time.restore();
}
});

@KyleJune
Copy link
Member Author

I attempted to resolve the issue but the test would still intermittently fail on MacOS on GitHub actions. The failures were always related to it iterating forward faster than dictated by my delays. See the commits from that PR for more information about what I tried.

Open to suggestions on how to get test coverage for this behavior to be reliable in CI.

@KyleJune KyleJune added the help wanted Extra attention is needed label Nov 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant