|
2 | 2 | /// <reference path="..\..\compiler\commandLineParser.ts" />
|
3 | 3 |
|
4 | 4 | namespace ts {
|
| 5 | + type ExpectedResult = { typeAcquisition: TypeAcquisition, errors: Diagnostic[] }; |
5 | 6 | describe("convertTypeAcquisitionFromJson", () => {
|
6 |
| - function assertTypeAcquisition(json: any, configFileName: string, expectedResult: { typingOptions: TypingOptions, errors: Diagnostic[] }) { |
| 7 | + function assertTypeAcquisition(json: any, configFileName: string, expectedResult: ExpectedResult) { |
7 | 8 | assertTypeAcquisitionWithJson(json, configFileName, expectedResult);
|
8 | 9 | assertTypeAcquisitionWithJsonNode(json, configFileName, expectedResult);
|
9 | 10 | }
|
10 | 11 |
|
11 |
| - function assertTypeAcquisitionWithJson(json: any, configFileName: string, expectedResult: { typingOptions: TypingOptions, errors: Diagnostic[] }) { |
12 |
| - const jsonOptions = json["typeAcquisition"] || json["typingOptions"]; |
13 |
| - const { options: actualTypeAcquisition, errors: actualErrors } = convertTypeAcquisitionFromJson(jsonOptions, "/apath/", configFileName); |
| 12 | + function verifyAcquisition(actualTypeAcquisition: TypeAcquisition, expectedResult: ExpectedResult) { |
14 | 13 | const parsedTypeAcquisition = JSON.stringify(actualTypeAcquisition);
|
15 | 14 | const expectedTypeAcquisition = JSON.stringify(expectedResult.typeAcquisition);
|
16 | 15 | assert.equal(parsedTypeAcquisition, expectedTypeAcquisition);
|
| 16 | + } |
17 | 17 |
|
| 18 | + function verifyErrors(actualErrors: Diagnostic[], expectedResult: ExpectedResult, hasLocation?: boolean) { |
18 | 19 | const expectedErrors = expectedResult.errors;
|
19 | 20 | assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
|
20 | 21 | for (let i = 0; i < actualErrors.length; i++) {
|
21 | 22 | const actualError = actualErrors[i];
|
22 | 23 | const expectedError = expectedErrors[i];
|
23 | 24 | assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`);
|
24 | 25 | assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`);
|
| 26 | + if (hasLocation) { |
| 27 | + assert(actualError.file); |
| 28 | + assert(actualError.start); |
| 29 | + assert(actualError.length); |
| 30 | + } |
25 | 31 | }
|
26 | 32 | }
|
27 | 33 |
|
28 |
| - function assertTypeAcquisitionWithJsonNode(json: any, configFileName: string, expectedResult: { typingOptions: TypingOptions, errors: Diagnostic[] }) { |
| 34 | + function assertTypeAcquisitionWithJson(json: any, configFileName: string, expectedResult: ExpectedResult) { |
| 35 | + const jsonOptions = json["typeAcquisition"] || json["typingOptions"]; |
| 36 | + const { options: actualTypeAcquisition, errors: actualErrors } = convertTypeAcquisitionFromJson(jsonOptions, "/apath/", configFileName); |
| 37 | + verifyAcquisition(actualTypeAcquisition, expectedResult); |
| 38 | + verifyErrors(actualErrors, expectedResult); |
| 39 | + } |
| 40 | + |
| 41 | + function assertTypeAcquisitionWithJsonNode(json: any, configFileName: string, expectedResult: ExpectedResult) { |
29 | 42 | const fileText = JSON.stringify(json);
|
30 | 43 | const { node, errors } = parseJsonText(configFileName, fileText);
|
31 | 44 | assert(!errors.length);
|
32 | 45 | assert(!!node);
|
33 | 46 | const host: ParseConfigHost = new Utils.MockParseConfigHost("/apath/", true, []);
|
34 | 47 | const { typeAcquisition: actualTypeAcquisition, errors: actualParseErrors } = parseJsonNodeConfigFileContent(node, host, "/apath/", /*existingOptions*/ undefined, configFileName);
|
35 |
| - const parsedTypeAcquisition = JSON.stringify(actualTypeAcquisition); |
36 |
| - const expectedTypeAcquisition = JSON.stringify(expectedResult.actualTypeAcquisition); |
37 |
| - assert.equal(parsedTypeAcquisition, expectedTypeAcquisition); |
| 48 | + verifyAcquisition(actualTypeAcquisition, expectedResult); |
38 | 49 |
|
39 | 50 | const actualErrors = filter(actualParseErrors, error => error.code !== Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2.code);
|
40 |
| - const expectedErrors = expectedResult.errors; |
41 |
| - assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`); |
42 |
| - for (let i = 0; i < actualErrors.length; i++) { |
43 |
| - const actualError = actualErrors[i]; |
44 |
| - const expectedError = expectedErrors[i]; |
45 |
| - assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`); |
46 |
| - assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`); |
47 |
| - assert(actualError.file); |
48 |
| - assert(actualError.start); |
49 |
| - assert(actualError.length); |
50 |
| - } |
| 51 | + verifyErrors(actualErrors, expectedResult, /*hasLocation*/ true); |
51 | 52 | }
|
52 | 53 |
|
53 | 54 | // tsconfig.json
|
|
0 commit comments