Repository: ember-cli/ember-cli
Pull request #7954 (2018-08-03 03:07:37)

Add template linting.

stefanpenner: yes please

Patch:
diff --git a/blueprints/addon/files/.travis.yml b/blueprints/addon/files/.travis.yml
index d659b1d3f..963c5413d 100644
--- a/blueprints/addon/files/.travis.yml
+++ b/blueprints/addon/files/.travis.yml
@@ -51,6 +51,7 @@ install:
   - npm --version
 <% } %>
 script:
+  - <% if (yarn) { %>yarn lint:hbs<% } else { %>npm run lint:hbs<% } %>
   - <% if (yarn) { %>yarn lint:js<% } else { %>npm run lint:js<% } %>
   # Usually, it's ok to finish the test scenario without reverting
   #  to the addon's original dependency state, skipping "cleanup".
diff --git a/blueprints/addon/files/README.md b/blueprints/addon/files/README.md
index 77161cb39..f133b5d75 100644
--- a/blueprints/addon/files/README.md
+++ b/blueprints/addon/files/README.md
@@ -28,6 +28,7 @@ Contributing
 
 ### Linting
 
+* `<% if (yarn) { %>yarn lint:hbs<% } else { %>npm run lint:hbs<% } %>`
 * `<% if (yarn) { %>yarn lint:js<% } else { %>npm run lint:js<% } %>`
 * `<% if (yarn) { %>yarn lint:js --fix<% } else { %>npm run lint:js -- --fix<% } %>`
 
diff --git a/blueprints/app/files/.eslintrc.js b/blueprints/app/files/.eslintrc.js
index 7d0c4ce51..0495392c9 100644
--- a/blueprints/app/files/.eslintrc.js
+++ b/blueprints/app/files/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',<% if (blueprint !== 'app') { %>
         'index.js',<% } %>
         'testem.js',
diff --git a/blueprints/app/files/.template-lintrc.js b/blueprints/app/files/.template-lintrc.js
new file mode 100644
index 000000000..b45e96ffd
--- /dev/null
+++ b/blueprints/app/files/.template-lintrc.js
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+  extends: 'recommended'
+};
diff --git a/blueprints/app/files/.travis.yml b/blueprints/app/files/.travis.yml
index 24bfe322e..3150b96ef 100644
--- a/blueprints/app/files/.travis.yml
+++ b/blueprints/app/files/.travis.yml
@@ -30,5 +30,6 @@ install:
   - yarn install --non-interactive<% } %>
 
 script:
+  - <% if (yarn) { %>yarn lint:hbs<% } else { %>npm run lint:hbs<% } %>
   - <% if (yarn) { %>yarn lint:js<% } else { %>npm run lint:js<% } %>
   - <% if (yarn) { %>yarn<% } else { %>npm<% } %> test
diff --git a/blueprints/app/files/README.md b/blueprints/app/files/README.md
index 265530bed..a970428ca 100644
--- a/blueprints/app/files/README.md
+++ b/blueprints/app/files/README.md
@@ -36,6 +36,7 @@ Make use of the many generators for code, try `ember help generate` for more det
 
 ### Linting
 
+* `<% if (yarn) { %>yarn lint:hbs<% } else { %>npm run lint:hbs<% } %>`
 * `<% if (yarn) { %>yarn lint:js<% } else { %>npm run lint:js<% } %>`
 * `<% if (yarn) { %>yarn lint:js --fix<% } else { %>npm run lint:js -- --fix<% } %>`
 
diff --git a/blueprints/app/files/package.json b/blueprints/app/files/package.json
index e29e987d0..9de134441 100644
--- a/blueprints/app/files/package.json
+++ b/blueprints/app/files/package.json
@@ -12,6 +12,7 @@
   },
   "scripts": {
     "build": "ember build",
+    "lint:hbs": "ember-template-lint .",
     "lint:js": "eslint .",
     "start": "ember serve",
     "test": "ember test"
@@ -31,6 +32,7 @@
     "ember-cli-inject-live-reload": "^1.4.1",
     "ember-cli-qunit": "^4.3.2",
     "ember-cli-sri": "^2.1.0",
+    "ember-cli-template-lint": "^1.0.0-beta.1",
     "ember-cli-uglify": "^2.0.0",
     "ember-data": "~3.4.0-beta.1",
     "ember-export-application-global": "^2.0.0",
diff --git a/blueprints/module-unification-addon/files/.eslintrc.js b/blueprints/module-unification-addon/files/.eslintrc.js
index 6a45140b3..777e15269 100644
--- a/blueprints/module-unification-addon/files/.eslintrc.js
+++ b/blueprints/module-unification-addon/files/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',
         'index.js',
         'testem.js',
diff --git a/blueprints/module-unification-addon/files/.travis.yml b/blueprints/module-unification-addon/files/.travis.yml
index c9e48c674..72054ad85 100644
--- a/blueprints/module-unification-addon/files/.travis.yml
+++ b/blueprints/module-unification-addon/files/.travis.yml
@@ -41,6 +41,7 @@ before_install:
   - npm --version
 
 script:
+  - npm run lint:hbs
   - npm run lint:js
   # Usually, it's ok to finish the test scenario without reverting
   #  to the addon's original dependency state, skipping "cleanup".
diff --git a/blueprints/module-unification-addon/files/README.md b/blueprints/module-unification-addon/files/README.md
index 77161cb39..f133b5d75 100644
--- a/blueprints/module-unification-addon/files/README.md
+++ b/blueprints/module-unification-addon/files/README.md
@@ -28,6 +28,7 @@ Contributing
 
 ### Linting
 
+* `<% if (yarn) { %>yarn lint:hbs<% } else { %>npm run lint:hbs<% } %>`
 * `<% if (yarn) { %>yarn lint:js<% } else { %>npm run lint:js<% } %>`
 * `<% if (yarn) { %>yarn lint:js --fix<% } else { %>npm run lint:js -- --fix<% } %>`
 
diff --git a/blueprints/module-unification-app/files/.eslintrc.js b/blueprints/module-unification-app/files/.eslintrc.js
index b1135dbfc..b518b8463 100644
--- a/blueprints/module-unification-app/files/.eslintrc.js
+++ b/blueprints/module-unification-app/files/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',
         'index.js',
         'testem.js',
diff --git a/blueprints/module-unification-app/files/.template-lintrc.js b/blueprints/module-unification-app/files/.template-lintrc.js
new file mode 100644
index 000000000..b45e96ffd
--- /dev/null
+++ b/blueprints/module-unification-app/files/.template-lintrc.js
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+  extends: 'recommended'
+};
diff --git a/blueprints/module-unification-app/files/.travis.yml b/blueprints/module-unification-app/files/.travis.yml
index 24bfe322e..3150b96ef 100644
--- a/blueprints/module-unification-app/files/.travis.yml
+++ b/blueprints/module-unification-app/files/.travis.yml
@@ -30,5 +30,6 @@ install:
   - yarn install --non-interactive<% } %>
 
 script:
+  - <% if (yarn) { %>yarn lint:hbs<% } else { %>npm run lint:hbs<% } %>
   - <% if (yarn) { %>yarn lint:js<% } else { %>npm run lint:js<% } %>
   - <% if (yarn) { %>yarn<% } else { %>npm<% } %> test
diff --git a/blueprints/module-unification-app/files/README.md b/blueprints/module-unification-app/files/README.md
index 265530bed..a970428ca 100644
--- a/blueprints/module-unification-app/files/README.md
+++ b/blueprints/module-unification-app/files/README.md
@@ -36,6 +36,7 @@ Make use of the many generators for code, try `ember help generate` for more det
 
 ### Linting
 
+* `<% if (yarn) { %>yarn lint:hbs<% } else { %>npm run lint:hbs<% } %>`
 * `<% if (yarn) { %>yarn lint:js<% } else { %>npm run lint:js<% } %>`
 * `<% if (yarn) { %>yarn lint:js --fix<% } else { %>npm run lint:js -- --fix<% } %>`
 
diff --git a/blueprints/module-unification-app/files/package.json b/blueprints/module-unification-app/files/package.json
index 8dac369fe..04d5a1f02 100644
--- a/blueprints/module-unification-app/files/package.json
+++ b/blueprints/module-unification-app/files/package.json
@@ -12,6 +12,7 @@
   "repository": "",
   "scripts": {
     "build": "ember build",
+    "lint:hbs": "ember-template-lint .",
     "lint:js": "eslint .",
     "start": "ember serve",
     "test": "ember test"
@@ -31,6 +32,7 @@
     "ember-cli-inject-live-reload": "^1.4.1",
     "ember-cli-qunit": "^4.3.2",
     "ember-cli-sri": "^2.1.0",
+    "ember-cli-template-lint": "^1.0.0-beta.1",
     "ember-cli-uglify": "^2.0.0",
     "ember-data": "~3.1.1",
     "ember-export-application-global": "^2.0.0",


Test patch:
diff --git a/tests/acceptance/smoke-test-slow.js b/tests/acceptance/smoke-test-slow.js
index 459aa49d2..41c7cead7 100644
--- a/tests/acceptance/smoke-test-slow.js
+++ b/tests/acceptance/smoke-test-slow.js
@@ -127,7 +127,7 @@ describe('Acceptance: smoke-test', function() {
     expect(exitCode).to.equal(0, 'exit code should be 0 for passing tests');
     expect(output).to.match(/JSHint/, 'JSHint should be run on production assets');
     expect(output).to.match(/fail\s+0/, 'no failures');
-    expect(output).to.match(/pass\s+\d+/, 'man=y passing');
+    expect(output).to.match(/pass\s+\d+/, 'many passing');
   }));
 
   it('ember test --path with previous build', co.wrap(function *() {
@@ -155,7 +155,7 @@ describe('Acceptance: smoke-test', function() {
     output = output.join(EOL);
 
     expect(output).to.match(/fail\s+0/, 'no failures');
-    expect(output).to.match(/pass\s+9/, '9 passing');
+    expect(output).to.match(/pass\s+\d+/, 'many passing');
   }));
 
   it('ember test wasm', co.wrap(function *() {
@@ -183,7 +183,7 @@ describe('Acceptance: smoke-test', function() {
     output = output.join(EOL);
 
     expect(output).to.match(/fail\s+0/, 'no failures');
-    expect(output).to.match(/pass\s+7/, '7 passing');
+    expect(output).to.match(/pass\s+\d+/, 'many passing');
   }));
 
   it('ember new foo, build development, and verify generated files', co.wrap(function *() {
diff --git a/tests/fixtures/addon/npm/.eslintrc.js b/tests/fixtures/addon/npm/.eslintrc.js
index b956de0fc..4c662f0da 100644
--- a/tests/fixtures/addon/npm/.eslintrc.js
+++ b/tests/fixtures/addon/npm/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',
         'index.js',
         'testem.js',
diff --git a/tests/fixtures/addon/npm/.travis.yml b/tests/fixtures/addon/npm/.travis.yml
index 51ccfd8e5..54ea641be 100644
--- a/tests/fixtures/addon/npm/.travis.yml
+++ b/tests/fixtures/addon/npm/.travis.yml
@@ -42,6 +42,7 @@ before_install:
   - npm --version
 
 script:
+  - npm run lint:hbs
   - npm run lint:js
   # Usually, it's ok to finish the test scenario without reverting
   #  to the addon's original dependency state, skipping "cleanup".
diff --git a/tests/fixtures/addon/npm/README.md b/tests/fixtures/addon/npm/README.md
index c6a2848d1..8f98f163c 100644
--- a/tests/fixtures/addon/npm/README.md
+++ b/tests/fixtures/addon/npm/README.md
@@ -28,6 +28,7 @@ Contributing
 
 ### Linting
 
+* `npm run lint:hbs`
 * `npm run lint:js`
 * `npm run lint:js -- --fix`
 
diff --git a/tests/fixtures/addon/npm/package.json b/tests/fixtures/addon/npm/package.json
index 466e8cfdd..29ada0be3 100644
--- a/tests/fixtures/addon/npm/package.json
+++ b/tests/fixtures/addon/npm/package.json
@@ -14,6 +14,7 @@
   },
   "scripts": {
     "build": "ember build",
+    "lint:hbs": "ember-template-lint .",
     "lint:js": "eslint .",
     "start": "ember serve",
     "test": "ember test",
@@ -34,6 +35,7 @@
     "ember-cli-inject-live-reload": "^1.4.1",
     "ember-cli-qunit": "^4.3.2",
     "ember-cli-sri": "^2.1.0",
+    "ember-cli-template-lint": "^1.0.0-beta.1",
     "ember-cli-uglify": "^2.0.0",
     "ember-disable-prototype-extensions": "^1.1.2",
     "ember-export-application-global": "^2.0.0",
diff --git a/tests/fixtures/addon/yarn/.eslintrc.js b/tests/fixtures/addon/yarn/.eslintrc.js
index b956de0fc..4c662f0da 100644
--- a/tests/fixtures/addon/yarn/.eslintrc.js
+++ b/tests/fixtures/addon/yarn/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',
         'index.js',
         'testem.js',
diff --git a/tests/fixtures/addon/yarn/.travis.yml b/tests/fixtures/addon/yarn/.travis.yml
index 391363e28..025ec8b9b 100644
--- a/tests/fixtures/addon/yarn/.travis.yml
+++ b/tests/fixtures/addon/yarn/.travis.yml
@@ -43,6 +43,7 @@ install:
   - yarn install --no-lockfile --non-interactive
 
 script:
+  - yarn lint:hbs
   - yarn lint:js
   # Usually, it's ok to finish the test scenario without reverting
   #  to the addon's original dependency state, skipping "cleanup".
diff --git a/tests/fixtures/addon/yarn/README.md b/tests/fixtures/addon/yarn/README.md
index 4afaaccd8..efe8f47ad 100644
--- a/tests/fixtures/addon/yarn/README.md
+++ b/tests/fixtures/addon/yarn/README.md
@@ -28,6 +28,7 @@ Contributing
 
 ### Linting
 
+* `yarn lint:hbs`
 * `yarn lint:js`
 * `yarn lint:js --fix`
 
diff --git a/tests/fixtures/addon/yarn/package.json b/tests/fixtures/addon/yarn/package.json
index d15d75702..c66494f1e 100644
--- a/tests/fixtures/addon/yarn/package.json
+++ b/tests/fixtures/addon/yarn/package.json
@@ -14,6 +14,7 @@
   },
   "scripts": {
     "build": "ember build",
+    "lint:hbs": "ember-template-lint .",
     "lint:js": "eslint .",
     "start": "ember serve",
     "test": "ember test",
@@ -34,6 +35,7 @@
     "ember-cli-inject-live-reload": "^1.4.1",
     "ember-cli-qunit": "^4.3.2",
     "ember-cli-sri": "^2.1.0",
+    "ember-cli-template-lint": "^1.0.0-beta.1",
     "ember-cli-uglify": "^2.0.0",
     "ember-disable-prototype-extensions": "^1.1.2",
     "ember-export-application-global": "^2.0.0",
diff --git a/tests/fixtures/app/npm/.eslintrc.js b/tests/fixtures/app/npm/.eslintrc.js
index a522eb93a..04a5094d5 100644
--- a/tests/fixtures/app/npm/.eslintrc.js
+++ b/tests/fixtures/app/npm/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',
         'testem.js',
         'blueprints/*/index.js',
diff --git a/tests/fixtures/app/npm/.travis.yml b/tests/fixtures/app/npm/.travis.yml
index 54dcdb2ab..e63caa77d 100644
--- a/tests/fixtures/app/npm/.travis.yml
+++ b/tests/fixtures/app/npm/.travis.yml
@@ -22,5 +22,6 @@ before_install:
   - npm config set spin false
 
 script:
+  - npm run lint:hbs
   - npm run lint:js
   - npm test
diff --git a/tests/fixtures/app/npm/README.md b/tests/fixtures/app/npm/README.md
index 945ac35b7..c81ac108a 100644
--- a/tests/fixtures/app/npm/README.md
+++ b/tests/fixtures/app/npm/README.md
@@ -35,6 +35,7 @@ Make use of the many generators for code, try `ember help generate` for more det
 
 ### Linting
 
+* `npm run lint:hbs`
 * `npm run lint:js`
 * `npm run lint:js -- --fix`
 
diff --git a/tests/fixtures/app/npm/package.json b/tests/fixtures/app/npm/package.json
index 29d544685..b055ebc56 100644
--- a/tests/fixtures/app/npm/package.json
+++ b/tests/fixtures/app/npm/package.json
@@ -12,6 +12,7 @@
   },
   "scripts": {
     "build": "ember build",
+    "lint:hbs": "ember-template-lint .",
     "lint:js": "eslint .",
     "start": "ember serve",
     "test": "ember test"
@@ -31,6 +32,7 @@
     "ember-cli-inject-live-reload": "^1.4.1",
     "ember-cli-qunit": "^4.3.2",
     "ember-cli-sri": "^2.1.0",
+    "ember-cli-template-lint": "^1.0.0-beta.1",
     "ember-cli-uglify": "^2.0.0",
     "ember-data": "~3.4.0-beta.1",
     "ember-export-application-global": "^2.0.0",
diff --git a/tests/fixtures/app/yarn/.eslintrc.js b/tests/fixtures/app/yarn/.eslintrc.js
index a522eb93a..04a5094d5 100644
--- a/tests/fixtures/app/yarn/.eslintrc.js
+++ b/tests/fixtures/app/yarn/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',
         'testem.js',
         'blueprints/*/index.js',
diff --git a/tests/fixtures/app/yarn/.travis.yml b/tests/fixtures/app/yarn/.travis.yml
index 68a25a16e..025451efb 100644
--- a/tests/fixtures/app/yarn/.travis.yml
+++ b/tests/fixtures/app/yarn/.travis.yml
@@ -25,5 +25,6 @@ install:
   - yarn install --non-interactive
 
 script:
+  - yarn lint:hbs
   - yarn lint:js
   - yarn test
diff --git a/tests/fixtures/app/yarn/README.md b/tests/fixtures/app/yarn/README.md
index 9b51bda11..cce602293 100644
--- a/tests/fixtures/app/yarn/README.md
+++ b/tests/fixtures/app/yarn/README.md
@@ -36,6 +36,7 @@ Make use of the many generators for code, try `ember help generate` for more det
 
 ### Linting
 
+* `yarn lint:hbs`
 * `yarn lint:js`
 * `yarn lint:js --fix`
 
diff --git a/tests/fixtures/app/yarn/package.json b/tests/fixtures/app/yarn/package.json
index ddcbc103e..d649da81a 100644
--- a/tests/fixtures/app/yarn/package.json
+++ b/tests/fixtures/app/yarn/package.json
@@ -12,6 +12,7 @@
   },
   "scripts": {
     "build": "ember build",
+    "lint:hbs": "ember-template-lint .",
     "lint:js": "eslint .",
     "start": "ember serve",
     "test": "ember test"
@@ -31,6 +32,7 @@
     "ember-cli-inject-live-reload": "^1.4.1",
     "ember-cli-qunit": "^4.3.2",
     "ember-cli-sri": "^2.1.0",
+    "ember-cli-template-lint": "^1.0.0-beta.1",
     "ember-cli-uglify": "^2.0.0",
     "ember-data": "~3.4.0-beta.1",
     "ember-export-application-global": "^2.0.0",
diff --git a/tests/fixtures/module-unification-addon/.eslintrc.js b/tests/fixtures/module-unification-addon/.eslintrc.js
index 6a45140b3..777e15269 100644
--- a/tests/fixtures/module-unification-addon/.eslintrc.js
+++ b/tests/fixtures/module-unification-addon/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',
         'index.js',
         'testem.js',
diff --git a/tests/fixtures/module-unification-addon/.template-lintrc.js b/tests/fixtures/module-unification-addon/.template-lintrc.js
new file mode 100644
index 000000000..3f204f3fa
--- /dev/null
+++ b/tests/fixtures/module-unification-addon/.template-lintrc.js
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+  extends: 'recommended'
+}
diff --git a/tests/fixtures/module-unification-addon/README.md b/tests/fixtures/module-unification-addon/README.md
index c6a2848d1..8f98f163c 100644
--- a/tests/fixtures/module-unification-addon/README.md
+++ b/tests/fixtures/module-unification-addon/README.md
@@ -28,6 +28,7 @@ Contributing
 
 ### Linting
 
+* `npm run lint:hbs`
 * `npm run lint:js`
 * `npm run lint:js -- --fix`
 
diff --git a/tests/fixtures/module-unification-addon/package.json b/tests/fixtures/module-unification-addon/package.json
index 945f4e5bb..704945dd9 100644
--- a/tests/fixtures/module-unification-addon/package.json
+++ b/tests/fixtures/module-unification-addon/package.json
@@ -14,6 +14,7 @@
   "repository": "",
   "scripts": {
     "build": "ember build",
+    "lint:hbs": "ember-template-lint .",
     "lint:js": "eslint .",
     "start": "ember serve",
     "test": "ember test",
@@ -34,6 +35,7 @@
     "ember-cli-inject-live-reload": "^1.4.1",
     "ember-cli-qunit": "^4.1.1",
     "ember-cli-sri": "^2.1.0",
+    "ember-cli-template-lint": "^1.0.0-beta.1",
     "ember-cli-uglify": "^2.0.0",
     "ember-disable-prototype-extensions": "^1.1.2",
     "ember-export-application-global": "^2.0.0",
diff --git a/tests/fixtures/module-unification-app/npm/.eslintrc.js b/tests/fixtures/module-unification-app/npm/.eslintrc.js
index b1135dbfc..b518b8463 100644
--- a/tests/fixtures/module-unification-app/npm/.eslintrc.js
+++ b/tests/fixtures/module-unification-app/npm/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',
         'index.js',
         'testem.js',
diff --git a/tests/fixtures/module-unification-app/npm/.travis.yml b/tests/fixtures/module-unification-app/npm/.travis.yml
index 54dcdb2ab..e63caa77d 100644
--- a/tests/fixtures/module-unification-app/npm/.travis.yml
+++ b/tests/fixtures/module-unification-app/npm/.travis.yml
@@ -22,5 +22,6 @@ before_install:
   - npm config set spin false
 
 script:
+  - npm run lint:hbs
   - npm run lint:js
   - npm test
diff --git a/tests/fixtures/module-unification-app/npm/README.md b/tests/fixtures/module-unification-app/npm/README.md
index 945ac35b7..c81ac108a 100644
--- a/tests/fixtures/module-unification-app/npm/README.md
+++ b/tests/fixtures/module-unification-app/npm/README.md
@@ -35,6 +35,7 @@ Make use of the many generators for code, try `ember help generate` for more det
 
 ### Linting
 
+* `npm run lint:hbs`
 * `npm run lint:js`
 * `npm run lint:js -- --fix`
 
diff --git a/tests/fixtures/module-unification-app/npm/package.json b/tests/fixtures/module-unification-app/npm/package.json
index 709f515f2..03ca866aa 100644
--- a/tests/fixtures/module-unification-app/npm/package.json
+++ b/tests/fixtures/module-unification-app/npm/package.json
@@ -12,6 +12,7 @@
   "repository": "",
   "scripts": {
     "build": "ember build",
+    "lint:hbs": "ember-template-lint .",
     "lint:js": "eslint .",
     "start": "ember serve",
     "test": "ember test"
@@ -31,6 +32,7 @@
     "ember-cli-inject-live-reload": "^1.4.1",
     "ember-cli-qunit": "^4.3.2",
     "ember-cli-sri": "^2.1.0",
+    "ember-cli-template-lint": "^1.0.0-beta.1",
     "ember-cli-uglify": "^2.0.0",
     "ember-data": "~3.1.1",
     "ember-export-application-global": "^2.0.0",
diff --git a/tests/fixtures/module-unification-app/yarn/.eslintrc.js b/tests/fixtures/module-unification-app/yarn/.eslintrc.js
index b1135dbfc..b518b8463 100644
--- a/tests/fixtures/module-unification-app/yarn/.eslintrc.js
+++ b/tests/fixtures/module-unification-app/yarn/.eslintrc.js
@@ -20,6 +20,7 @@ module.exports = {
     // node files
     {
       files: [
+        '.template-lintrc.js',
         'ember-cli-build.js',
         'index.js',
         'testem.js',
diff --git a/tests/fixtures/module-unification-app/yarn/.travis.yml b/tests/fixtures/module-unification-app/yarn/.travis.yml
index 68a25a16e..025451efb 100644
--- a/tests/fixtures/module-unification-app/yarn/.travis.yml
+++ b/tests/fixtures/module-unification-app/yarn/.travis.yml
@@ -25,5 +25,6 @@ install:
   - yarn install --non-interactive
 
 script:
+  - yarn lint:hbs
   - yarn lint:js
   - yarn test
diff --git a/tests/fixtures/module-unification-app/yarn/README.md b/tests/fixtures/module-unification-app/yarn/README.md
index 9b51bda11..cce602293 100644
--- a/tests/fixtures/module-unification-app/yarn/README.md
+++ b/tests/fixtures/module-unification-app/yarn/README.md
@@ -36,6 +36,7 @@ Make use of the many generators for code, try `ember help generate` for more det
 
 ### Linting
 
+* `yarn lint:hbs`
 * `yarn lint:js`
 * `yarn lint:js --fix`
 
diff --git a/tests/fixtures/module-unification-app/yarn/package.json b/tests/fixtures/module-unification-app/yarn/package.json
index bb5026a55..87ca39f2a 100644
--- a/tests/fixtures/module-unification-app/yarn/package.json
+++ b/tests/fixtures/module-unification-app/yarn/package.json
@@ -12,6 +12,7 @@
   "repository": "",
   "scripts": {
     "build": "ember build",
+    "lint:hbs": "ember-template-lint .",
     "lint:js": "eslint .",
     "start": "ember serve",
     "test": "ember test"
@@ -31,6 +32,7 @@
     "ember-cli-inject-live-reload": "^1.4.1",
     "ember-cli-qunit": "^4.3.2",
     "ember-cli-sri": "^2.1.0",
+    "ember-cli-template-lint": "^1.0.0-beta.1",
     "ember-cli-uglify": "^2.0.0",
     "ember-data": "~3.1.1",
     "ember-export-application-global": "^2.0.0",