diff --git a/tests/ruleToggler.js b/tests/ruleToggler.js index 16210985..22b3c600 100644 --- a/tests/ruleToggler.js +++ b/tests/ruleToggler.js @@ -21,6 +21,9 @@ var generateToggledRules = function (filename) { describe('rule toggling', function () { describe('getToggledRules', function () { + ////////////////////////////// + // SCSS syntax tests + ////////////////////////////// it('should allow all rules to be disabled', function () { assert(deepEqual(generateToggledRules('ruleToggler-disable-all.scss'), { globalEnable: [[false, 1, 1]], @@ -120,6 +123,109 @@ describe('rule toggling', function () { } }) === true); }); + + ////////////////////////////// + // SASS syntax tests + ////////////////////////////// + it('should allow all rules to be disabled', function () { + assert(deepEqual(generateToggledRules('ruleToggler-disable-all.sass'), { + globalEnable: [[false, 1, 1]], + ruleEnable: {} + }) === true); + }); + it('should allow all rules to be disabled then re-enabled', function () { + var ruleToggles = generateToggledRules('ruleToggler-disable-all-then-reenable.sass'); + assert(deepEqual(ruleToggles, { + globalEnable: [ + [false, 1, 1], + [true, 3, 1] + ], + ruleEnable: {} + }) === true); + }); + it('should allow a single rule to be disabled', function () { + assert(deepEqual(generateToggledRules('ruleToggler-disable-a-rule.sass'), { + globalEnable: [], + ruleEnable: { + a: [[false, 1, 1]] + } + }) === true); + }); + it('should allow multiple rules to be disabled', function () { + assert(deepEqual(generateToggledRules('ruleToggler-disable-multiple-rules.sass'), { + globalEnable: [], + ruleEnable: { + a: [[false, 1, 1]], + b: [[false, 1, 1]], + c: [[false, 1, 1]], + d: [[false, 1, 1]] + } + }) === true); + }); + it('should be able to disable a single line', function () { + var ruleToggles = generateToggledRules('ruleToggler-disable-a-line.sass'); + assert(deepEqual(ruleToggles, { + globalEnable: [], + ruleEnable: { + a: [[false, 2, 1], [true, 3, 1]] + } + }) === true); + }); + it('should be able to disable a block of code', function () { + var ruleToggles = generateToggledRules('ruleToggler-disable-a-block.sass'); + assert(deepEqual(ruleToggles, { + globalEnable: [], + ruleEnable: { + a: [[false, 2, 1], [true, 2, 32]] + } + }) === true); + }); + it('should be able to enable a disabled rule', function () { + var ruleToggles = generateToggledRules('ruleToggler-disable-then-enable.sass'); + assert(deepEqual(ruleToggles, { + globalEnable: [], + ruleEnable: { + a: [[false, 2, 5], [true, 4, 5]] + } + }) === true); + }); + it('should ignore comments that don\'t fit known formats', function () { + var ruleToggles = generateToggledRules('ruleToggler-ignore-unknown.sass'); + assert(deepEqual(ruleToggles, { + globalEnable: [], + ruleEnable: {} + }) === true); + }); + it('should ignore empty files', function () { + var ruleToggles = generateToggledRules('empty-file.sass'); + assert(deepEqual(ruleToggles, { + globalEnable: [], + ruleEnable: {} + }) === true); + }); + it('should ignore empty comments', function () { + var ruleToggles = generateToggledRules('ruleToggler-empty-comment.sass'); + assert(deepEqual(ruleToggles, { + globalEnable: [], + ruleEnable: {} + }) === true); + }); + it('should be ordered', function () { + var ruleToggles = generateToggledRules('ruleToggler-guarantee-order.sass'); + assert(deepEqual(ruleToggles, { + globalEnable: [], + ruleEnable: { + a: [[false, 2, 1], + [false, 2, 5], + [true, 5, 20], + [false, 8, 1], + [false, 8, 5], + [true, 11, 20], + [false, 14, 5], + [false, 15, 5]] + } + }) === true); + }); }); describe('isResultEnabled', function () { it('should disable all rules if global is disabled', function () { diff --git a/tests/sass/empty-file.sass b/tests/sass/empty-file.sass new file mode 100644 index 00000000..e69de29b diff --git a/tests/sass/ruleToggler-disable-a-block.sass b/tests/sass/ruleToggler-disable-a-block.sass new file mode 100644 index 00000000..79981c64 --- /dev/null +++ b/tests/sass/ruleToggler-disable-a-block.sass @@ -0,0 +1,2 @@ +p + // sass-lint:disable-block a diff --git a/tests/sass/ruleToggler-disable-a-line.sass b/tests/sass/ruleToggler-disable-a-line.sass new file mode 100644 index 00000000..9c449198 --- /dev/null +++ b/tests/sass/ruleToggler-disable-a-line.sass @@ -0,0 +1,2 @@ +p + border-color: red // sass-lint:disable-line a diff --git a/tests/sass/ruleToggler-disable-a-rule.sass b/tests/sass/ruleToggler-disable-a-rule.sass new file mode 100644 index 00000000..5f04af37 --- /dev/null +++ b/tests/sass/ruleToggler-disable-a-rule.sass @@ -0,0 +1 @@ +// sass-lint:disable a diff --git a/tests/sass/ruleToggler-disable-all-then-reenable.sass b/tests/sass/ruleToggler-disable-all-then-reenable.sass new file mode 100644 index 00000000..63eeb627 --- /dev/null +++ b/tests/sass/ruleToggler-disable-all-then-reenable.sass @@ -0,0 +1,3 @@ +// sass-lint:disable-all + +// sass-lint:enable-all diff --git a/tests/sass/ruleToggler-disable-all.sass b/tests/sass/ruleToggler-disable-all.sass new file mode 100644 index 00000000..1776554a --- /dev/null +++ b/tests/sass/ruleToggler-disable-all.sass @@ -0,0 +1 @@ +// sass-lint:disable-all diff --git a/tests/sass/ruleToggler-disable-multiple-rules.sass b/tests/sass/ruleToggler-disable-multiple-rules.sass new file mode 100644 index 00000000..8e44d373 --- /dev/null +++ b/tests/sass/ruleToggler-disable-multiple-rules.sass @@ -0,0 +1 @@ +// sass-lint:disable a b, c d diff --git a/tests/sass/ruleToggler-disable-then-enable.sass b/tests/sass/ruleToggler-disable-then-enable.sass new file mode 100644 index 00000000..5fdc7cf4 --- /dev/null +++ b/tests/sass/ruleToggler-disable-then-enable.sass @@ -0,0 +1,5 @@ +p + // sass-lint:disable a + border: none + // sass-lint:enable a + color: blue diff --git a/tests/sass/ruleToggler-empty-comment.sass b/tests/sass/ruleToggler-empty-comment.sass new file mode 100644 index 00000000..eea459d1 --- /dev/null +++ b/tests/sass/ruleToggler-empty-comment.sass @@ -0,0 +1,2 @@ +p + /**/ diff --git a/tests/sass/ruleToggler-guarantee-order.sass b/tests/sass/ruleToggler-guarantee-order.sass new file mode 100644 index 00000000..62efa91c --- /dev/null +++ b/tests/sass/ruleToggler-guarantee-order.sass @@ -0,0 +1,17 @@ +p + // sass-lint:disable a + border: 0 + // sass-lint:disable-block a + font-size: 100% + +a + // sass-lint:disable a + border: 0 + // sass-lint:disable-block a + font-size: 100% + +li + /* sass-lint:disable a + /* sass-lint:disable a + border: 0 + font-size: 100% diff --git a/tests/sass/ruleToggler-ignore-unknown.sass b/tests/sass/ruleToggler-ignore-unknown.sass new file mode 100644 index 00000000..7913ac83 --- /dev/null +++ b/tests/sass/ruleToggler-ignore-unknown.sass @@ -0,0 +1,2 @@ +p + //sass-lint:random a