Skip to content

Commit

Permalink
rules: skip line-length rule for URLs and quoted lines (#30)
Browse files Browse the repository at this point in the history
Fixes: #24
  • Loading branch information
addaleax authored and joyeecheung committed Nov 2, 2018
1 parent af88c21 commit 029fc30
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 2 deletions.
6 changes: 6 additions & 0 deletions lib/rules/line-length.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ module.exports = {
var failed = false
for (let i = 0; i < parsed.body.length; i++) {
const line = parsed.body[i]
// Skip quoted lines, e.g. for original commit messages of V8 backports.
if (line.startsWith(' '))
continue
// Skip lines with URLs.
if (/https?:\/\//.test(line))
continue
if (line.length > len) {
failed = true
context.report({
Expand Down
64 changes: 64 additions & 0 deletions test/rules/line-length.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,5 +67,69 @@ ${'aaa'.repeat(30)}`
tt.end()
})

t.test('quoted lines', (tt) => {
const v = new Validator()
const context = new Commit({
sha: 'e7c077c610afa371430180fbd447bfef60ebc5ea'
, author: {
name: 'Evan Lucas'
, email: '[email protected]'
, date: '2016-04-12T19:42:23Z'
}
, message: `src: make foo mor foo-ey
Here’s the original code:
${'aaa'.repeat(30)}
That was the original code.
`
}, v)

context.report = (opts) => {
tt.pass('called report')
tt.equal(opts.id, 'line-length', 'id')
tt.equal(opts.string, '', 'string')
tt.equal(opts.level, 'pass', 'level')
}

Rule.validate(context, {
options: {
length: 72
}
})
tt.end()
})

t.test('URLs', (tt) => {
const v = new Validator()
const context = new Commit({
sha: 'e7c077c610afa371430180fbd447bfef60ebc5ea'
, author: {
name: 'Evan Lucas'
, email: '[email protected]'
, date: '2016-04-12T19:42:23Z'
}
, message: `src: make foo mor foo-ey
https://${'very-'.repeat(80)}-long-url.org/
`
}, v)

context.report = (opts) => {
tt.pass('called report')
tt.equal(opts.id, 'line-length', 'id')
tt.equal(opts.string, '', 'string')
tt.equal(opts.level, 'pass', 'level')
}

Rule.validate(context, {
options: {
length: 72
}
})
tt.end()
})

t.end()
})
4 changes: 2 additions & 2 deletions test/validator.js
Original file line number Diff line number Diff line change
Expand Up @@ -205,11 +205,11 @@ test('Validator - real commits', (t) => {
const filtered = msgs.filter((item) => {
return item.level === 'fail'
})
tt.equal(filtered.length, 3, 'messages.length')
tt.equal(filtered.length, 2, 'messages.length')
const ids = filtered.map((item) => {
return item.id
})
const exp = ['line-length', 'line-length', 'title-length']
const exp = ['line-length', 'title-length']
tt.deepEqual(ids.sort(), exp.sort(), 'message ids')
tt.end()
})
Expand Down

0 comments on commit 029fc30

Please sign in to comment.