The Git Pre-Commit Hook to Avoid Pushing Only Unit Tests In Node
- 时间:2020-09-20 13:49:13
- 分类:网络文摘
- 阅读:113 次
In NodeJS unit testing frameworks such as mocha/chai, you could add .only after describe or it, so that the specific set of tests are run, which excludes/disables all other tests. For example,
1 2 3 4 5 | describe.only("I just want to run these tests", function() { it("should work", function() { expect(1).to.equal(1); }); }); |
describe.only("I just want to run these tests", function() { it("should work", function() { expect(1).to.equal(1); }); });
Chances are, you might forget to remove the .only before you commit and push. And even worse, the code review may miss this – which in fact will disable all other tests in the Continous Integration process.
So, you can easily add a pre-commit hook check that will give you a nice warning if you try to commit some code that has .only.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # Redirect output to stderr. exec 1>&2 # prevent it.only or describe.only commited if [ "$allowonlytests" != "true" ] && test $(git diff --cached | grep -E "\b(it|describe).only\(" | wc -l) != 0 then cat <<\EOF Error: Attempt to add it.only or describe.only - which may disable all other tests If you know what you are doing you can disable this check using: git config hooks.allowonlytests true EOF exit 1 fi exit 0 |
# Redirect output to stderr. exec 1>&2 # prevent it.only or describe.only commited if [ "$allowonlytests" != "true" ] && test $(git diff --cached | grep -E "\b(it|describe).only\(" | wc -l) != 0 then cat <<\EOF Error: Attempt to add it.only or describe.only - which may disable all other tests If you know what you are doing you can disable this check using: git config hooks.allowonlytests true EOF exit 1 fi exit 0
Save above as filename “pre-commit” (without the quotes) in the folder .git/hooks at your project repository. The script will exit non-zero ONE which indicates a No if there is it.only or describe.only in the diff changes. However, the command/script is smart enough (to use grep with regular expression) that will not trigger the warning if it is followed by // line comment.
You can also disable the warning by using the following:
1 | git config hooks.allowonlytests true |
git config hooks.allowonlytests true

git-pre-commit-hook
Here’s an eslint plugin that has the same effect.
https://www.npmjs.com/package/eslint-plugin-no-only-tests
Here is another post on the pre-push hooks to the master branch: How to Prevent Commiting to master/develop branch by Accidents using Pre-push Hooks in Git?
–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:中秋节的夜晚_关于中秋赏月的小学生作文400字 六一儿童节的记忆作文 中国教师节献给老师的礼物作文800字 关于元旦节的作文600字 家乡的上灯节作文 欢乐的火把节_描写少数民族节日的小学生作文800字 欢欢喜喜闹元宵_关于描写元宵佳节的小学生作文350字 元旦节的作文300字 令人难忘的中秋节作文 古埃及分数
- 评论列表
-
- 添加评论