Skip to content

Commit 1153548

Browse files
committed
lsp baseline test that doesnt work
1 parent 54ee1a1 commit 1153548

3 files changed

Lines changed: 73 additions & 2 deletions

File tree

packages/pyright-internal/jest.config.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
* Configuration for jest tests.
55
*/
66

7-
module.exports = {
7+
/** @type {import('ts-jest/dist/types').JestConfigWithTsJest} */
8+
const config = {
89
testEnvironment: 'node',
910
roots: ['<rootDir>/src/tests'],
1011
transform: {
@@ -19,3 +20,5 @@ module.exports = {
1920
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
2021
setupFiles: ['./src/tests/setupTests.ts'],
2122
};
23+
24+
module.exports = config;

packages/pyright-internal/src/baseline.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export interface BaselinedDiagnostic {
1212
range: { startColumn: number; endColumn: number };
1313
}
1414

15-
interface BaselineFile {
15+
export interface BaselineFile {
1616
files: {
1717
[filePath: string]: BaselinedDiagnostic[];
1818
};

packages/pyright-internal/src/tests/languageServer.test.ts

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ import {
3434
runPyrightServer,
3535
waitForDiagnostics,
3636
} from './lsp/languageServerTestUtils';
37+
import { BaselineFile } from '../baseline';
38+
import { DiagnosticRule } from '../common/diagnosticRules';
3739

3840
/** objects from `sendRequest` don't work with assertions and i cant figure out why */
3941
const assertEqual = <T>(actual: T, expected: T) => expect(JSON.parse(JSON.stringify(actual))).toStrictEqual(expected);
@@ -962,4 +964,70 @@ describe(`Basic language server tests`, () => {
962964
'invalid diagnosticMode: "asdf". valid options are "workspace" or "openFilesOnly"'
963965
);
964966
});
967+
describe('baseline', () => {
968+
test('baselined error not shown', async () => {
969+
const baseline: BaselineFile = {
970+
files: {
971+
'./foo.py': [
972+
{
973+
code: DiagnosticRule.reportAssignmentType,
974+
range: {
975+
startColumn: 11,
976+
endColumn: 13,
977+
},
978+
},
979+
],
980+
},
981+
};
982+
const code = `
983+
// @filename: .basedpyright/baseline.json
984+
//// ${JSON.stringify(baseline)}
985+
////
986+
// @filename: foo.py
987+
//// foo: int = ""
988+
//// asdf
989+
//// [|/*marker*/|]
990+
`;
991+
const settings = [
992+
{
993+
item: {
994+
scopeUri: `file://${normalizeSlashes(DEFAULT_WORKSPACE_ROOT, '/')}`,
995+
section: 'basedpyright.analysis',
996+
},
997+
value: {
998+
diagnosticSeverityOverrides: {
999+
reportAssignmentType: 'error',
1000+
reportUndefinedVariable: 'error',
1001+
},
1002+
},
1003+
},
1004+
];
1005+
1006+
const info = await runLanguageServer(
1007+
DEFAULT_WORKSPACE_ROOT,
1008+
code,
1009+
/* callInitialize */ true,
1010+
settings,
1011+
undefined,
1012+
/* supportsBackgroundThread */ false
1013+
);
1014+
1015+
// get the file containing the marker that also contains our task list comments
1016+
await openFile(info, 'marker');
1017+
1018+
// Wait for the diagnostics to publish
1019+
const diagnostics = await waitForDiagnostics(info);
1020+
const file = diagnostics.find((d) => d.uri.includes('test.py'));
1021+
assert(file);
1022+
1023+
// Make sure the error has a special rule
1024+
assert.equal(file.diagnostics[0].code, 'reportUnknownParameterType');
1025+
1026+
// make sure additional diagnostic severities work
1027+
assert.equal(
1028+
file.diagnostics.find((diagnostic) => diagnostic.code === 'reportUnusedFunction')?.severity,
1029+
DiagnosticSeverity.Hint // TODO: hint? how do we differentiate between unused/unreachable/deprecated?
1030+
);
1031+
});
1032+
});
9651033
});

0 commit comments

Comments
 (0)