hapi-no-var
Version:
ESLint rule to enforce the usage of var declarations only in try-catch scope
63 lines (47 loc) • 2.07 kB
JavaScript
;
// Load modules
const Code = require('code');
const ESLint = require('eslint');
const Lab = require('lab');
const HapiNoVar = require('../lib');
const { describe, it } = exports.lab = Lab.script();
const RuleTester = ESLint.RuleTester;
Code.settings.truncateMessages = false;
describe('ESLint Rule', () => {
it('reports warning when vars used outside of try...catch scope', () => {
const sample = [
'function test() { var a = 1; }',
'function test() { try { var bf = 2; console.log(bf); } catch (err) {} }',
'function test() { try {} catch (err) { var cf = 3; console.log(cf); } }',
'function test() { try { var bf = 2; if (bf) { console.log(bf); } } catch (err) {} }',
'function test() { try { if (true) { var bf = 2; } console.log(bf); } catch (err) {} }',
'var a = 1; try {} catch (err) {}'
];
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
ruleTester.run(HapiNoVar.esLintRuleName, HapiNoVar, {
valid: [],
invalid: sample.map((code) => {
return {
code,
errors: [{ message: 'Unexpected var, use let or const instead.' }]
};
})
});
});
it('ignores vars used inside try...catch scope and referenced from outside', () => {
const sample = [
'const a = 1;',
'function test() { try { var bf = 2; } catch (err) {} console.log(bf); }',
'function test() { try {} catch (err) { var cf = 3; } console.log(cf); }',
'function test() { a = 1; try { var a = 2; } catch (err) {} }',
'try { var a = 1; } catch (err) {} console.log(a);'
];
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
ruleTester.run(HapiNoVar.esLintRuleName, HapiNoVar, {
valid: sample.map((code) => {
return { code };
}),
invalid: []
});
});
});