Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/FoxxMD/multi-scrobbler. Scrobble plays from multiple sources to multiple clients docs.multi-scrobbler.app
deezer docker jellyfin koito lastfm listenbrainz maloja mopidy mpris music music-assistant plex scrobble self-hosted spotify subsonic tautulli youtube-music
Something went wrong. Try again.
1.4 kB · 54 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import chai from 'chai';import asPromised from 'chai-as-promised';import { describe, it } from 'mocha';import { sleep } from "../../utils.ts";import { spawn, catchAbortError, rethrowAbortError, delay, forever } from 'abort-controller-x';
chai.should();chai.use(asPromised);
const expect = chai.expect;
describe('#Abortable', function () {
it('Executes defer on non-abort error', async function () {
const controller = new AbortController(); let didUseDefer = false;
try { await spawn(controller.signal, async (signal, { defer }) => { defer(async () => { didUseDefer = true; });
await delay(signal, 100); throw new Error('Not an abort signal'); }) } catch (e) { rethrowAbortError(e); } expect(didUseDefer).is.true; });
it('Executes defer on abort error', async function () {
const controller = new AbortController(); let didUseDefer = false;
const spawnPromise = spawn(controller.signal, async (signal, { defer }) => { defer(async () => { didUseDefer = true; });
await forever(signal); }).catch(catchAbortError);
await sleep(50); controller.abort();
await spawnPromise.should.be.fulfilled; expect(didUseDefer).is.true; });
});