]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
Use pull request #11111 from DanielRuf/tests/use-husky for v6.5.0
authorDaniel Ruf <daniel@daniel-ruf.de>
Sat, 16 Jun 2018 07:49:44 +0000 (09:49 +0200)
committerNicolas Coden <nicolas@ncoden.fr>
Sat, 16 Jun 2018 20:58:48 +0000 (22:58 +0200)
d9d307ed7 tests: use husky to run tests before commits and pushes
eaeebbf83 chore: add message for about Husky at precommit & prepush
c353e2685 chore: use Node.js for precommit and prepush output
38f97aa69 chore: change prepush script to use the new script
adfbb8ff0 chore: update package-lock.json
e6e86140d fix: fix wrong script for husky prepush hook
6fcaa0c0a fix: force color mode of mocha, remove code test output in husky scripts
073d0f271 fix: force color mode for gulp and husky scripts

Co-Authored-By: Nicolas Coden <nicolas@ncoden.fr>
Signed-off-by: Nicolas Coden <nicolas@ncoden.fr>
package-lock.json
package.json
script/husky-precommit.js [new file with mode: 0644]
script/husky-prepush.js [new file with mode: 0644]

index 39334e5168ed89dfa36f999f551c71ba10abdc40..0fe68d082ba479ddf8eb7773d72cc6ad35414414 100644 (file)
         }
       }
     },
+    "CSSselect": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/CSSselect/-/CSSselect-0.4.1.tgz",
+      "integrity": "sha1-+Kt+H4QYzmPNput713ioXX7EkrI=",
+      "dev": true,
+      "requires": {
+        "CSSwhat": "0.4.7",
+        "domutils": "1.4.3"
+      },
+      "dependencies": {
+        "domutils": {
+          "version": "1.4.3",
+          "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz",
+          "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=",
+          "dev": true,
+          "requires": {
+            "domelementtype": "1.3.0"
+          }
+        }
+      }
+    },
+    "CSSwhat": {
+      "version": "0.4.7",
+      "resolved": "https://registry.npmjs.org/CSSwhat/-/CSSwhat-0.4.7.tgz",
+      "integrity": "sha1-hn2g/zn3eGEyQsRM/qg/CqTr35s=",
+      "dev": true
+    },
+    "JSONStream": {
+      "version": "0.8.4",
+      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz",
+      "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=",
+      "dev": true,
+      "requires": {
+        "jsonparse": "0.0.5",
+        "through": "2.3.8"
+      }
+    },
+    "MD5": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/MD5/-/MD5-1.3.0.tgz",
+      "integrity": "sha1-PMJm8Oiau2tDpQ85pFnfW/3gskA=",
+      "dev": true,
+      "requires": {
+        "charenc": "0.0.2",
+        "crypt": "0.0.2"
+      }
+    },
     "abab": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
       "integrity": "sha1-Bek2pggc0pQm4WVSzyN7w0VP7eQ=",
       "dev": true,
       "requires": {
-        "cheerio": "0.17.0",
-        "MD5": "1.3.0"
+        "MD5": "1.3.0",
+        "cheerio": "0.17.0"
       },
       "dependencies": {
         "cheerio": {
       "integrity": "sha1-k6fBnyh5YChcw/3rsgW46hoPBPk=",
       "dev": true
     },
+    "ci-info": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz",
+      "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==",
+      "dev": true
+    },
     "cipher-base": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
       "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
       "dev": true
     },
-    "CSSselect": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/CSSselect/-/CSSselect-0.4.1.tgz",
-      "integrity": "sha1-+Kt+H4QYzmPNput713ioXX7EkrI=",
-      "dev": true,
-      "requires": {
-        "CSSwhat": "0.4.7",
-        "domutils": "1.4.3"
-      },
-      "dependencies": {
-        "domutils": {
-          "version": "1.4.3",
-          "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz",
-          "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=",
-          "dev": true,
-          "requires": {
-            "domelementtype": "1.3.0"
-          }
-        }
-      }
-    },
     "cssstyle": {
       "version": "0.2.37",
       "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
         "cssom": "0.3.2"
       }
     },
-    "CSSwhat": {
-      "version": "0.4.7",
-      "resolved": "https://registry.npmjs.org/CSSwhat/-/CSSwhat-0.4.7.tgz",
-      "integrity": "sha1-hn2g/zn3eGEyQsRM/qg/CqTr35s=",
-      "dev": true
-    },
     "currently-unhandled": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
             }
           }
         },
-        "string_decoder": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.0.1"
-          }
-        },
         "string-width": {
           "version": "1.0.2",
           "bundled": true,
             "strip-ansi": "3.0.1"
           }
         },
+        "string_decoder": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "safe-buffer": "5.0.1"
+          }
+        },
         "stringstream": {
           "version": "0.0.5",
           "bundled": true,
         }
       }
     },
+    "husky": {
+      "version": "0.14.3",
+      "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz",
+      "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==",
+      "dev": true,
+      "requires": {
+        "is-ci": "1.1.0",
+        "normalize-path": "1.0.0",
+        "strip-indent": "2.0.0"
+      },
+      "dependencies": {
+        "normalize-path": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz",
+          "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=",
+          "dev": true
+        },
+        "strip-indent": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+          "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+          "dev": true
+        }
+      }
+    },
     "iconv-lite": {
       "version": "0.4.19",
       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
         "builtin-modules": "1.1.1"
       }
     },
+    "is-ci": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz",
+      "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==",
+      "dev": true,
+      "requires": {
+        "ci-info": "1.1.3"
+      }
+    },
     "is-directory": {
       "version": "0.3.1",
       "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
       "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
       "dev": true
     },
-    "JSONStream": {
-      "version": "0.8.4",
-      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz",
-      "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=",
-      "dev": true,
-      "requires": {
-        "jsonparse": "0.0.5",
-        "through": "2.3.8"
-      }
-    },
     "jsprim": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
       "integrity": "sha512-diLiAxHidES67uJ1P5unXBUB4CyOFwodKrctuK0U4Ogw865N9Aw4dLmY0BK0tGKOy3xvkdMGgUXPD6W9z1Ne0Q==",
       "dev": true
     },
-    "MD5": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/MD5/-/MD5-1.3.0.tgz",
-      "integrity": "sha1-PMJm8Oiau2tDpQ85pFnfW/3gskA=",
-      "dev": true,
-      "requires": {
-        "charenc": "0.0.2",
-        "crypt": "0.0.2"
-      }
-    },
     "md5-hex": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz",
       "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
       "dev": true
     },
-    "normalize-scss": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-scss/-/normalize-scss-6.0.0.tgz",
-      "integrity": "sha1-XpT8keO7J5kzroqqURrQkSoMtE0=",
-      "dev": true
-    },
     "npm-run-path": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
         }
       }
     },
-    "string_decoder": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
-      "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "5.1.1"
-      }
-    },
     "string-similarity": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.0.tgz",
         "strip-ansi": "3.0.1"
       }
     },
+    "string_decoder": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+      "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "5.1.1"
+      }
+    },
     "stringstream": {
       "version": "0.0.5",
       "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
index 46afaeb4c7774d7af4501f70bf36f908a6b91d36..546f1f1b64a67231bf16de6f10bd8d915781c62e 100644 (file)
     "start": "gulp",
     "test": "npm run test:sass && npm run test:javascript:units",
     "test:ci": "npm run test:sass && npm run test:javascript:ci",
-    "test:sass": "mocha test/sass/test_sass.js",
-    "test:javascript:transpile": "gulp sass:foundation && gulp test:transpile-js",
+    "test:sass": "mocha test/sass/test_sass.js --colors",
+    "test:javascript:transpile": "gulp sass:foundation --color && gulp test:transpile-js --color",
     "test:javascript:units": "npm run test:javascript:transpile && mocha-headless-chrome -a ignore-resource-errors -f test/javascript/index.html",
     "test:javascript:browserstack": "npm run test:javascript:transpile && browserstack-runner",
     "test:javascript:ci": "npm run test:javascript:transpile && mocha-headless-chrome -a ignore-resource-errors -f test/javascript/index.html && browserstack-runner",
-    "test:visual": "gulp test",
-    "deploy": "gulp deploy",
-    "deploy:prep": "gulp deploy:prep",
-    "deploy:docs": "gulp deploy:docs",
-    "deploy:beta": "gulp deploy:beta"
+    "test:visual": "gulp test --color",
+    "deploy": "gulp deploy --color",
+    "deploy:prep": "gulp deploy:prep --color",
+    "deploy:docs": "gulp deploy:docs --color",
+    "deploy:beta": "gulp deploy:beta --color",
+    "precommit": "node ./script/husky-precommit.js  --color",
+    "prepush": "node ./script/husky-prepush.js  --color"
   },
   "dependencies": {
     "jquery": ">=3.0.0",
@@ -76,6 +78,7 @@
     "gulp-sourcemaps": "^2.6.0",
     "gulp-uglify": "^2.1.2",
     "gulp-zip": "^3.2.0",
+    "husky": "^0.14.3",
     "inquirer": "^2.0.0",
     "is-empty-object": "^1.1.1",
     "js-yaml": "^3.8.4",
diff --git a/script/husky-precommit.js b/script/husky-precommit.js
new file mode 100644 (file)
index 0000000..facf886
--- /dev/null
@@ -0,0 +1,22 @@
+const chalk = require('chalk')
+const spawn = require('child_process').spawn
+
+console.log(chalk.yellow('🐶  Checking tests before committing with Husky...'))
+
+const child = spawn('npm run test', [], { shell: true })
+
+child.stdout.on('data', function (data) {
+  process.stdout.write(data)
+})
+
+child.on('exit', function (code) {
+  if(code === 0){
+    console.log(chalk.yellow('🐶  ✓ Tests run well, we can commit...'))
+  } else {
+    console.log(chalk.yellow('🐶  ✗ Tests are failing, please fix them before committing.'))
+  }
+})
+
+child.on('error', function (err) {
+  console.log(chalk.red(err))
+})
\ No newline at end of file
diff --git a/script/husky-prepush.js b/script/husky-prepush.js
new file mode 100644 (file)
index 0000000..22ad2a6
--- /dev/null
@@ -0,0 +1,22 @@
+const chalk = require('chalk')
+const spawn = require('child_process').spawn
+
+console.log(chalk.yellow('🐶  Checking tests before pushing with Husky...'))
+
+const child = spawn('npm run test', [], { shell: true })
+
+child.stdout.on('data', function (data) {
+  process.stdout.write(data)
+})
+
+child.on('exit', function (code) {
+  if(code === 0){
+    console.log(chalk.yellow('🐶  ✓ Tests run well, we can push...'))
+  } else {
+    console.log(chalk.yellow('🐶  ✗ Tests are failing, please fix them before pushing.'))
+  }
+})
+
+child.on('error', function (err) {
+  console.log(chalk.red(err))
+})
\ No newline at end of file