Skip to content

Commit 455b799

Browse files
committed
test/integration: delete legacy DA's path mapping tests
These tests import functions from src/debugAdapter/goDebug which makes the extension host in the test exit in the middle of testing when running on Windows, and causes the integration test to terminate prematurely. It seems the problem existed for quite some time, but vscode runTest didn't catch it as test failure since the extension host cleanly exits. I don't know exactly what caused the extension host to terminate but guess this is related to the fact that goDebug.ts is meant to run in a separate process outside the vscode extension host. The legacy debug adapter is scheduled for deletion. So, delete this legacy debug adapter specific tests instead of digging deeper. Fixes #3053 Change-Id: I1847dda08c30eae817656470efc6554f6f6a17c9 Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/544499 Reviewed-by: Suzy Mueller <[email protected]> Commit-Queue: Hyang-Ah Hana Kim <[email protected]> TryBot-Result: kokoro <[email protected]>
1 parent ffde5a1 commit 455b799

File tree

1 file changed

+0
-281
lines changed

1 file changed

+0
-281
lines changed

test/integration/goDebug.test.ts

Lines changed: 0 additions & 281 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@ import { DebugConfiguration, DebugProtocolMessage } from 'vscode';
1818
import { DebugClient } from '@vscode/debugadapter-testsupport';
1919
import { ILocation } from '@vscode/debugadapter-testsupport/lib/debugClient';
2020
import { DebugProtocol } from 'vscode-debugprotocol';
21-
import {
22-
Delve,
23-
escapeGoModPath,
24-
GoDebugSession,
25-
PackageBuildInfo,
26-
RemoteSourcesAndPackages
27-
} from '../../src/debugAdapter/goDebug';
2821
import * as extConfig from '../../src/config';
2922
import { GoDebugConfigurationProvider, parseDebugProgramArgSync } from '../../src/goDebugConfiguration';
3023
import { getBinPath, rmdirRecursive } from '../../src/util';
@@ -37,280 +30,6 @@ import { affectedByIssue832 } from './testutils';
3730
// For debugging test and streaming the trace instead of buffering, set this.
3831
const PRINT_TO_CONSOLE = false;
3932

40-
suite('Path Manipulation Tests', () => {
41-
test('escapeGoModPath works', () => {
42-
assert.strictEqual(escapeGoModPath('BurnSushi/test.go'), '!burn!sushi/test.go');
43-
});
44-
});
45-
46-
suite('GoDebugSession Tests', async () => {
47-
const workspaceFolder = '/usr/workspacefolder';
48-
const delve: Delve = {} as Delve;
49-
let goDebugSession: GoDebugSession;
50-
let remoteSourcesAndPackages: RemoteSourcesAndPackages;
51-
let fileSystem: typeof fs;
52-
53-
let previousEnv: any;
54-
55-
setup(() => {
56-
previousEnv = Object.assign({}, process.env);
57-
58-
process.env.GOPATH = '/usr/gopath';
59-
process.env.GOROOT = '/usr/goroot';
60-
remoteSourcesAndPackages = new RemoteSourcesAndPackages();
61-
// eslint-disable-next-line prettier/prettier
62-
fileSystem = ({ existsSync: () => false } as unknown) as typeof fs;
63-
delve.program = workspaceFolder;
64-
delve.isApiV1 = false;
65-
goDebugSession = new GoDebugSession(true, false, fileSystem);
66-
goDebugSession['delve'] = delve;
67-
goDebugSession['remoteSourcesAndPackages'] = remoteSourcesAndPackages;
68-
});
69-
70-
teardown(() => {
71-
process.env = previousEnv;
72-
sinon.restore();
73-
});
74-
75-
test('inferRemotePathFromLocalPath works', () => {
76-
const sourceFileMapping = new Map<string, string[]>();
77-
sourceFileMapping.set('main.go', ['/app/hello-world/main.go', '/app/main.go']);
78-
sourceFileMapping.set('blah.go', ['/app/blah.go']);
79-
80-
remoteSourcesAndPackages.remoteSourceFilesNameGrouping = sourceFileMapping;
81-
82-
const inferredPath = goDebugSession['inferRemotePathFromLocalPath'](
83-
'C:\\Users\\Documents\\src\\hello-world\\main.go'
84-
);
85-
assert.strictEqual(inferredPath, '/app/hello-world/main.go');
86-
});
87-
88-
test('inferRemotePathFromLocalPath does not crash due to non-existing files', () => {
89-
const sourceFileMapping = new Map<string, string[]>();
90-
sourceFileMapping.set('main.go', ['/app/hello-world/main.go', '/app/main.go']);
91-
92-
remoteSourcesAndPackages.remoteSourceFilesNameGrouping = sourceFileMapping;
93-
94-
// Non-existing file.
95-
const inferredPath = goDebugSession['inferRemotePathFromLocalPath'](
96-
'C:\\Users\\Documents\\src\\hello-world\\main-copy.go'
97-
);
98-
assert.strictEqual(inferredPath, undefined);
99-
});
100-
101-
test('inferLocalPathFromRemoteGoPackage works for package in workspaceFolder', () => {
102-
const remotePath = '/src/hello-world/morestrings/morestrings.go';
103-
const helloPackage: PackageBuildInfo = {
104-
ImportPath: 'hello-world/morestrings',
105-
DirectoryPath: '/src/hello-world/morestrings',
106-
Files: ['/src/hello-world/morestrings/lessstrings.go', '/src/hello-world/morestrings/morestrings.go']
107-
};
108-
109-
const testPackage: PackageBuildInfo = {
110-
ImportPath: 'FooBar/test',
111-
DirectoryPath: 'remote/pkg/mod/!foo!bar/[email protected]',
112-
Files: ['remote/pkg/mod/!foo!bar/[email protected]/test.go']
113-
};
114-
115-
const localPath = path.join(workspaceFolder, 'hello-world/morestrings/morestrings.go');
116-
const existsSyncStub = sinon.stub(fileSystem, 'existsSync');
117-
existsSyncStub.withArgs(localPath).returns(true);
118-
119-
remoteSourcesAndPackages.remotePackagesBuildInfo = [helloPackage, testPackage];
120-
121-
goDebugSession['localPathSeparator'] = '/';
122-
const inferredLocalPath = goDebugSession['inferLocalPathFromRemoteGoPackage'](remotePath);
123-
assert.strictEqual(inferredLocalPath, localPath);
124-
});
125-
126-
test('inferLocalPathFromRemoteGoPackage works for package in GOPATH/pkg/mod', () => {
127-
const remotePath = 'remote/pkg/mod/!foo!bar/[email protected]/test.go';
128-
const helloPackage: PackageBuildInfo = {
129-
ImportPath: 'hello-world',
130-
DirectoryPath: '/src/hello-world',
131-
Files: ['src/hello-world/hello.go', 'src/hello-world/world.go']
132-
};
133-
134-
const testPackage: PackageBuildInfo = {
135-
ImportPath: 'FooBar/test',
136-
DirectoryPath: 'remote/pkg/mod/!foo!bar/[email protected]',
137-
Files: ['remote/pkg/mod/!foo!bar/[email protected]/test.go']
138-
};
139-
140-
const localPath = path.join(process.env.GOPATH ?? '', 'pkg/mod/!foo!bar/[email protected]/test.go');
141-
const existsSyncStub = sinon.stub(fileSystem, 'existsSync');
142-
existsSyncStub.withArgs(localPath).returns(true);
143-
144-
remoteSourcesAndPackages.remotePackagesBuildInfo = [helloPackage, testPackage];
145-
146-
goDebugSession['localPathSeparator'] = '/';
147-
const inferredLocalPath = goDebugSession['inferLocalPathFromRemoteGoPackage'](remotePath);
148-
assert.strictEqual(inferredLocalPath, localPath);
149-
});
150-
151-
test('inferLocalPathFromRemoteGoPackage works for package in GOPATH/pkg/mod with relative path', () => {
152-
const remotePath = '!foo!bar/[email protected]/test.go';
153-
const helloPackage: PackageBuildInfo = {
154-
ImportPath: 'hello-world',
155-
DirectoryPath: '/src/hello-world',
156-
Files: ['src/hello-world/hello.go', 'src/hello-world/world.go']
157-
};
158-
159-
const testPackage: PackageBuildInfo = {
160-
ImportPath: 'FooBar/test',
161-
DirectoryPath: '!foo!bar/[email protected]',
162-
Files: ['!foo!bar/[email protected]/test.go']
163-
};
164-
165-
const localPath = path.join(process.env.GOPATH ?? '', 'pkg/mod/!foo!bar/[email protected]/test.go');
166-
const existsSyncStub = sinon.stub(fileSystem, 'existsSync');
167-
existsSyncStub.withArgs(localPath).returns(true);
168-
169-
remoteSourcesAndPackages.remotePackagesBuildInfo = [helloPackage, testPackage];
170-
171-
goDebugSession['localPathSeparator'] = '/';
172-
const inferredLocalPath = goDebugSession['inferLocalPathFromRemoteGoPackage'](remotePath);
173-
assert.strictEqual(inferredLocalPath, localPath);
174-
});
175-
176-
test('inferLocalPathFromRemoteGoPackage works for package in GOPATH/src', () => {
177-
const remotePath = 'remote/gopath/src/foobar/[email protected]/test.go';
178-
const helloPackage: PackageBuildInfo = {
179-
ImportPath: 'hello-world',
180-
DirectoryPath: '/src/hello-world',
181-
Files: ['src/hello-world/hello.go', 'src/hello-world/world.go']
182-
};
183-
184-
const testPackage: PackageBuildInfo = {
185-
ImportPath: 'foobar/test',
186-
DirectoryPath: 'remote/gopath/src/foobar/[email protected]',
187-
Files: ['remote/gopath/src/foobar/[email protected]/test.go']
188-
};
189-
190-
const localPath = path.join(process.env.GOPATH ?? '', 'src', 'foobar/[email protected]/test.go');
191-
const existsSyncStub = sinon.stub(fileSystem, 'existsSync');
192-
existsSyncStub.withArgs(localPath).returns(true);
193-
194-
remoteSourcesAndPackages.remotePackagesBuildInfo = [helloPackage, testPackage];
195-
196-
goDebugSession['localPathSeparator'] = '/';
197-
const inferredLocalPath = goDebugSession['inferLocalPathFromRemoteGoPackage'](remotePath);
198-
assert.strictEqual(inferredLocalPath, localPath);
199-
});
200-
201-
test('inferLocalPathFromRemoteGoPackage works for package in GOPATH/src with relative path', () => {
202-
const remotePath = 'foobar/[email protected]/test.go';
203-
const helloPackage: PackageBuildInfo = {
204-
ImportPath: 'hello-world',
205-
DirectoryPath: '/src/hello-world',
206-
Files: ['src/hello-world/hello.go', 'src/hello-world/world.go']
207-
};
208-
209-
const testPackage: PackageBuildInfo = {
210-
ImportPath: 'foobar/test',
211-
DirectoryPath: 'foobar/[email protected]',
212-
Files: ['foobar/[email protected]/test.go']
213-
};
214-
215-
const localPath = path.join(process.env.GOPATH ?? '', 'src', 'foobar/[email protected]/test.go');
216-
const existsSyncStub = sinon.stub(fileSystem, 'existsSync');
217-
existsSyncStub.withArgs(localPath).returns(true);
218-
219-
remoteSourcesAndPackages.remotePackagesBuildInfo = [helloPackage, testPackage];
220-
221-
goDebugSession['localPathSeparator'] = '/';
222-
const inferredLocalPath = goDebugSession['inferLocalPathFromRemoteGoPackage'](remotePath);
223-
assert.strictEqual(inferredLocalPath, localPath);
224-
});
225-
226-
test('inferLocalPathFromRemoteGoPackage works for package in GOROOT/src', () => {
227-
const remotePath = 'remote/goroot/src/foobar/[email protected]/test.go';
228-
const helloPackage: PackageBuildInfo = {
229-
ImportPath: 'hello-world',
230-
DirectoryPath: '/src/hello-world',
231-
Files: ['src/hello-world/hello.go', 'src/hello-world/world.go']
232-
};
233-
234-
const testPackage: PackageBuildInfo = {
235-
ImportPath: 'foobar/test',
236-
DirectoryPath: 'remote/goroot/src/foobar/[email protected]',
237-
Files: ['remote/goroot/src/foobar/[email protected]/test.go']
238-
};
239-
240-
const localPath = path.join(process.env.GOROOT ?? '', 'src', 'foobar/[email protected]/test.go');
241-
const existsSyncStub = sinon.stub(fileSystem, 'existsSync');
242-
existsSyncStub.withArgs(localPath).returns(true);
243-
244-
remoteSourcesAndPackages.remotePackagesBuildInfo = [helloPackage, testPackage];
245-
246-
goDebugSession['localPathSeparator'] = '/';
247-
const inferredLocalPath = goDebugSession['inferLocalPathFromRemoteGoPackage'](remotePath);
248-
assert.strictEqual(inferredLocalPath, localPath);
249-
});
250-
251-
test('inferLocalPathFromRemoteGoPackage works for package in GOROOT/src with relative path', () => {
252-
const remotePath = 'foobar/[email protected]/test.go';
253-
const helloPackage: PackageBuildInfo = {
254-
ImportPath: 'hello-world',
255-
DirectoryPath: '/src/hello-world',
256-
Files: ['src/hello-world/hello.go', 'src/hello-world/world.go']
257-
};
258-
259-
const testPackage: PackageBuildInfo = {
260-
ImportPath: 'foobar/test',
261-
DirectoryPath: 'foobar/[email protected]',
262-
Files: ['foobar/[email protected]/test.go']
263-
};
264-
265-
const localPath = path.join(process.env.GOROOT ?? '', 'src', 'foobar/[email protected]/test.go');
266-
const existsSyncStub = sinon.stub(fileSystem, 'existsSync');
267-
existsSyncStub.withArgs(localPath).returns(true);
268-
269-
remoteSourcesAndPackages.remotePackagesBuildInfo = [helloPackage, testPackage];
270-
271-
goDebugSession['localPathSeparator'] = '/';
272-
const inferredLocalPath = goDebugSession['inferLocalPathFromRemoteGoPackage'](remotePath);
273-
assert.strictEqual(inferredLocalPath, localPath);
274-
});
275-
});
276-
277-
suite('RemoteSourcesAndPackages Tests', () => {
278-
const helloPackage: PackageBuildInfo = {
279-
ImportPath: 'hello-world',
280-
DirectoryPath: '/src/hello-world',
281-
Files: ['src/hello-world/hello.go', 'src/hello-world/world.go']
282-
};
283-
const testPackage: PackageBuildInfo = {
284-
ImportPath: 'test',
285-
DirectoryPath: '/src/test',
286-
Files: ['src/test/test.go']
287-
};
288-
const sources = ['src/hello-world/hello.go', 'src/hello-world/world.go', 'src/test/test.go'];
289-
let remoteSourcesAndPackages: RemoteSourcesAndPackages;
290-
let delve: Delve;
291-
setup(() => {
292-
// eslint-disable-next-line prettier/prettier
293-
delve = ({ callPromise: () => ({}), isApiV1: false } as unknown) as Delve;
294-
remoteSourcesAndPackages = new RemoteSourcesAndPackages();
295-
});
296-
297-
teardown(() => {
298-
sinon.restore();
299-
});
300-
301-
test('initializeRemotePackagesAndSources retrieves remote packages and sources', async () => {
302-
const stub = sinon.stub(delve, 'callPromise');
303-
stub.withArgs('ListPackagesBuildInfo', [{ IncludeFiles: true }]).returns(
304-
Promise.resolve({ List: [helloPackage, testPackage] })
305-
);
306-
stub.withArgs('ListSources', [{}]).returns(Promise.resolve({ Sources: sources }));
307-
308-
await remoteSourcesAndPackages.initializeRemotePackagesAndSources(delve);
309-
assert.deepEqual(remoteSourcesAndPackages.remoteSourceFiles, sources);
310-
assert.deepEqual(remoteSourcesAndPackages.remotePackagesBuildInfo, [helloPackage, testPackage]);
311-
});
312-
});
313-
31433
// Test suite adapted from:
31534
// https://github.com/microsoft/vscode-mock-debug/blob/master/src/tests/adapter.test.ts
31635
const testAll = (ctx: Mocha.Context, isDlvDap: boolean, withConsole?: string) => {

0 commit comments

Comments
 (0)