diff --git a/package.json b/package.json index 8d833ba..ba54c9c 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,8 @@ "istanbul": "0.4.5", "jscs": "2.11.0", "jshint": "2.9.5", - "mocha": "5.1.1" + "mocha": "5.1.1", + "tmp": "0.0.33" }, "license": "MIT" } diff --git a/tests/install.test.js b/tests/install.test.js index b044082..08c0f4e 100644 --- a/tests/install.test.js +++ b/tests/install.test.js @@ -1,15 +1,20 @@ require('chai').should(); +var execSync = require('child_process').execSync; var gitHooks = require('../lib/git-hooks'); var fsHelpers = require('../lib/fs-helpers'); +var tmp = require('tmp'); -var SANDBOX_PATH = __dirname + '/tmp-sandbox/'; +var tmpDir = tmp.dirSync(); + +var SANDBOX_PATH = tmpDir.name + '/git-hooks-sandbox/'; var GIT_ROOT = SANDBOX_PATH + '.git/'; var GIT_HOOKS = GIT_ROOT + 'hooks'; var GIT_HOOKS_OLD = GIT_ROOT + 'hooks.old'; describe('--install', function () { beforeEach(function () { - fsHelpers.makeDir(GIT_ROOT); + fsHelpers.makeDir(SANDBOX_PATH); + execSync('git init', {cwd: SANDBOX_PATH}); }); afterEach(function () { @@ -21,6 +26,17 @@ describe('--install', function () { fsHelpers.exists(GIT_HOOKS).should.be.true; }); + describe('when git repo is missing its hooks folder', function () { + beforeEach(function () { + fsHelpers.removeDir(GIT_ROOT + '/hooks'); + }); + + it('should install hooks', function () { + gitHooks.install(SANDBOX_PATH); + fsHelpers.exists(GIT_HOOKS).should.be.true; + }); + }); + describe('when it is run not inside a git repo', function () { beforeEach(function () { fsHelpers.removeDir(GIT_ROOT); @@ -35,10 +51,6 @@ describe('--install', function () { }); describe('when some hooks already exist', function () { - beforeEach(function () { - fsHelpers.makeDir(GIT_HOOKS); - }); - it('should backup hooks before installation', function () { gitHooks.install(SANDBOX_PATH); fsHelpers.exists(GIT_HOOKS_OLD).should.be.true; diff --git a/tests/run.test.js b/tests/run.test.js index 972f54c..0d6c9da 100644 --- a/tests/run.test.js +++ b/tests/run.test.js @@ -1,9 +1,13 @@ require('chai').should(); +var execSync = require('child_process').execSync; var fs = require('fs'); var gitHooks = require('../lib/git-hooks'); var fsHelpers = require('../lib/fs-helpers'); +var tmp = require('tmp'); -var SANDBOX_PATH = __dirname + '/tmp-sandbox/'; +var tmpDir = tmp.dirSync(); + +var SANDBOX_PATH = tmpDir.name + '/git-hooks-sandbox/'; var GIT_ROOT = SANDBOX_PATH + '.git/'; var GIT_HOOKS = GIT_ROOT + 'hooks'; var PRECOMMIT_HOOK_PATH = GIT_HOOKS + '/pre-commit'; @@ -16,8 +20,8 @@ function createHook(path, content) { describe('git-hook runner', function () { beforeEach(function () { - fsHelpers.makeDir(GIT_ROOT); - gitHooks.install(SANDBOX_PATH); + fsHelpers.makeDir(SANDBOX_PATH); + execSync('git init', {cwd: SANDBOX_PATH}); }); afterEach(function () { diff --git a/tests/uninstall.test.js b/tests/uninstall.test.js index 5856ba7..78d0359 100644 --- a/tests/uninstall.test.js +++ b/tests/uninstall.test.js @@ -2,8 +2,11 @@ require('chai').should(); var execSync = require('child_process').execSync; var gitHooks = require('../lib/git-hooks'); var fsHelpers = require('../lib/fs-helpers'); +var tmp = require('tmp'); -var SANDBOX_PATH = '/tmp/tmp-sandbox/'; +var tmpDir = tmp.dirSync(); + +var SANDBOX_PATH = tmpDir.name + '/git-hooks-sandbox/'; var GIT_ROOT = SANDBOX_PATH + '.git/'; var GIT_HOOKS = GIT_ROOT + 'hooks'; var GIT_HOOKS_OLD = GIT_ROOT + 'hooks.old'; @@ -34,7 +37,7 @@ describe('--uninstall', function () { it('should throw an error', function () { var fn = function () { - gitHooks.install(SANDBOX_PATH); + gitHooks.uninstall(SANDBOX_PATH); }; fn.should.throw(Error); });