Skip to content

Commit f143bad

Browse files
authored
localLambdaRunner.test.ts: avoid ExtensionDisposableFiles.initialize() #1133
Use FakeExtensionContext.getNew() instead, which forces re-initialization of ExtensionDisposableFiles and avoids an exception if it was already initialized. ref: https://github.com/aws/aws-toolkit-vscode/pull/1097/files#r435476880 Other tests may call ExtensionDisposableFiles.initialize(), which causes an error (all tests run in the same process): Error: ExtensionDisposableFiles already initialized at Function.<anonymous> (dist/src/shared/utilities/disposableFiles.js:9:4556) at Generator.next (<anonymous>) at /codebuild/output/src753373494/src/github.com/aws/aws-toolkit-vscode/dist/src/shared/utilities/disposableFiles.js:9:1746 at new Promise (<anonymous>) at __awaiter (dist/src/shared/utilities/disposableFiles.js:9:662) at Function.initialize (dist/src/shared/utilities/disposableFiles.js:9:4311) at /codebuild/output/src753373494/src/github.com/aws/aws-toolkit-vscode/src/test/shared/codelens/localLambdaRunner.test.ts:23:40 at Generator.next (<anonymous>) at /codebuild/output/src753373494/src/github.com/aws/aws-toolkit-vscode/dist/src/test/shared/codelens/localLambdaRunner.test.js:12:71 at new Promise (<anonymous>) at __awaiter (dist/src/test/shared/codelens/localLambdaRunner.test.js:8:12) at Context.<anonymous> (src/test/shared/codelens/localLambdaRunner.test.ts:22:23) at processImmediate (internal/timers.js:439:21) at process.topLevelDomainCallback (domain.js:131:23)
1 parent 2f9a82f commit f143bad

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/test/fakeExtensionContext.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55

66
import { ExtensionContext, Memento } from 'vscode'
7+
import { ExtensionDisposableFiles } from '../shared/utilities/disposableFiles'
78

89
export interface FakeMementoStorage {
910
[key: string]: any
@@ -43,6 +44,22 @@ export class FakeExtensionContext implements ExtensionContext {
4344
public asAbsolutePath(relativePath: string): string {
4445
return relativePath
4546
}
47+
48+
/**
49+
* Creates a fake `vscode.ExtensionContext` for use in tests.
50+
*
51+
* Disposes any existing `ExtensionDisposableFiles` and creates a new one
52+
* with the new `ExtContext`.
53+
*/
54+
public static async getNew(): Promise<FakeExtensionContext> {
55+
const ctx = new FakeExtensionContext()
56+
try {
57+
ExtensionDisposableFiles.getInstance().dispose()
58+
} catch {
59+
await ExtensionDisposableFiles.initialize(ctx)
60+
}
61+
return ctx
62+
}
4663
}
4764

4865
class FakeMemento implements Memento {

src/test/shared/codelens/localLambdaRunner.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ import { DebugConfiguration } from '../../../lambda/local/debugConfiguration'
1212
import * as localLambdaRunner from '../../../shared/codelens/localLambdaRunner'
1313
import * as fsUtils from '../../../shared/filesystemUtilities'
1414
import { ChildProcessResult } from '../../../shared/utilities/childProcess'
15-
import { ExtensionDisposableFiles } from '../../../shared/utilities/disposableFiles'
1615
import { FakeExtensionContext } from '../../fakeExtensionContext'
1716
import { FakeChannelLogger } from '../fakeChannelLogger'
1817
import { assertRejects } from '../utilities/assertUtils'
1918

2019
describe('localLambdaRunner', async () => {
2120
let tempDir: string
2221
before(async () => {
23-
await ExtensionDisposableFiles.initialize(new FakeExtensionContext())
22+
await FakeExtensionContext.getNew()
2423
})
2524

2625
beforeEach(async () => {

0 commit comments

Comments
 (0)