From 4f9a06def7a13b86b5c5e16d6d8d824b35c88bfd Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 22:09:20 +0800 Subject: [PATCH 01/14] Rewrite tests --- .eslintrc.json | 18 ++- package.json | 2 +- test/suite/extension.test.ts | 272 ++++++++++++++++++----------------- tsconfig.json | 17 ++- 4 files changed, 168 insertions(+), 141 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 4cbf3ae4..6ecf9667 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -3,13 +3,23 @@ "browser": true, "es2021": true }, - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ], "overrides": [], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": "latest", "sourceType": "module" }, - "plugins": ["@typescript-eslint"], - "rules": {} -} + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "semi": [ + "error", + "always" + ] + } +} \ No newline at end of file diff --git a/package.json b/package.json index 36afb399..a61f5114 100644 --- a/package.json +++ b/package.json @@ -598,4 +598,4 @@ "which": "^3.0.0", "yauzl": "^2.10.0" } -} +} \ No newline at end of file diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index 0dcadcd8..2f60885b 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -1,142 +1,143 @@ -// tslint:disable: no-console +// We have the following testing targets: +// 1. Test if the extension is present +// 2. Test if the extension can be activated +// 3. Test if the extension can create the extension log file +// 4. Test if the extension log contains server output (currently we use this to ensure the server is activated successfully) +// 5. Test if the server inherit environment variables defined in the settings (why?) + +import * as vscode from 'vscode'; import * as assert from 'assert'; +import path = require('path'); import * as fs from 'fs'; -import * as path from 'path'; -import { TextEncoder } from 'util'; -import * as vscode from 'vscode'; import { StopServerCommandName } from '../../src/commands/constants'; -function getExtension() { - return vscode.extensions.getExtension('haskell.haskell'); -} - -async function delay(seconds: number) { - return new Promise((resolve) => setTimeout(() => resolve(false), seconds * 1000)); -} - -async function withTimeout(seconds: number, f: Promise) { - return Promise.race([f, delay(seconds)]); -} - -const wait = (ms: number) => new Promise((r) => setTimeout(r, ms)); - -const retryOperation = (operation: () => Promise, delay: number, retries: number) => - new Promise((resolve, reject): Promise => { - return operation() - .then(resolve) - .catch((reason) => { - if (retries > 0) { - return wait(delay) - .then(retryOperation.bind(null, operation, delay, retries - 1)) - .then(resolve) - .catch(reject); - } - return reject(reason); - }); - }); +suite('Extension Test Suite', () => { + const extension = vscode.extensions.getExtension('haskell.haskell'); + const haskellConfig = vscode.workspace.getConfiguration('haskell'); + const filesCreated: Map> = new Map(); + const disposables: vscode.Disposable[] = []; -function getHaskellConfig() { - return vscode.workspace.getConfiguration('haskell'); -} - -function getWorkspaceRoot(): vscode.WorkspaceFolder { - return vscode.workspace.workspaceFolders![0]; -} - -function getWorkspaceFile(name: string): vscode.Uri { - const wsroot = getWorkspaceRoot().uri; - return wsroot.with({ path: path.posix.join(wsroot.path, name) }); -} - -function joinUri(root: vscode.Uri, ...pathSegments: string[]): vscode.Uri { - return root.with({ path: path.posix.join(root.path, ...pathSegments) }); -} - -async function deleteWorkspaceFiles(keepDirs: vscode.Uri[], pred?: (fileName: string) => boolean): Promise { - await deleteFiles(getWorkspaceRoot().uri, keepDirs, pred); -} - -function getExtensionLogContent(): string | undefined { - const extLog = getWorkspaceFile('hls.log').fsPath; - if (fs.existsSync(extLog)) { - const logContents = fs.readFileSync(extLog); - return logContents.toString(); - } else { - console.log(`${extLog} does not exist!`); - return undefined; - } -} - -async function deleteFiles(dir: vscode.Uri, keepDirs: vscode.Uri[], pred?: (fileType: string) => boolean) { - const dirContents = await vscode.workspace.fs.readDirectory(dir); - console.log(`Looking at ${dir} contents: ${dirContents}`); - if (keepDirs.findIndex((val) => val.path === dir.path) !== -1) { - console.log(`Keeping ${dir}`); - } else { - dirContents.forEach(async ([name, type]) => { - const uri: vscode.Uri = joinUri(dir, name); - if (type === vscode.FileType.File) { - if (!pred || pred(name)) { - console.log(`Deleting ${uri}`); - await vscode.workspace.fs.delete(joinUri(dir, name), { - recursive: false, - useTrash: false, - }); - } - } else if (type === vscode.FileType.Directory) { - const subDirectory = joinUri(dir, name); - console.log(`Recursing into ${subDirectory}`); - await deleteFiles(subDirectory, keepDirs, pred); - - // remove directory if it is empty now - const isEmptyNow = await vscode.workspace.fs - .readDirectory(subDirectory) - .then((contents) => Promise.resolve(contents.length === 0)); - if (isEmptyNow) { - console.log(`Deleting ${subDirectory}`); - await vscode.workspace.fs.delete(subDirectory, { - recursive: true, - useTrash: false, - }); - } - } - }); + function getWorkspaceRoot(): vscode.WorkspaceFolder { + const folders = vscode.workspace.workspaceFolders; + if (folders) { + return folders[0]; + } else { + throw "workspaceFolders is empty"; + } } -} -suite('Extension Test Suite', () => { - const disposables: vscode.Disposable[] = []; - const filesCreated: Map> = new Map(); + function getWorkspaceFile(name: string): vscode.Uri { + const wsroot = getWorkspaceRoot().uri; + return wsroot.with({ path: path.posix.join(wsroot.path, name) }); + } - async function existsWorkspaceFile(pattern: string, pred?: (uri: vscode.Uri) => boolean) { + async function existsWorkspaceFile(pattern: string) { const relPath: vscode.RelativePattern = new vscode.RelativePattern(getWorkspaceRoot(), pattern); const watcher = vscode.workspace.createFileSystemWatcher(relPath); disposables.push(watcher); return new Promise((resolve) => { watcher.onDidCreate((uri) => { console.log(`Created: ${uri}`); - if (!pred || pred(uri)) { - resolve(uri); - } + resolve(uri); }); }); } - vscode.window.showInformationMessage('Start all tests.'); + function getExtensionLogContent(): string | undefined { + const extLog = getWorkspaceFile('hls.log').fsPath; + if (fs.existsSync(extLog)) { + const logContents = fs.readFileSync(extLog); + return logContents.toString(); + } else { + console.log(`${extLog} does not exist!`); + return undefined; + } + } + + async function delay(seconds: number) { + return new Promise((resolve) => setTimeout(() => resolve(false), seconds * 1000)); + } + + async function withTimeout(seconds: number, f: Promise) { + return Promise.race([f, delay(seconds)]); + } + + const wait = (ms: number) => new Promise(r => setTimeout(r, ms)); + + const retryOperation = (operation: () => Promise, delay: number, retries: number) => + new Promise((resolve, reject): Promise => { + return operation() + .then(resolve) + .catch((reason) => { + if (retries > 0) { + return wait(delay) + .then(retryOperation.bind(null, operation, delay, retries - 1)) + .then(resolve) + .catch(reject); + } + return reject(reason); + }); + }); + + function joinUri(root: vscode.Uri, ...pathSegments: string[]): vscode.Uri { + return root.with({ path: path.posix.join(root.path, ...pathSegments) }); + } + + async function deleteWorkspaceFiles(keepDirs: vscode.Uri[], pred?: (fileName: string) => boolean): Promise { + await deleteFiles(getWorkspaceRoot().uri, keepDirs, pred); + } + + async function deleteFiles(dir: vscode.Uri, keepDirs: vscode.Uri[], pred?: (fileType: string) => boolean) { + const dirContents = await vscode.workspace.fs.readDirectory(dir); + console.log(`Looking at ${dir} contents: ${dirContents}`); + if (keepDirs.findIndex((val) => val.path === dir.path) !== -1) { + console.log(`Keeping ${dir}`); + } else { + dirContents.forEach(async ([name, type]) => { + const uri: vscode.Uri = joinUri(dir, name); + if (type === vscode.FileType.File) { + if (!pred || pred(name)) { + console.log(`Deleting ${uri}`); + await vscode.workspace.fs.delete(joinUri(dir, name), { + recursive: false, + useTrash: false, + }); + } + } else if (type === vscode.FileType.Directory) { + const subDirectory = joinUri(dir, name); + console.log(`Recursing into ${subDirectory}`); + await deleteFiles(subDirectory, keepDirs, pred); + + // remove directory if it is empty now + const isEmptyNow = await vscode.workspace.fs + .readDirectory(subDirectory) + .then((contents) => Promise.resolve(contents.length === 0)); + if (isEmptyNow) { + console.log(`Deleting ${subDirectory}`); + await vscode.workspace.fs.delete(subDirectory, { + recursive: true, + useTrash: false, + }); + } + } + }); + } + } suiteSetup(async () => { await deleteWorkspaceFiles([ joinUri(getWorkspaceRoot().uri, '.vscode'), joinUri(getWorkspaceRoot().uri, 'bin', process.platform === 'win32' ? 'ghcup' : '.ghcup', 'cache'), ]); - await getHaskellConfig().update('promptBeforeDownloads', false, vscode.ConfigurationTarget.Global); - await getHaskellConfig().update('manageHLS', 'GHCup'); - await getHaskellConfig().update('logFile', 'hls.log'); - await getHaskellConfig().update('trace.server', 'messages'); - await getHaskellConfig().update('releasesDownloadStoragePath', path.normalize(getWorkspaceFile('bin').fsPath)); - await getHaskellConfig().update('serverEnvironment', { + await haskellConfig.update('promptBeforeDownloads', false, vscode.ConfigurationTarget.Global); + await haskellConfig.update('manageHLS', 'GHCup'); + await haskellConfig.update('logFile', 'hls.log'); + await haskellConfig.update('trace.server', 'messages'); + await haskellConfig.update('releasesDownloadStoragePath', path.normalize(getWorkspaceFile('bin').fsPath)); + await haskellConfig.update('serverEnvironment', { XDG_CACHE_HOME: path.normalize(getWorkspaceFile('cache-test').fsPath), }); + const contents = new TextEncoder().encode('main = putStrLn "hi vscode tests"'); await vscode.workspace.fs.writeFile(getWorkspaceFile('Main.hs'), contents); @@ -144,57 +145,64 @@ suite('Extension Test Suite', () => { filesCreated.set('cache', existsWorkspaceFile('cache-test')); }); - test('Extension should be present', () => { - assert.ok(getExtension()); + test('1. Extension should be present', () => { + assert.ok(extension); }); - test('Extension should activate', async () => { - await getExtension()?.activate(); - assert.ok(true); + test('2. Extension can be activated', async () => { + await extension?.activate(); }); - test('Extension should create the extension log file', async () => { + test('3. Extension should create the extension log file', async () => { await vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); - assert.ok(await withTimeout(90, filesCreated.get('log')!), 'Extension log not created in 30 seconds'); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + assert.ok(await withTimeout(30, filesCreated.get('log')!), 'Extension log not created in 30 seconds'); }); - test('Extension log should have server output', async () => { + test('4. Extension log should have server output', async () => { await vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); - await delay(20); - const logContents = getExtensionLogContent(); - assert.ok(logContents, 'Extension log file does not exist'); assert.ok( - retryOperation( + await retryOperation( () => - new Promise((resolve, reject) => - logContents.match(/INFO hls:\s+Registering ide configuration/) !== null ? resolve : reject + new Promise((resolve, reject) => { + return getExtensionLogContent()?.match(/Registering ide configuration/i) !== null + ? resolve(true) : reject(false); + } ), 1000 * 5, - 20 + 10 ), 'Extension log file has no hls output' ); }); - test('Server should inherit environment variables defined in the settings', async () => { + test('5. Server should inherit environment variables defined in the settings', async () => { await vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); assert.ok( - retryOperation(() => new Promise((resolve, reject) => filesCreated.get('cache')!), 1000 * 5, 20), + await retryOperation( + () => + new Promise((resolve, reject) => { + return filesCreated.get('cache') ? resolve(true) : reject(false); + }), + 1000 * 5, + 10 + ), 'Server did not inherit XDG_CACHE_DIR from environment variables set in the settings' ); }); suiteTeardown(async () => { console.log('Disposing all resources'); - disposables.forEach((d) => d.dispose()); + disposables.forEach(d => d.dispose()); console.log('Stopping the lsp server'); await vscode.commands.executeCommand(StopServerCommandName); - await delay(5); + console.log('Contents of the extension log:'); const logContent = getExtensionLogContent(); if (logContent) { console.log(logContent); } + console.log('Deleting test workspace contents'); await deleteWorkspaceFiles([], (name) => !name.includes('.log')); }); diff --git a/tsconfig.json b/tsconfig.json index 7b551f75..a1efbd37 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,9 @@ "moduleResolution": "node", "target": "es6", "outDir": "out", - "lib": ["es6"], + "lib": [ + "es6" + ], "sourceMap": true, "rootDir": ".", "noUnusedLocals": true, @@ -14,6 +16,13 @@ "noFallthroughCasesInSwitch": true, "strictNullChecks": true }, - "include": ["./src/**/*.ts", "./test/**/*.ts"], - "exclude": ["node_modules", ".vscode", ".vscode-test"] -} + "include": [ + "./src/**/*.ts", + "./test/**/*.ts" + ], + "exclude": [ + "node_modules", + ".vscode", + ".vscode-test" + ] +} \ No newline at end of file From fe4ee101c50d493a3462e99dce9c2959c9fe5ece Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 22:18:47 +0800 Subject: [PATCH 02/14] Remove case ignore --- test/suite/extension.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index 2f60885b..e2a8c980 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -165,7 +165,7 @@ suite('Extension Test Suite', () => { await retryOperation( () => new Promise((resolve, reject) => { - return getExtensionLogContent()?.match(/Registering ide configuration/i) !== null + return getExtensionLogContent()?.match(/Registering IDE configuration/) !== null ? resolve(true) : reject(false); } ), From 1ccbf093bfd2ef46c33b40386470b06ae8a9aeef Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 22:29:52 +0800 Subject: [PATCH 03/14] Set ghc version explictly --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 11f0b807..a54b0eb1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,7 +31,9 @@ jobs: - name: Install cabal run: ghcup install cabal recommended - name: Install GHC - run: ghcup install ghc ${{matrix.ghc}} + run: | + ghcup install ghc ${{matrix.ghc}} + ghcup set ghc ${{matrix.ghc}} - name: 'Install `tree` for MacOs' run: | brew update From 4a391b192e7b6eb871e6e8051009094495594d6a Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 22:35:05 +0800 Subject: [PATCH 04/14] Loosen timeout for test 4 --- test/suite/extension.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index e2a8c980..761ff864 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -170,7 +170,7 @@ suite('Extension Test Suite', () => { } ), 1000 * 5, - 10 + 20 ), 'Extension log file has no hls output' ); From 4e8be09dae8310ad84b10f56b5f8a0972a93d035 Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 22:53:18 +0800 Subject: [PATCH 05/14] Lossen total test time to 3 mins --- test/suite/extension.test.ts | 2 +- test/suite/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index 761ff864..0b7ce750 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -170,7 +170,7 @@ suite('Extension Test Suite', () => { } ), 1000 * 5, - 20 + 30 ), 'Extension log file has no hls output' ); diff --git a/test/suite/index.ts b/test/suite/index.ts index fd678705..f3dcf2c5 100644 --- a/test/suite/index.ts +++ b/test/suite/index.ts @@ -6,7 +6,7 @@ export async function run(): Promise { // Create the mocha test const mocha = new Mocha({ ui: 'tdd', - timeout: 90000, + timeout: 180_000, // 3 mins color: true, }); From a09b70b83123411edba213ff166915b9a469cd2b Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 22:53:49 +0800 Subject: [PATCH 06/14] Ignore case to match ghc-8.10.4 --- test/suite/extension.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index 0b7ce750..6e5d7f98 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -165,7 +165,7 @@ suite('Extension Test Suite', () => { await retryOperation( () => new Promise((resolve, reject) => { - return getExtensionLogContent()?.match(/Registering IDE configuration/) !== null + return getExtensionLogContent()?.match(/Registering IDE configuration/i) !== null ? resolve(true) : reject(false); } ), From 04bd664ba4593234c9a54f248f5333f4642a938e Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 23:14:06 +0800 Subject: [PATCH 07/14] Don't open test file twice --- test/suite/extension.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index 6e5d7f98..e74d19cf 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -160,7 +160,7 @@ suite('Extension Test Suite', () => { }); test('4. Extension log should have server output', async () => { - await vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); + // await vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); assert.ok( await retryOperation( () => From f897a0b8e4b1e044b6d5d3a65867730ac1dd6097 Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 23:18:15 +0800 Subject: [PATCH 08/14] Trigger CI From 0da398064f22cb861cb5dc0d937e59ef73573990 Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 23:35:47 +0800 Subject: [PATCH 09/14] Restore 90 secs --- test/suite/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/suite/index.ts b/test/suite/index.ts index f3dcf2c5..fd678705 100644 --- a/test/suite/index.ts +++ b/test/suite/index.ts @@ -6,7 +6,7 @@ export async function run(): Promise { // Create the mocha test const mocha = new Mocha({ ui: 'tdd', - timeout: 180_000, // 3 mins + timeout: 90000, color: true, }); From 2007b7fdff2d54aad62b1df1f82467e5bb81d742 Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 23:37:13 +0800 Subject: [PATCH 10/14] Don't await openTextDocument --- test/suite/extension.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index e74d19cf..f088bb99 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -154,13 +154,13 @@ suite('Extension Test Suite', () => { }); test('3. Extension should create the extension log file', async () => { - await vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); + vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion assert.ok(await withTimeout(30, filesCreated.get('log')!), 'Extension log not created in 30 seconds'); }); test('4. Extension log should have server output', async () => { - // await vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); + vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); assert.ok( await retryOperation( () => From 448e7203120920bfa155711f841484e4b6fd3702 Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 23:44:25 +0800 Subject: [PATCH 11/14] Multi ghc --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 94ab5deb..fdaa68f5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: fail-fast: false matrix: os: [macos-11, ubuntu-latest, windows-latest] - ghc: [9.0.2, 8.10.4] + ghc: [9.0.2, 8.10.4, 9.2.7, 9.4.5, 9.6.1] runs-on: ${{ matrix.os }} steps: - name: Checkout From db4eec9e483f0d1f24ff1c42bcc59884ca9dfc11 Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 23:44:58 +0800 Subject: [PATCH 12/14] 180 sec timeout --- test/suite/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/suite/index.ts b/test/suite/index.ts index fd678705..542455ff 100644 --- a/test/suite/index.ts +++ b/test/suite/index.ts @@ -6,7 +6,7 @@ export async function run(): Promise { // Create the mocha test const mocha = new Mocha({ ui: 'tdd', - timeout: 90000, + timeout: 18_000, // 3 mins color: true, }); From ec2454e84a3f157c0a491b39c112f0132bb8f39e Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Wed, 10 May 2023 23:50:46 +0800 Subject: [PATCH 13/14] 18 -> 180 --- test/suite/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/suite/index.ts b/test/suite/index.ts index 542455ff..f3dcf2c5 100644 --- a/test/suite/index.ts +++ b/test/suite/index.ts @@ -6,7 +6,7 @@ export async function run(): Promise { // Create the mocha test const mocha = new Mocha({ ui: 'tdd', - timeout: 18_000, // 3 mins + timeout: 180_000, // 3 mins color: true, }); From 21bb8bb9560182dde1ec4cfb25c098dd3dca43a5 Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Thu, 11 May 2023 00:01:51 +0800 Subject: [PATCH 14/14] Log time --- test/suite/extension.test.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index f088bb99..77bcdced 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -70,6 +70,7 @@ suite('Extension Test Suite', () => { .then(resolve) .catch((reason) => { if (retries > 0) { + console.log(`${Date.now()}`); return wait(delay) .then(retryOperation.bind(null, operation, delay, retries - 1)) .then(resolve) @@ -169,8 +170,8 @@ suite('Extension Test Suite', () => { ? resolve(true) : reject(false); } ), - 1000 * 5, - 30 + 1000 * 1, + 150 ), 'Extension log file has no hls output' );