Skip to content

Commit

Permalink
Merge pull request #691 from snyk/feat/unsupported-package-manager-error
Browse files Browse the repository at this point in the history
feat: Unsupported package manager error
  • Loading branch information
lili2311 authored Jul 29, 2019
2 parents 11831e7 + cdad830 commit 176b9bd
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/lib/errors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ export {PolicyNotFoundError} from './policy-not-found-error';
export {InternalServerError} from './internal-server-error';
export {FailedToGetVulnerabilitiesError} from './failed-to-get-vulnerabilities-error';
export {UnsupportedFeatureFlagError} from './unsupported-feature-flag-error';
export {UnsupportedPackageManagerError} from './unsupported-package-manager-error';
17 changes: 17 additions & 0 deletions src/lib/errors/unsupported-package-manager-error.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import {CustomError} from './custom-error';
import * as pms from '../package-managers';

export class UnsupportedPackageManagerError extends CustomError {
private static ERROR_MESSAGE: string =
'Here are our supported package managers:' +
`${Object.keys(pms.SUPPORTED_PACKAGE_MANAGER_NAME)
.map((i) => '\n - ' + i + ' (' + pms.SUPPORTED_PACKAGE_MANAGER_NAME[i] + ')')}
`;

constructor(packageManager) {
super(`Unsupported package manager ${packageManager}.` + UnsupportedPackageManagerError.ERROR_MESSAGE);
this.code = 422;
this.userMessage = `Unsupported package manager '${packageManager}''. ` +
UnsupportedPackageManagerError.ERROR_MESSAGE;
}
}
3 changes: 2 additions & 1 deletion src/lib/plugins/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import * as phpPlugin from 'snyk-php-plugin';
import * as nodejsPlugin from './nodejs-plugin';
import * as types from './types';
import {SupportedPackageManagers} from '../package-managers';
import { UnsupportedPackageManagerError } from '../errors';

export function loadPlugin(packageManager: SupportedPackageManagers,
options: types.Options = {}): types.Plugin {
Expand Down Expand Up @@ -54,7 +55,7 @@ export function loadPlugin(packageManager: SupportedPackageManagers,
return phpPlugin;
}
default: {
throw new Error(`Unsupported package manager: ${packageManager}`);
throw new UnsupportedPackageManagerError(packageManager);
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/lib/snyk-test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const detect = require('../detect');
const runTest = require('./run-test');
const chalk = require('chalk');
const pm = require('../package-managers');
const {UnsupportedPackageManagerError} = require('../errors');

function test(root, options, callback) {
if (typeof options === 'function') {
Expand Down Expand Up @@ -49,7 +50,7 @@ function executeTest(root, options) {
function run(root, options) {
const packageManager = options.packageManager;
if (!(options.docker || pm.SUPPORTED_PACKAGE_MANAGER_NAME[packageManager])) {
throw new Error('Unsupported package manager: ' + packageManager);
throw new UnsupportedPackageManagerError(packageManager);
}
return runTest(packageManager, root, options);
}
11 changes: 11 additions & 0 deletions test/acceptance/cli-args.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,14 @@ test('snyk test command should fail when --file is not specified correctly', (t)
t.equal(stdout.trim(), 'Empty --file argument. Did you mean --file=path/to/file ?', 'correct error output');
});
});

test('snyk test command should fail when --packageManager is not specified correctly', (t) => {
t.plan(1);

exec(`node ${main} test --packageManager=hello`, (err, stdout, stderr) => {
if (err) {
throw err;
}
t.match(stdout.trim(), 'Unsupported package manager', 'correct error output');
});
});

0 comments on commit 176b9bd

Please sign in to comment.