From: Daniel Ruf Date: Sat, 16 Jun 2018 07:49:44 +0000 (+0200) Subject: Use pull request #11111 from DanielRuf/tests/use-husky for v6.5.0 X-Git-Tag: v6.5.0-rc.1^2~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44c18ec6ad4013c9c70f15c9c45a05a60fade71c;p=thirdparty%2Ffoundation%2Ffoundation-sites.git Use pull request #11111 from DanielRuf/tests/use-husky for v6.5.0 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 Signed-off-by: Nicolas Coden --- diff --git a/package-lock.json b/package-lock.json index 39334e516..0fe68d082 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,6 +57,53 @@ } } }, + "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", @@ -1397,8 +1444,8 @@ "integrity": "sha1-Bek2pggc0pQm4WVSzyN7w0VP7eQ=", "dev": true, "requires": { - "cheerio": "0.17.0", - "MD5": "1.3.0" + "MD5": "1.3.0", + "cheerio": "0.17.0" }, "dependencies": { "cheerio": { @@ -1728,6 +1775,12 @@ "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", @@ -2335,27 +2388,6 @@ "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", @@ -2366,12 +2398,6 @@ "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", @@ -4970,14 +4996,6 @@ } } }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, "string-width": { "version": "1.0.2", "bundled": true, @@ -4988,6 +5006,14 @@ "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, @@ -7188,6 +7214,31 @@ } } }, + "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", @@ -7435,6 +7486,15 @@ "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", @@ -8033,16 +8093,6 @@ "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", @@ -8979,16 +9029,6 @@ "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", @@ -9558,12 +9598,6 @@ "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", @@ -12282,15 +12316,6 @@ } } }, - "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", @@ -12317,6 +12342,15 @@ "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", diff --git a/package.json b/package.json index 46afaeb4c..546f1f1b6 100644 --- a/package.json +++ b/package.json @@ -13,16 +13,18 @@ "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 index 000000000..facf88661 --- /dev/null +++ b/script/husky-precommit.js @@ -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 index 000000000..22ad2a610 --- /dev/null +++ b/script/husky-prepush.js @@ -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