standard-markdown
Version:
Test your Markdown files for Standard JavaScript Style™
63 lines (50 loc) • 2.34 kB
JavaScript
const test = require('tape')
const fs = require('fs')
const path = require('path')
const standardMarkdown = require('../')
const dirty = fs.readFileSync(path.join(__dirname, 'fixtures/dirty.md'), 'utf8')
const clean = fs.readFileSync(path.join(__dirname, 'fixtures/clean.md'), 'utf8')
const cleanable = fs.readFileSync(path.join(__dirname, 'fixtures/cleanable.md'), 'utf8')
test('standardMarkdownFormat', function (t) {
t.comment('cleaning the dirty fixture')
standardMarkdown.formatText(cleanable, function (cleanErr, results, cleanText) {
if (cleanErr) throw cleanErr
t.equal(results.length, 0, 'should remove all linting errors from the cleanable fixture')
t.equal(cleanable.split('\n').length, cleanText.split('\n').length, 'should keep the same number of lines')
t.ok(!/```(js|javascript)\n\(([{|[][\s\S]+[}|\]])\)\n```/mgi.test(cleanText), 'should remove the magic parenthesis when formatting')
t.end()
})
})
test('standardMarkdown', function (t) {
standardMarkdown.lintText(dirty, function (err, results) {
if (err) throw err
t.comment('dirty fixture')
t.equal(results.length, 7, 'returns 7 linting errors')
t.equal(results[0].message, 'Unexpected var, use let or const instead.')
t.equal(results[0].line, 6, 'identifies correct line number in first block')
t.equal(results[1].message, 'Extra semicolon.', 'finds errors in second block')
t.equal(results[1].line, 6, 'identifies correct line number in second block')
t.equal(results[3].message, 'Extra semicolon.', 'finds errors in second block')
t.equal(results[3].line, 20, 'identifies correct line number in second block')
t.comment('every error')
t.ok(results.every(function (result) {
return result.message.length
}), 'has a `message` property')
t.ok(results.every(function (result) {
return result.line > 0
}), 'has a `line` property')
t.ok(results.every(function (result) {
return result.column > 0
}), 'has a `column` property')
t.ok(results.every(function (result) {
return result.severity > 0
}), 'has a `severity` property')
t.comment('clean fixture')
standardMarkdown.lintText(clean, function (err, results) {
if (err) throw err
t.equal(results.length, 0, 'has no errors')
t.end()
})
})
})