diff --git a/README.md b/README.md index b489b4cf..38b33242 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,22 @@ [![devDependency Status](https://david-dm.org/platinumazure/eslint-plugin-qunit/dev-status.svg)](https://david-dm.org/platinumazure/eslint-plugin-qunit#info=devDependencies) ESLint plugin containing rules useful for QUnit tests. + +## Available Rules + +Below is the list of rules available in this plugin. + +* [assert-args](./docs/rules/assert-args.md) +* [literal-compare-order](./docs/rules/literal-compare-order.md) +* [no-arrow-tests](./docs/rules/no-arrow-tests.md) +* [no-assert-equal](./docs/rules/no-assert-equal.md) +* [no-async-in-loops](./docs/rules/no-async-in-loops.md) +* [no-async-test](./docs/rules/no-async-test.md) +* [no-commented-tests](./docs/rules/no-commented-tests.md) +* [no-global-assertions](./docs/rules/no-global-assertions.md) +* [no-global-expect](./docs/rules/no-global-expect.md) +* [no-global-module-test](./docs/rules/no-global-module-test.md) +* [no-ok-equality](./docs/rules/no-ok-equality.md) +* [no-only](./docs/rules/no-only.md) +* [require-expect](./docs/rules/require-expect.md) +* [resolve-async](./docs/rules/resolve-async.md) diff --git a/tests/readme.js b/tests/readme.js new file mode 100644 index 00000000..9e1b35df --- /dev/null +++ b/tests/readme.js @@ -0,0 +1,58 @@ +/** + * @fileoverview Unit tests for the README. + * @author Kevin Partington + */ +"use strict"; + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +var assert = require("chai").assert, + fs = require("fs"), + path = require("path"); + +//------------------------------------------------------------------------------ +// Tests +//------------------------------------------------------------------------------ + +describe("README", function () { + var ruleGroupRegex = /## Available Rules[\s\S]*(?:\n(?=##)|$)/, + ruleRegex = /^\* \[([a-z-]+)\]\(\.\/docs\/rules\/\1\.md\)$/gm, + fileContents, + availableRules; + + before(function (done) { + fs.readFile("./README.md", "utf8", function (err, contents) { + if (err) throw err; + + fileContents = contents; + + fs.readdir("./lib/rules", function (err, files) { + if (err) throw err; + + availableRules = files.map(function (file) { + return path.basename(file, ".js"); + }); + + done(); + }); + }); + }); + + it("should find the rules", function () { + var match = ruleGroupRegex.exec(fileContents), + foundRules = [], + ruleSection; + + assert.ok(match, "Rule section should be present"); + + ruleSection = match[0]; + + while ((match = ruleRegex.exec(ruleSection)) !== null) { + foundRules.push(match[1]); + } + + assert.deepEqual(foundRules, availableRules, "Rules in README should match available rules"); + }); +});