diff --git a/src/__tests__/linter.ts b/src/__tests__/linter.ts index f863ff54d..973dce472 100644 --- a/src/__tests__/linter.ts +++ b/src/__tests__/linter.ts @@ -43,7 +43,7 @@ describe('linter', () => { expect(result.results.length).toBe(0); }); - test('should return extra properties', () => { + test('should return all properties', () => { const message = '4xx responses require a description'; spectral.addFunctions({ @@ -94,6 +94,36 @@ describe('linter', () => { }); }); + test('should support rule overriding severity', () => { + spectral.addFunctions({ + func1: () => { + return [ + { + message: 'foo', + }, + ]; + }, + }); + + spectral.addRules({ + rule1: { + given: '$.x', + severity: ValidationSeverity.Info, + severityLabel: ValidationSeverityLabel.Info, + then: { + function: 'func1', + }, + }, + }); + + const result = spectral.run({ + x: true, + }); + + expect(result.results[0].severity).toEqual(ValidationSeverity.Info); + expect(result.results[0].severityLabel).toEqual(ValidationSeverityLabel.Info); + }); + describe('functional tests for the given property', () => { let fakeLintingFunction: any; diff --git a/src/linter.ts b/src/linter.ts index 01a77825c..25ab16301 100644 --- a/src/linter.ts +++ b/src/linter.ts @@ -88,8 +88,8 @@ export const lintNode = ( return { name: rule.name, message: result.message, - severity: ValidationSeverity.Error || rule.severity, - severityLabel: ValidationSeverityLabel.Error || rule.severityLabel, + severity: rule.severity || ValidationSeverity.Error, + severityLabel: rule.severityLabel || ValidationSeverityLabel.Error, path: result.path || targetPath, }; }) diff --git a/src/spectral.ts b/src/spectral.ts index 27f18a77c..42724f623 100644 --- a/src/spectral.ts +++ b/src/spectral.ts @@ -12,6 +12,8 @@ import { RunRuleCollection, } from './types'; +export * from './types'; + export class Spectral { private _rules: RuleCollection = {}; private _functions: FunctionCollection = defaultFunctions;