You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-11-26 22:41:17 +02:00
Chore: Silence expected warning while running tests in lib/ (#12450)
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import { ErrorCode } from '../errors';
|
import { ErrorCode } from '../errors';
|
||||||
import { FolderEntity } from '../services/database/types';
|
import { FolderEntity } from '../services/database/types';
|
||||||
import { createNTestNotes, setupDatabaseAndSynchronizer, sleep, switchClient, checkThrowAsync, createFolderTree, simulateReadOnlyShareEnv, expectThrow } from '../testing/test-utils';
|
import { createNTestNotes, setupDatabaseAndSynchronizer, sleep, switchClient, checkThrowAsync, createFolderTree, simulateReadOnlyShareEnv, expectThrow, withWarningSilenced } from '../testing/test-utils';
|
||||||
import Folder from './Folder';
|
import Folder from './Folder';
|
||||||
import Note from './Note';
|
import Note from './Note';
|
||||||
|
|
||||||
@@ -174,8 +174,10 @@ describe('models/Folder', () => {
|
|||||||
await Folder.save({ id: f1.id, parent_id: f3.id });
|
await Folder.save({ id: f1.id, parent_id: f3.id });
|
||||||
|
|
||||||
const folders = await Folder.all();
|
const folders = await Folder.all();
|
||||||
// Should not loop indefinitely:
|
// Should not loop indefinitely, okay to warn:
|
||||||
await Folder.addNoteCounts(folders);
|
await withWarningSilenced(/has itself as a parent/, async () => {
|
||||||
|
await Folder.addNoteCounts(folders);
|
||||||
|
});
|
||||||
// Note count may be incorrect
|
// Note count may be incorrect
|
||||||
expect(folders.find(folder => folder.id === f1.id)).toHaveProperty('note_count');
|
expect(folders.find(folder => folder.id === f1.id)).toHaveProperty('note_count');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1190,4 +1190,22 @@ export const runWithFakeTimers = async (callback: ()=> Promise<void>) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const withWarningSilenced = async <T> (warningRegex: RegExp, task: ()=> Promise<T>): Promise<T> => {
|
||||||
|
// See https://jestjs.io/docs/jest-object#spied-methods-and-the-using-keyword, which
|
||||||
|
// shows how to use .spyOn to hide warnings
|
||||||
|
let warningMock;
|
||||||
|
try {
|
||||||
|
warningMock = jest.spyOn(console, 'warn');
|
||||||
|
warningMock.mockImplementation((message, ...args) => {
|
||||||
|
const fullMessage = [message, ...args].join(' ');
|
||||||
|
if (!fullMessage.match(warningRegex)) {
|
||||||
|
console.error(`Unexpected warning: ${message}`, ...args);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return await task();
|
||||||
|
} finally {
|
||||||
|
warningMock.mockRestore();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export { supportDir, createNoteAndResource, createTempFile, createTestShareData, simulateReadOnlyShareEnv, waitForFolderCount, afterAllCleanUp, exportDir, synchronizerStart, afterEachCleanUp, syncTargetName, setSyncTargetName, syncDir, createTempDir, isNetworkSyncTarget, kvStore, expectThrow, logger, expectNotThrow, resourceService, resourceFetcher, tempFilePath, allSyncTargetItemsEncrypted, msleep, setupDatabase, revisionService, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync, checkThrow, encryptionService, loadEncryptionMasterKey, fileContentEqual, decryptionWorker, currentClientId, id, ids, sortedIds, at, createNTestNotes, createNTestFolders, createNTestTags, TestApp };
|
export { supportDir, createNoteAndResource, createTempFile, createTestShareData, simulateReadOnlyShareEnv, waitForFolderCount, afterAllCleanUp, exportDir, synchronizerStart, afterEachCleanUp, syncTargetName, setSyncTargetName, syncDir, createTempDir, isNetworkSyncTarget, kvStore, expectThrow, logger, expectNotThrow, resourceService, resourceFetcher, tempFilePath, allSyncTargetItemsEncrypted, msleep, setupDatabase, revisionService, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync, checkThrow, encryptionService, loadEncryptionMasterKey, fileContentEqual, decryptionWorker, currentClientId, id, ids, sortedIds, at, createNTestNotes, createNTestFolders, createNTestTags, TestApp };
|
||||||
|
|||||||
Reference in New Issue
Block a user