diff --git a/.travis.yml b/.travis.yml index 20246056..e311525f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,8 @@ cache: - node_modules notifications: email: false +before_install: + - npm i -g npm@^2.0.0 deploy: provider: npm email: stephan@boennemann.me diff --git a/package.json b/package.json index 8cfae7e9..0c577d55 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,15 @@ "semver": "^4.2.0" }, "devDependencies": { + "lodash.defaults": "^3.0.0", + "nano-uid": "^0.2.0", "standard": "^2.3.1", "sinopia": "^1.0.0" }, + "engines": { + "node": "^0.10.0", + "npm": "^2.0.0" + }, "homepage": "https://github.com/boennemann/semantic-release", "keywords": [ "release", diff --git a/tests/lib/create-module.js b/tests/lib/create-module.js new file mode 100644 index 00000000..5b5f32df --- /dev/null +++ b/tests/lib/create-module.js @@ -0,0 +1,45 @@ +'use strict' + +var exec = require('child_process').exec +var join = require('path').join + +var efh = require('error-first-handler') +var defaults = require('lodash.defaults') +var uid = require('nano-uid')() + +module.exports = function (pkg) { + var cb = Array.prototype.pop.call(arguments) + uid.generate(5, efh(cb)(function (id) { + var pkg = defaults((typeof pkg === 'object' ? pkg : {}), { + name: id, + version: '0.0.0', + devDependencies: { + 'semantic-release': 'file:../../../' + }, + scripts: { + prepublish: 'semantic-release pre', + postpublish: 'semantic-release post' + }, + publishConfig: { + registry: 'http://localhost:4873/' + } + }) + + id = pkg.name + var cwd = join(__dirname, '../../.tmp/modules', id) + + exec( + 'mkdir ' + cwd + ' && ' + + 'cd ' + cwd + ' && ' + + 'git init && ' + + 'echo \'' + JSON.stringify(pkg, null, 2) + '\' >> package.json && ' + + 'git add . && ' + + 'git config user.email "integration@test" && ' + + 'git config user.name "Integration Test" && ' + + 'git commit -m "initial" && ' + + 'npm install' + , efh(cb)(function (stdout) { + cb(null, id, cwd) + })) + })) +}