/** * @author Yosuke Ota */ 'use strict' const RuleTester = require('../../eslint-compat').RuleTester const rule = require('../../../lib/rules/max-len') const tester = new RuleTester({ languageOptions: { parser: require('vue-eslint-parser'), ecmaVersion: 2017, sourceType: 'module' } }) tester.run('max-len', rule, { valid: [ { filename: 'test.vue', code: '' }, { filename: 'test.vue', code: `` }, { filename: 'test.vue', code: `` }, { filename: 'test.vue', code: ` ` }, { filename: 'test.vue', code: ` ` }, { filename: 'test.vue', code: ` `, options: [{ code: 120 }] }, { filename: 'test.vue', code: ` `, options: [{ template: 120 }] }, { filename: 'test.vue', code: ` `, options: [{ template: 120 }] }, // ignores // - ignorePattern { filename: 'test.vue', code: ` `, options: [{ ignorePattern: 'foooooooooooooooooo' }] }, // - ignoreComments { filename: 'test.vue', code: ` `, options: [{ ignoreComments: true }] }, { filename: 'test.vue', code: ` `, options: [{ ignoreComments: true }] }, // - ignoreUrls: true { filename: 'test.vue', code: ` `, options: [{ ignoreUrls: true }] }, { filename: 'test.vue', code: ` `, options: [{ ignoreUrls: true }] }, // - ignoreStrings: true { filename: 'test.vue', code: ` `, options: [{ ignoreStrings: true }] }, { filename: 'test.vue', code: ` `, options: [{ ignoreStrings: true }] }, // - ignoreTemplateLiterals: true { filename: 'test.vue', code: ` `, options: [{ ignoreTemplateLiterals: true }] }, { filename: 'test.vue', code: ` `, options: [{ ignoreTemplateLiterals: true }] }, // - ignoreRegExpLiterals: true { filename: 'test.vue', code: ` `, options: [{ ignoreRegExpLiterals: true }] }, { filename: 'test.vue', code: ` `, options: [{ ignoreRegExpLiterals: true }] }, // - ignoreHTMLAttributeValues: true { filename: 'test.vue', code: ` `, options: [{ ignoreHTMLAttributeValues: true }] }, // - ignoreHTMLTextContents: true { filename: 'test.vue', code: ` `, options: [{ ignoreHTMLTextContents: true }] }, // ignore ` ` } ], invalid: [ { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 2 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 } ] }, { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 2 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 } ] }, { filename: 'test.vue', code: ` `, options: [{ code: 120 }], errors: [ { message: 'This line has a length of 121. Maximum allowed is 120.', line: 2 }, { message: 'This line has a length of 121. Maximum allowed is 120.', line: 3 } ] }, { filename: 'test.vue', code: ` `, options: [{ template: 120 }], errors: [ { message: 'This line has a length of 121. Maximum allowed is 120.', line: 2 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 } ] }, { filename: 'test.vue', code: ` `, options: [{ template: 120 }], errors: [ { message: 'This line has a length of 121. Maximum allowed is 120.', line: 2 } ] }, { filename: 'test.vue', code: ` `, options: [{ code: 120, template: 80 }], errors: [ { message: 'This line has a length of 121. Maximum allowed is 120.', line: 2 } ] }, // ignores // - ignorePattern: off { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 82. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 84. Maximum allowed is 80.', line: 5 }, { message: 'This line has a length of 94. Maximum allowed is 80.', line: 10 } ] }, // - ignoreComments: false { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 6 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 7 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 8 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 9 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 10 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 11 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 14 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 15 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 16 } ] }, { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 4 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 5 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 8 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 11 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 12 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 13 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 14 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 15 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 16 } ] }, // - ignoreComments: true { filename: 'test.vue', code: ` `, options: [{ ignoreComments: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 10 } ] }, { filename: 'test.vue', code: ` `, options: [{ ignoreComments: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 15 } ] }, // - ignoreTrailingComments: true { filename: 'test.vue', code: ` `, options: [{ ignoreTrailingComments: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 8 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 10 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 16 } ] }, { filename: 'test.vue', code: ` `, options: [{ ignoreTrailingComments: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 5 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 8 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 13 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 15 } ] }, // - ignoreUrls: false { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 89. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 83. Maximum allowed is 80.', line: 7 } ] }, { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 83. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 89. Maximum allowed is 80.', line: 6 } ] }, // - ignoreStrings: false { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 6 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 8 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 13 } ] }, { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 6 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 9 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 11 } ] }, // - ignoreStrings: true { filename: 'test.vue', code: ` `, options: [{ ignoreStrings: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 } ] }, { filename: 'test.vue', code: ` `, options: [{ ignoreStrings: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 6 } ] }, // - ignoreTemplateLiterals: false { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 4 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 5 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 10 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 11 } ] }, { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 4 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 8 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 9 } ] }, // - ignoreTemplateLiterals: true { filename: 'test.vue', code: ` `, options: [{ ignoreTemplateLiterals: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 4 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 10 } ] }, { filename: 'test.vue', code: ` `, options: [{ ignoreTemplateLiterals: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 8 } ] }, // - ignoreRegExpLiterals: false { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 4 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 9 } ] }, { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 7 } ] }, // - ignoreHTMLAttributeValues: false { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 } ] }, // - ignoreHTMLTextContents: false { filename: 'test.vue', code: ` `, errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 4 }, { message: 'This line has a length of 88. Maximum allowed is 80.', line: 5 } ] }, // code { filename: 'test.vue', code: ``, options: [40], errors: ['This line has a length of 41. Maximum allowed is 40.'] }, { filename: 'test.vue', code: ``, options: [{ code: 40 }], errors: ['This line has a length of 41. Maximum allowed is 40.'] }, // tabWidth { filename: 'test.vue', code: ``, options: [40, 4], errors: ['This line has a length of 45. Maximum allowed is 40.'] }, { filename: 'test.vue', code: ``, options: [{ code: 40, tabWidth: 4 }], errors: ['This line has a length of 45. Maximum allowed is 40.'] }, { filename: 'test.vue', code: ``, options: [{ code: 40, tabWidth: 3 }], errors: ['This line has a length of 44. Maximum allowed is 40.'] }, // comments { filename: 'test.vue', code: ` `, options: [{ comments: 40 }], errors: [ { message: 'This line has a comment length of 41. Maximum allowed is 40.', line: 3 }, { message: 'This line has a comment length of 41. Maximum allowed is 40.', line: 4 }, { message: 'This line has a comment length of 41. Maximum allowed is 40.', line: 9 }, { message: 'This line has a comment length of 41. Maximum allowed is 40.', line: 12 }, { message: 'This line has a comment length of 41. Maximum allowed is 40.', line: 13 } ] }, // .js { filename: 'test.js', code: ` var a = '81 columns '; var b = \`81 columns \`; /* 81 columns */ `, options: [], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 2 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 4 } ] }, { filename: 'test.js', code: ` var a = '81 columns ignoreStrings '; var b = \`81 columns \`; /* 81 columns */ `, options: [{ ignoreStrings: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 4 } ] }, { filename: 'test.js', code: ` var a = '81 columns '; var b = \`81 columns \`; /* 81 columns */ `, options: [{ ignoreComments: true }], errors: [ { message: 'This line has a length of 81. Maximum allowed is 80.', line: 2 }, { message: 'This line has a length of 81. Maximum allowed is 80.', line: 3 } ] }, // only script comment { filename: 'test.js', code: ` // 41 cols * /* 41 cols * 41 cols * */ `, options: [{ comments: 40 }], errors: [ { message: 'This line has a comment length of 41. Maximum allowed is 40.', line: 2 }, { message: 'This line has a comment length of 41. Maximum allowed is 40.', line: 3 }, { message: 'This line has a comment length of 41. Maximum allowed is 40.', line: 4 } ] } ] })