Skip to content

Commit

Permalink
Merge pull request #33 from groupon/jk-more-graceful-verify
Browse files Browse the repository at this point in the history
Skip verify in non-git directories
  • Loading branch information
jkrems authored Dec 12, 2016
2 parents 8d2e6d3 + e8bdf99 commit e9af116
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 0 deletions.
11 changes: 11 additions & 0 deletions lib/commands/verify.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
'use strict';
var fs = require('fs');
var path = require('path');

var Bluebird = require('bluebird');

Expand Down Expand Up @@ -62,6 +64,15 @@ function getPullRequestId() {
}

function verify(cwd, pkg, options) {
try {
fs.readdirSync(path.join(cwd, '.git'));
} catch (err) {
if (err.code === 'ENOENT') {
return Bluebird.resolve();
}
throw err;
}

// Not making this configurable to prevent some possible abuse
options.pr = getPullRequestId();

Expand Down
82 changes: 82 additions & 0 deletions test/commands/verify.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*
* Copyright (c) 2015, Groupon, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of GROUPON nor the names of its contributors may be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
'use strict';
var assert = require('assertive');
var _ = require('lodash');

var run = require('../../lib/run');

var withFixture = require('../fixture');

var CLI_PATH = require.resolve('../../lib/cli');

describe('nlm verify', function () {
describe('in non-git directory', function () {
var dirname = withFixture('non-git');
var output = {};

before(function () {
return run(process.execPath, [CLI_PATH, 'verify'], {
cwd: dirname,
env: _.assign({}, process.env, {
GH_TOKEN: '',
}),
}).then(function (stdout) {
output.stdout = stdout;
});
});

it('ignores directories that are not git repos', function () {
assert.equal('', output.stdout);
});
});

describe('in git directory', function () {
var dirname = withFixture('released');
var output = {};

before(function () {
return run(process.execPath, [CLI_PATH, 'verify'], {
cwd: dirname,
env: _.assign({}, process.env, {
GH_TOKEN: '',
}),
}).then(function (stdout) {
output.stdout = stdout;
});
});

it('reports the change type', function () {
assert.include('Changes are "none"', output.stdout);
});
});
});
13 changes: 13 additions & 0 deletions test/fixtures/non-git
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -e
echo '{
"name": "nlm-test-pkg",
"version": "99.6.2",
"repository": {
"type": "git",
"url": "git+ssh://git@github.example.com/some-org/nlm-test-pkg"
},
"publishConfig": {
"registry": "http://127.0.0.1:3000"
}
}' >package.json
5 changes: 5 additions & 0 deletions test/fixtures/released
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@ bash $(dirname $0)"/multiple-commits"
echo '{
"name": "nlm-test-pkg",
"version": "1.0.0",
"repository": {
"type": "git",
"url": "git+ssh://git@github.example.com/some-org/nlm-test-pkg"
},
"publishConfig": {
"registry": "http://127.0.0.1:3000"
}
}' >package.json
git add package.json
git commit -m 'v1.0.0'
git tag 'v1.0.0'

0 comments on commit e9af116

Please sign in to comment.