var should = require('should'); var fs = require('fs'); var path = require('path'); var detectLocalGit = require('../lib/detectLocalGit'); var ORIGINAL_CWD = process.cwd(); var TEST_DIR = path.resolve(__dirname); var TEMP_GIT_DIR = path.join(TEST_DIR, '.git'); describe("detectLocalGit", function() { before(function() { _makeTempGitDir(); process.chdir(TEST_DIR); }); after(function() { _cleanTempGitDir(); process.chdir(ORIGINAL_CWD); }); it('should get commit hash from packed-refs when refs/heads/master does not exist', function() { var results = detectLocalGit(); should.exist(results); (results).should.deepEqual({ git_commit: '0000000000000000ffffffffffffffffffffffff', git_branch: 'master' }); }); }); function _makeTempGitDir() { _cleanTempGitDir(); var dir = TEMP_GIT_DIR; fs.mkdirSync(dir); var HEAD = path.join(dir, 'HEAD'); var packedRefs = path.join(dir, 'packed-refs'); fs.writeFileSync(HEAD, 'ref: refs/heads/master'); fs.writeFileSync(packedRefs, "" + "# pack-refs with: peeled fully-peeled\n" + "0000000000000000000000000000000000000000 refs/heads/other/ref\n" + "0000000000000000ffffffffffffffffffffffff refs/heads/master\n" + "ffffffffffffffffffffffffffffffffffffffff refs/remotes/origin/other\n"); } function _cleanTempGitDir() { _deleteFolderRecursive(TEMP_GIT_DIR); } function _deleteFolderRecursive(dir) { if (!dir.match('node-coveralls/test')) { throw new Error('Tried to clean a temp git directory that did not match path: node-coveralls/test'); } if(fs.existsSync(dir)) { fs.readdirSync(dir).forEach(function(file,index){ var curPath = path.join(dir, file); if(fs.lstatSync(curPath).isDirectory()) { // recurse _deleteFolderRecursive(curPath); } else { // delete file fs.unlinkSync(curPath); } }); fs.rmdirSync(dir); } }