From 1e300db109d086b30431e0a18f6cbbc23698dcc6 Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Thu, 22 Jun 2017 12:47:50 +0900 Subject: [PATCH 1/6] Fix: `no-invalid-template-root` has false positive about empty templates (fixes #41) --- lib/rules/no-invalid-template-root.js | 14 ----------- tests/lib/rules/no-invalid-template-root.js | 27 +++++++++------------ 2 files changed, 12 insertions(+), 29 deletions(-) diff --git a/lib/rules/no-invalid-template-root.js b/lib/rules/no-invalid-template-root.js index 8b34dacf9..ddebaedfd 100644 --- a/lib/rules/no-invalid-template-root.js +++ b/lib/rules/no-invalid-template-root.js @@ -65,12 +65,6 @@ function create (context) { loc: extraElement.loc, message: 'The template root requires exactly one element.' }) - } else if (rootElements.length === 0) { - context.report({ - node, - loc: node.loc, - message: 'The template root requires exactly one element.' - }) } else { for (const element of rootElements) { const tag = element.startTag @@ -92,14 +86,6 @@ function create (context) { }) } } - if (vIf) { - const tag = rootElements[0].startTag - context.report({ - node: tag, - loc: tag.loc, - message: "The template root requires the next element which has 'v-else' directives if it has 'v-if' directives." - }) - } } } } diff --git a/tests/lib/rules/no-invalid-template-root.js b/tests/lib/rules/no-invalid-template-root.js index 89a38c7b8..322ac67dc 100644 --- a/tests/lib/rules/no-invalid-template-root.js +++ b/tests/lib/rules/no-invalid-template-root.js @@ -50,14 +50,21 @@ tester.run('no-invalid-template-root', rule, { { filename: 'test.vue', code: `` - } - ], - invalid: [ + }, { filename: 'test.vue', - code: '', - errors: ['The template root requires exactly one element.'] + code: '' }, + { + filename: 'test.vue', + code: '' + }, + { + filename: 'test.vue', + code: '' + } + ], + invalid: [ { filename: 'test.vue', code: '', @@ -88,16 +95,6 @@ tester.run('no-invalid-template-root', rule, { code: '', errors: ["The template root disallows 'v-for' directives."] }, - { - filename: 'test.vue', - code: '', - errors: ["The template root requires the next element which has 'v-else' directives if it has 'v-if' directives."] - }, - { - filename: 'test.vue', - code: '', - errors: ["The template root requires the next element which has 'v-else' directives if it has 'v-if' directives."] - }, { filename: 'test.vue', code: '', From f220c0d6804a52e948a23c18b42b93325ef705de Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Sun, 25 Jun 2017 03:04:53 +0900 Subject: [PATCH 2/6] revive warnings of empty --- lib/rules/no-invalid-template-root.js | 6 ++++++ tests/lib/rules/no-invalid-template-root.js | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/rules/no-invalid-template-root.js b/lib/rules/no-invalid-template-root.js index ddebaedfd..f4f891a30 100644 --- a/lib/rules/no-invalid-template-root.js +++ b/lib/rules/no-invalid-template-root.js @@ -65,6 +65,12 @@ function create (context) { loc: extraElement.loc, message: 'The template root requires exactly one element.' }) + } else if (rootElements.length === 0) { + context.report({ + node, + loc: node.loc, + message: 'The template root requires exactly one element.' + }) } else { for (const element of rootElements) { const tag = element.startTag diff --git a/tests/lib/rules/no-invalid-template-root.js b/tests/lib/rules/no-invalid-template-root.js index 322ac67dc..d5b311515 100644 --- a/tests/lib/rules/no-invalid-template-root.js +++ b/tests/lib/rules/no-invalid-template-root.js @@ -51,10 +51,6 @@ tester.run('no-invalid-template-root', rule, { filename: 'test.vue', code: `` }, - { - filename: 'test.vue', - code: '' - }, { filename: 'test.vue', code: '' @@ -65,6 +61,11 @@ tester.run('no-invalid-template-root', rule, { } ], invalid: [ + { + filename: 'test.vue', + code: '', + errors: ['The template root requires exactly one element.'] + }, { filename: 'test.vue', code: '', From d8dd93d7c30560b1a6490e45edda98ba91b77597 Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Sun, 25 Jun 2017 03:19:38 +0900 Subject: [PATCH 3/6] update docs --- docs/rules/no-invalid-template-root.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/rules/no-invalid-template-root.md b/docs/rules/no-invalid-template-root.md index aa8c40d43..8f96ea094 100644 --- a/docs/rules/no-invalid-template-root.md +++ b/docs/rules/no-invalid-template-root.md @@ -6,14 +6,19 @@ This rule checks whether every template root is valid. This rule reports the template root if the following cases: +- The root is nothing. E.g. ``. - The root is text. E.g. ``. - The root is multiple elements. E.g. ``. - The root element has `v-for` directives. E.g. ``. -- The root element has `v-if`/`v-else-if` directives without `v-else` elements. E.g. ``. - The root element is `