Skip to content

Commit e5c0381

Browse files
chr1shaefn3rtclindner
authored andcommitted
Add absolute version (dev)dependencies rule (#36)
* Feature add absolute dep rule * Feature add absolute devDep rule
1 parent 2a85ec9 commit e5c0381

4 files changed

+132
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'use strict';
2+
3+
const areVersRangesValid = require('./../validators/dependency-audit').areVersRangesValid;
4+
const LintIssue = require('./../LintIssue');
5+
const lintId = 'prefer-absolute-version-dependencies';
6+
const nodeName = 'dependencies';
7+
const message = 'You are using an invalid version range. Please use absolute versions.';
8+
const ruleType = 'dependencies-version-range';
9+
10+
const lint = function(packageJsonData, lintType) {
11+
const rangeSpecifier = '=';
12+
13+
if (!areVersRangesValid(packageJsonData, nodeName, rangeSpecifier)) {
14+
return new LintIssue(lintId, lintType, nodeName, message);
15+
}
16+
17+
return true;
18+
};
19+
20+
module.exports.lint = lint;
21+
module.exports.ruleType = ruleType;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'use strict';
2+
3+
const areVersRangesValid = require('./../validators/dependency-audit').areVersRangesValid;
4+
const LintIssue = require('./../LintIssue');
5+
const lintId = 'prefer-absolute-version-devDependencies';
6+
const nodeName = 'devDependencies';
7+
const message = 'You are using an invalid version range. Please use absolute versions.';
8+
const ruleType = 'devDependencies-version-range';
9+
10+
const lint = function(packageJsonData, lintType) {
11+
const rangeSpecifier = '=';
12+
13+
if (!areVersRangesValid(packageJsonData, nodeName, rangeSpecifier)) {
14+
return new LintIssue(lintId, lintType, nodeName, message);
15+
}
16+
17+
return true;
18+
};
19+
20+
module.exports.lint = lint;
21+
module.exports.ruleType = ruleType;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
'use strict';
2+
3+
const should = require('should');
4+
const requireHelper = require('../../require_helper');
5+
const lint = requireHelper('rules/prefer-absolute-version-dependencies').lint;
6+
7+
describe('prefer-absolute-version-dependencies Unit Tests', function() {
8+
context('when package.json has node with an invalid value', function() {
9+
it('LintIssue object should be returned', function() {
10+
const packageJsonData = {
11+
dependencies: {
12+
'npm-package-json-lint': '~1.0.0'
13+
}
14+
};
15+
const response = lint(packageJsonData, 'error');
16+
17+
response.lintId.should.equal('prefer-absolute-version-dependencies');
18+
response.lintType.should.equal('error');
19+
response.node.should.equal('dependencies');
20+
response.lintMessage.should.equal('You are using an invalid version range. Please use absolute versions.');
21+
});
22+
});
23+
24+
context('when package.json has node with a valid value (= prefixed)', function() {
25+
it('LintIssue object should be returned', function() {
26+
const packageJsonData = {
27+
dependencies: {
28+
'gulp-npm-package-json-lint': '=1.0.0'
29+
}
30+
};
31+
const response = lint(packageJsonData, 'error');
32+
33+
response.should.be.true();
34+
});
35+
});
36+
37+
context('when package.json does not have node', function() {
38+
it('true should be returned', function() {
39+
const packageJsonData = {};
40+
const response = lint(packageJsonData, 'error');
41+
42+
response.should.be.true();
43+
});
44+
});
45+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
'use strict';
2+
3+
const should = require('should');
4+
const requireHelper = require('../../require_helper');
5+
const lint = requireHelper('rules/prefer-absolute-version-devDependencies').lint;
6+
7+
describe('prefer-absolute-version-devDependencies Unit Tests', function() {
8+
context('when package.json has node with an invalid value', function() {
9+
it('LintIssue object should be returned', function() {
10+
const packageJsonData = {
11+
devDependencies: {
12+
'npm-package-json-lint': '~1.0.0'
13+
}
14+
};
15+
const response = lint(packageJsonData, 'error');
16+
17+
response.lintId.should.equal('prefer-absolute-version-devDependencies');
18+
response.lintType.should.equal('error');
19+
response.node.should.equal('devDependencies');
20+
response.lintMessage.should.equal('You are using an invalid version range. Please use absolute versions.');
21+
});
22+
});
23+
24+
context('when package.json has node with a valid value (= prefixed)', function() {
25+
it('LintIssue object should be returned', function() {
26+
const packageJsonData = {
27+
devDependencies: {
28+
'gulp-npm-package-json-lint': '=1.0.0'
29+
}
30+
};
31+
const response = lint(packageJsonData, 'error');
32+
33+
response.should.be.true();
34+
});
35+
});
36+
37+
context('when package.json does not have node', function() {
38+
it('true should be returned', function() {
39+
const packageJsonData = {};
40+
const response = lint(packageJsonData, 'error');
41+
42+
response.should.be.true();
43+
});
44+
});
45+
});

0 commit comments

Comments
 (0)