Skip to content

Commit

Permalink
Merge pull request #1439 from snyk/feat/decrease-unsupported-package-…
Browse files Browse the repository at this point in the history
…manager-to-warning

feat: decrease to warning unsupported package manager error
  • Loading branch information
SarahU authored Oct 6, 2020
2 parents 2fae1cb + 1984eb9 commit a2536c4
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 111 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@ import { CustomError } from './custom-error';
import { SupportedPackageManagers } from '../package-managers';

export class FeatureNotSupportedByPackageManagerError extends CustomError {
public readonly feature: string;

constructor(
feature: string,
packageManager: SupportedPackageManagers,
additionalUserHelp = '',
) {
super(`Unsupported package manager ${packageManager} for ${feature}.`);
this.code = 422;
this.feature = feature;

this.userMessage = `'${feature}' is not supported for package manager '${packageManager}'. ${additionalUserHelp}`;
}
Expand Down
23 changes: 22 additions & 1 deletion src/lib/options-validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import * as config from './config';
import { SupportedPackageManagers } from './package-managers';
import * as reachableVulns from './reachable-vulns';
import { isMultiProjectScan } from './is-multi-project-scan';
import { FeatureNotSupportedByPackageManagerError } from './errors';
import * as alerts from './alerts';

export async function validateOptions(
options: (Options & TestOptions) | (Options & MonitorOptions),
Expand All @@ -14,6 +16,25 @@ export async function validateOptions(
throw new Error('Could not determine package manager');
}
const org = options.org || config.org;
await reachableVulns.validatePayload(org, options, packageManager);

try {
await reachableVulns.validatePayload(org, options, packageManager);
} catch (err) {
if (
err instanceof FeatureNotSupportedByPackageManagerError &&
err.feature === 'Reachable vulns' &&
err.userMessage
) {
alerts.registerAlerts([
{
type: 'error',
name: 'pkgman-not-supported',
msg: err.userMessage,
},
]);
} else {
throw err;
}
}
}
}
110 changes: 0 additions & 110 deletions test/acceptance/cli-reachable-vulns.test.ts

This file was deleted.

12 changes: 12 additions & 0 deletions test/acceptance/cli-test/cli-test.npm.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import * as path from 'path';
import { AcceptanceTests } from './cli-test.acceptance.test';
import { CommandResult } from '../../../src/cli/commands/types';
import alerts = require('../../../src/lib/alerts');

export const NpmTests: AcceptanceTests = {
language: 'NPM',
Expand Down Expand Up @@ -251,5 +252,16 @@ export const NpmTests: AcceptanceTests = {
'depGraph looks fine',
);
},

'test --reachable is not supported for npm': (params, utils) => async (
t,
) => {
utils.chdirWorkspaces();
const commandResult = await params.cli.test('npm-package', {
file: 'package-lock.json',
reachableVulns: true,
});
t.true(alerts.hasAlert('pkgman-not-supported'));
},
},
};

0 comments on commit a2536c4

Please sign in to comment.