Skip to content

Commit d15d1c8

Browse files
author
Josh Goldberg
authored
Added error reporting for writeConfigurationFile failures (#122)
* Added error reporting for writeConfigurationFile failures * Delete azure-pipelines.yml
1 parent 9f32f5a commit d15d1c8

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ module.exports = {
4444
"no-empty-function": 0,
4545
"no-restricted-syntax": 0,
4646
"no-param-reassign": 0,
47+
"no-return-await": 0,
4748
"no-shadow": 0,
4849
"no-undef": 0,
4950
"no-useless-constructor": 0,

src/conversion/convertConfig.test.ts

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,18 @@ import { ResultStatus, FailedResult, SucceededDataResult } from "../types";
22
import { convertConfig, ConvertConfigDependencies } from "./convertConfig";
33
import { OriginalConfigurations } from "../input/findOriginalConfigurations";
44

5+
const stubSettings = {
6+
config: "./eslintrc.js",
7+
};
8+
59
const createStubDependencies = (
6-
overrides: Pick<ConvertConfigDependencies, "findOriginalConfigurations">,
10+
overrides: Partial<ConvertConfigDependencies> = {},
711
): ConvertConfigDependencies => ({
812
convertRules: jest.fn(),
13+
findOriginalConfigurations: jest.fn().mockResolvedValue({
14+
data: createStubOriginalConfigurationsData(),
15+
status: ResultStatus.Succeeded,
16+
}),
917
reportConversionResults: jest.fn(),
1018
simplifyPackageRules: async (_configurations, data) => data,
1119
writeConversionResults: jest.fn().mockReturnValue(Promise.resolve()),
@@ -29,32 +37,37 @@ describe("convertConfig", () => {
2937
const dependencies = createStubDependencies({
3038
findOriginalConfigurations: async () => findError,
3139
});
32-
const settings = {
33-
config: "./eslintrc.js",
34-
};
3540

3641
// Act
37-
const result = await convertConfig(dependencies, settings);
42+
const result = await convertConfig(dependencies, stubSettings);
3843

3944
// Assert
4045
expect(result).toEqual(findError);
4146
});
4247

43-
it("returns a successful result when finding the original configurations succeeds", async () => {
48+
it("returns the failure result when writing to the configuration file fails", async () => {
4449
// Arrange
45-
const findSuccess: SucceededDataResult<OriginalConfigurations> = {
46-
data: createStubOriginalConfigurationsData(),
47-
status: ResultStatus.Succeeded,
48-
};
50+
const fileWriteError = new Error();
4951
const dependencies = createStubDependencies({
50-
findOriginalConfigurations: async () => findSuccess,
52+
writeConversionResults: jest.fn().mockResolvedValueOnce(fileWriteError),
5153
});
52-
const settings = {
53-
config: "./eslintrc.js",
54-
};
5554

5655
// Act
57-
const result = await convertConfig(dependencies, settings);
56+
const result = await convertConfig(dependencies, stubSettings);
57+
58+
// Assert
59+
expect(result).toEqual({
60+
errors: [fileWriteError],
61+
status: ResultStatus.Failed,
62+
});
63+
});
64+
65+
it("returns a successful result when finding the original configurations succeeds", async () => {
66+
// Arrange
67+
const dependencies = createStubDependencies();
68+
69+
// Act
70+
const result = await convertConfig(dependencies, stubSettings);
5871

5972
// Assert
6073
expect(result).toEqual({

src/conversion/convertConfig.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,17 @@ export const convertConfig = async (
4343
};
4444

4545
// 4. The simplified configuration is written to the output config file
46-
await dependencies.writeConversionResults(
46+
const fileWriteError = await dependencies.writeConversionResults(
4747
settings.config,
4848
simplifiedConfiguration,
4949
originalConfigurations.data,
5050
);
51+
if (fileWriteError !== undefined) {
52+
return {
53+
errors: [fileWriteError],
54+
status: ResultStatus.Failed,
55+
};
56+
}
5157

5258
// 5. A summary of the results is printed to the user's console
5359
dependencies.reportConversionResults(simplifiedConfiguration);

src/creation/writeConversionResults.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@ export const writeConversionResults = async (
3333
rules: formatConvertedRules(ruleConversionResults, originalConfigurations.tslint),
3434
};
3535

36-
await dependencies.fileSystem.writeFile(outputPath, formatOutput(outputPath, output));
36+
return await dependencies.fileSystem.writeFile(outputPath, formatOutput(outputPath, output));
3737
};

0 commit comments

Comments
 (0)