Skip to content
4 changes: 4 additions & 0 deletions lib/rules/line-length.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,14 @@ export default {
let 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 }
// Skip co-authorship.
if (/^\s*Co-authored-by:/i.test(line)) { continue }

if (line.length > len) {
failed = true
context.report({
Expand Down
31 changes: 31 additions & 0 deletions test/rules/line-length.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,5 +129,36 @@ https://${'very-'.repeat(80)}-long-url.org/
tt.end()
})

t.test('Co-author lines', (tt) => {
const v = new Validator()
const context = new Commit({
sha: 'f1496de5a7d5474e39eafaafe6f79befe5883a5b',
author: {
name: 'Jacob Smith',
email: '[email protected]',
date: '2025-12-22T09:40:42Z',
},
message: `
fixup!: apply case-insensitive suggestion
Co-authored-by: Michaël Zasso <[email protected]>
`,
}, 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()
})
Loading