Skip to content

Commit 4fb7b5e

Browse files
authored
improve release train error messages (axonivy#782)
1 parent 9f61d7a commit 4fb7b5e

File tree

4 files changed

+12
-15
lines changed

4 files changed

+12
-15
lines changed

extension/src/engine/engine-manager.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export class IvyEngineManager {
5757
const releaseTrainValidator = new ReleaseTrainValidator(extensionVersion);
5858
const validationResult = await releaseTrainValidator.validate(releaseTrain);
5959
if (!validationResult.valid) {
60-
return this.handleInvalidReleaseTrain(releaseTrain, validationResult.reason);
60+
return this.handleInvalidReleaseTrain(validationResult.reason);
6161
}
6262
if (validationResult.isDirectory) {
6363
return releaseTrain;
@@ -76,9 +76,10 @@ export class IvyEngineManager {
7676
vscode.window.showErrorMessage(`Downloaded engine is invalid: ${newEngineDir}`);
7777
}
7878

79-
private async handleInvalidReleaseTrain(releaseTrain: string, reason?: string) {
80-
outputChannel.appendLine(`Engine release train validation failed: ${reason}`);
81-
const newTrain = await switchEngineReleaseTrain(`Provided engine release train is invalid: '${reason}'`);
79+
private async handleInvalidReleaseTrain(reason?: string) {
80+
const errorMessage = `Engine release train validation failed: ${reason}`;
81+
outputChannel.appendLine(errorMessage);
82+
const newTrain = await switchEngineReleaseTrain(errorMessage);
8283
if (!newTrain) {
8384
return vscode.window.showErrorMessage('No engine release train selected.');
8485
}

extension/src/engine/engine-release-train.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ export const switchEngineReleaseTrain = async (reason?: string) => {
4040
validateInput: async (value: string) => {
4141
const result = await releaseTrainValidator.validate(value);
4242
if (result.valid) {
43-
return undefined;
43+
return;
4444
}
45-
return result.isDirectory && result.reason ? result.reason : 'Invalid release train tag';
45+
return result.reason ?? 'Invalid release train tag';
4646
},
4747
ignoreFocusOut: true
4848
});

extension/src/engine/release-train-validator.test.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ test('wrong patch', async () => {
4444
test('invalid when engine directory is does not exist', async () => {
4545
expect(await validator.validate('path/to/nowhere')).toEqual({
4646
valid: false,
47-
isDirectory: false,
48-
reason: "Failed to determine engine version, directory does not exist 'path/to/nowhere/system/plugins'."
47+
reason: "Invalid release train tag or engine directory 'path/to/nowhere'"
4948
});
5049
});
5150

@@ -61,8 +60,7 @@ test('preview train', async () => {
6160

6261
expect(await validator.validate('Dev')).toEqual({
6362
valid: false,
64-
isDirectory: false,
65-
reason: "Failed to determine engine version, directory does not exist 'Dev/system/plugins'."
63+
reason: "Invalid release train tag or engine directory 'Dev'"
6664
});
6765
expect((await validator.validate('13')).valid).toBeFalsy();
6866
expect((await validator.validate('13.2')).valid).toBeFalsy();
@@ -78,8 +76,7 @@ test('lts train', async () => {
7876

7977
expect(await customValidator.validate('14.b')).toEqual({
8078
valid: false,
81-
isDirectory: false,
82-
reason: "Failed to determine engine version, directory does not exist '14.b/system/plugins'."
79+
reason: "Invalid release train tag or engine directory '14.b'"
8380
});
8481
expect((await customValidator.validate('14.0')).valid).toBeFalsy();
8582
expect((await customValidator.validate('14.0.0.')).valid).toBeFalsy();

extension/src/engine/release-train-validator.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ export class ReleaseTrainValidator {
1818
if (this.isValidReleaseTrainTag(releaseTrain)) {
1919
return { valid: true };
2020
}
21-
const result = await this.isValidEngineDir(releaseTrain);
22-
return { isDirectory: result.valid, ...result };
21+
return await this.isValidEngineDir(releaseTrain);
2322
};
2423

2524
private isDirectory = (engineDir: string) => {
@@ -33,7 +32,7 @@ export class ReleaseTrainValidator {
3332
public isValidEngineDir = async (engineDir: string) => {
3433
const pluginsDir = path.join(engineDir, 'system', 'plugins');
3534
if (!this.isDirectory(pluginsDir)) {
36-
return { valid: false, reason: `Failed to determine engine version, directory does not exist '${pluginsDir}'.` };
35+
return { valid: false, reason: `Invalid release train tag or engine directory '${engineDir}'` };
3736
}
3837
const isDirectory = true;
3938
const utilBundleFileName = await fs.promises

0 commit comments

Comments
 (0)