chore: remove babel, fix integration tests
This commit removes babel/es6 from all source and test files, because it was introducing a lot of overhead and only little gain. This commit fixes and enables integration tests on Travis. This commit fixes #153 and #151 along the way. _Originally this commit should have only removed babel, but without working tests that's a bit too hairy._ _I only realized that half way into removing babel/es6, so things are all over the place now._ Closes #153, Closes #151
This commit is contained in:
		
							parent
							
								
									88334523e4
								
							
						
					
					
						commit
						5cdc732b68
					
				
							
								
								
									
										7
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,14 +1,9 @@ | |||||||
| # common |  | ||||||
| coverage | coverage | ||||||
| node_modules | node_modules | ||||||
| test/registry/couch | test/registry/couch | ||||||
| test/registry/data | test/registry/data | ||||||
|  | test/tmp | ||||||
| *.log | *.log | ||||||
| *.dump | *.dump | ||||||
| .DS_Store | .DS_Store | ||||||
| .nyc_output | .nyc_output | ||||||
| .test |  | ||||||
| .tmp |  | ||||||
| 
 |  | ||||||
| # build-artifacts |  | ||||||
| dist |  | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								.npmignore
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								.npmignore
									
									
									
									
									
								
							| @ -1,18 +0,0 @@ | |||||||
| # common |  | ||||||
| coverage |  | ||||||
| node_modules |  | ||||||
| test/registry/couch |  | ||||||
| test/registry/data |  | ||||||
| *.log |  | ||||||
| *.dump |  | ||||||
| .DS_Store |  | ||||||
| .nyc_output |  | ||||||
| .test |  | ||||||
| .tmp |  | ||||||
| 
 |  | ||||||
| # source/config |  | ||||||
| src |  | ||||||
| *.yml |  | ||||||
| .gitignore |  | ||||||
| .editorconfig |  | ||||||
| .npmrc |  | ||||||
| @ -6,10 +6,9 @@ cache: | |||||||
| notifications: | notifications: | ||||||
|   email: false |   email: false | ||||||
| node_js: | node_js: | ||||||
| - v5 | - 5 | ||||||
| - v4 | - 4 | ||||||
| - iojs-v2 | - iojs | ||||||
| - iojs-v1 |  | ||||||
| - '0.12' | - '0.12' | ||||||
| - '0.10' | - '0.10' | ||||||
| before_install: | before_install: | ||||||
| @ -19,3 +18,5 @@ before_script: | |||||||
| after_success: | after_success: | ||||||
| - npm run coverage:upload | - npm run coverage:upload | ||||||
| - npm run semantic-release | - npm run semantic-release | ||||||
|  | services: | ||||||
|  | - couchdb | ||||||
|  | |||||||
| @ -257,9 +257,7 @@ It is indeed a great idea because it _forces_ you to follow best practices. If y | |||||||
| 
 | 
 | ||||||
| ### Why should I trust `semantic-release` with my releases? | ### Why should I trust `semantic-release` with my releases? | ||||||
| 
 | 
 | ||||||
| `semantic-release` has a full unit- and integration-test-suite that tests _actual_ `npm` publishes against the [npm-registry-couchapp](https://github.com/npm/npm-registry-couchapp/) on node.js `^0.10`, `^0.12` and io.js `^1`, `^2`. A new version won’t get published if it doesn’t pass on all these engines. | `semantic-release` has a full unit- and integration-test-suite that tests _actual_ `npm` publishes against the [npm-registry-couchapp](https://github.com/npm/npm-registry-couchapp/) on all major node.js versions from `^0.10` on. A new version won’t get published if it doesn’t pass on all these engines. | ||||||
| 
 |  | ||||||
| Note: Currently integration-tests don’t run on Travis CI. If you know stuff about npm/Travis/Couch: Please help! |  | ||||||
| 
 | 
 | ||||||
| ## Badge | ## Badge | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,13 +1,163 @@ | |||||||
| #!/usr/bin/env node
 | #!/usr/bin/env node
 | ||||||
| 
 | 
 | ||||||
| /* istanbul ignore next */ | var fs = require('fs') | ||||||
|  | var path = require('path') | ||||||
|  | var url = require('url') | ||||||
|  | 
 | ||||||
|  | var _ = require('lodash') | ||||||
|  | var log = require('npmlog') | ||||||
|  | var nopt = require('nopt') | ||||||
|  | var npmconf = require('npmconf') | ||||||
|  | var normalizeData = require('normalize-package-data') | ||||||
|  | 
 | ||||||
|  | log.heading = 'semantic-release' | ||||||
|  | var env = process.env | ||||||
|  | var pkg = JSON.parse(fs.readFileSync('./package.json')) | ||||||
|  | normalizeData(pkg) | ||||||
|  | var knownOptions = { | ||||||
|  |   branch: String, | ||||||
|  |   debug: Boolean, | ||||||
|  |   'github-token': String, | ||||||
|  |   'github-url': String, | ||||||
|  |   'analyze-commits': [path, String], | ||||||
|  |   'generate-notes': [path, String], | ||||||
|  |   'verify-conditions': [path, String], | ||||||
|  |   'verify-release': [path, String] | ||||||
|  | } | ||||||
|  | var options = _.defaults( | ||||||
|  |   _.mapKeys(nopt(knownOptions), function (value, key) { | ||||||
|  |     return _.camelCase(key) | ||||||
|  |   }), | ||||||
|  |   pkg.release, | ||||||
|  |   { | ||||||
|  |     branch: 'master', | ||||||
|  |     fallbackTags: { | ||||||
|  |       next: 'latest' | ||||||
|  |     }, | ||||||
|  |     debug: !env.CI, | ||||||
|  |     githubToken: env.GH_TOKEN || env.GITHUB_TOKEN, | ||||||
|  |     githubUrl: env.GH_URL | ||||||
|  |   } | ||||||
|  | ) | ||||||
|  | var plugins = require('../src/lib/plugins')(options) | ||||||
|  | 
 | ||||||
|  | npmconf.load({}, function (err, conf) { | ||||||
|  |   if (err) { | ||||||
|  |     log.error('init', 'Failed to load npm config.', err) | ||||||
|  |     process.exit(1) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   var npm = { | ||||||
|  |     auth: { | ||||||
|  |       token: env.NPM_TOKEN | ||||||
|  |     }, | ||||||
|  |     loglevel: conf.get('loglevel'), | ||||||
|  |     registry: require('../src/lib/get-registry')(pkg, conf), | ||||||
|  |     tag: (pkg.publishConfig || {}).tag || conf.get('tag') || 'latest' | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // normalize trailing slash
 | ||||||
|  |   npm.registry = url.format(url.parse(npm.registry)) | ||||||
|  | 
 | ||||||
|  |   log.level = npm.loglevel | ||||||
|  | 
 | ||||||
|  |   var config = { | ||||||
|  |     env: env, | ||||||
|  |     pkg: pkg, | ||||||
|  |     options: options, | ||||||
|  |     plugins: plugins, | ||||||
|  |     npm: npm | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   var hide = {} | ||||||
|  |   if (options.githubToken) hide.githubToken = '***' | ||||||
|  | 
 | ||||||
|  |   log.verbose('init', 'options:', _.assign({}, options, hide)) | ||||||
|  |   log.verbose('init', 'Verifying config.') | ||||||
|  | 
 | ||||||
|  |   var errors = require('../src/lib/verify')(config) | ||||||
|  |   errors.forEach(function (err) { | ||||||
|  |     log.error('init', err.message + ' ' + err.code) | ||||||
|  |   }) | ||||||
|  |   if (errors.length) process.exit(1) | ||||||
|  | 
 | ||||||
|  |   if (options.argv.remain[0] === 'pre') { | ||||||
|  |     log.verbose('pre', 'Running pre-script.') | ||||||
|  |     log.verbose('pre', 'Veriying conditions.') | ||||||
|  | 
 | ||||||
|  |     plugins.verifyConditions(config, function (err) { | ||||||
|  |       if (err) { | ||||||
|  |         log[options.debug ? 'warn' : 'error']('pre', err.message) | ||||||
|  |         if (!options.debug) process.exit(1) | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       var nerfDart = require('nerf-dart')(npm.registry) | ||||||
|  |       var wroteNpmRc = false | ||||||
|  | 
 | ||||||
|  |       if (env.NPM_OLD_TOKEN && env.NPM_EMAIL) { | ||||||
|  |         // Using the old auth token format is not considered part of the public API
 | ||||||
|  |         // This might go away anytime (i.e. once we have a better testing strategy)
 | ||||||
|  |         conf.set('_auth', '${NPM_OLD_TOKEN}', 'project') | ||||||
|  |         conf.set('email', '${NPM_EMAIL}', 'project') | ||||||
|  |         wroteNpmRc = true | ||||||
|  |       } else if (env.NPM_TOKEN) { | ||||||
|  |         conf.set(nerfDart + ':_authToken', '${NPM_TOKEN}', 'project') | ||||||
|  |         wroteNpmRc = true | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       conf.save('project', function (err) { | ||||||
|  |         if (err) return log.error('pre', 'Failed to save npm config.', err) | ||||||
|  | 
 | ||||||
|  |         if (wroteNpmRc) log.verbose('pre', 'Wrote authToken to .npmrc.') | ||||||
|  | 
 | ||||||
|  |         require('../src/pre')(config, function (err, release) { | ||||||
|  |           if (err) { | ||||||
|  |             log.error('pre', 'Failed to determine new version.') | ||||||
|  | 
 | ||||||
|  |             var args = ['pre', (err.code ? err.code + ' ' : '') + err.message] | ||||||
|  |             if (err.stack) args.push(err.stack) | ||||||
|  |             log.error.apply(log, args) | ||||||
|  |             process.exit(1) | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|  |           var message = 'Determined version ' + release.version + ' as "' + npm.tag + '".' | ||||||
|  | 
 | ||||||
|  |           log.verbose('pre', message) | ||||||
|  | 
 | ||||||
|  |           if (options.debug) { | ||||||
|  |             log.error('pre', message + ' Not publishing in debug mode.', release) | ||||||
|  |             process.exit(1) | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|           try { |           try { | ||||||
|   require('../dist') |             var shrinkwrap = JSON.parse(fs.readFileSync('./npm-shrinkwrap.json')) | ||||||
| } catch (err) { |             shrinkwrap.version = release.version | ||||||
|   if (err.code === 'MODULE_NOT_FOUND') { |             fs.writeFileSync('./npm-shrinkwrap.json', JSON.stringify(shrinkwrap, null, 2)) | ||||||
|     require('babel/register') |             log.verbose('pre', 'Wrote version ' + release.version + 'to npm-shrinkwrap.json.') | ||||||
|     require('../src') |           } catch (e) { | ||||||
|  |             log.silly('pre', 'Couldn\'t find npm-shrinkwrap.json.') | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|  |           fs.writeFileSync('./package.json', JSON.stringify(_.assign(pkg, { | ||||||
|  |             version: release.version | ||||||
|  |           }), null, 2)) | ||||||
|  | 
 | ||||||
|  |           log.verbose('pre', 'Wrote version ' + release.version + ' to package.json.') | ||||||
|  |         }) | ||||||
|  |       }) | ||||||
|  |     }) | ||||||
|  |   } else if (options.argv.remain[0] === 'post') { | ||||||
|  |     log.verbose('post', 'Running post-script.') | ||||||
|  | 
 | ||||||
|  |     require('../src/post')(config, function (err, published, release) { | ||||||
|  |       if (err) { | ||||||
|  |         log.error('post', 'Failed to publish release notes.', err) | ||||||
|  |         process.exit(1) | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       log.verbose('post', (published ? 'Published' : 'Generated') + ' release notes.', release) | ||||||
|  |     }) | ||||||
|   } else { |   } else { | ||||||
|     console.log(err) |     log.error('post', 'Command "' + options.argv.remain[0] + '" not recognized. User either "pre" or "post"') | ||||||
|   } |  | ||||||
|   } |   } | ||||||
|  | }) | ||||||
|  | |||||||
							
								
								
									
										37
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								package.json
									
									
									
									
									
								
							| @ -1,21 +1,14 @@ | |||||||
| { | { | ||||||
|   "name": "semantic-release", |   "name": "semantic-release", | ||||||
|   "description": "automated semver compliant package publishing", |   "description": "automated semver compliant package publishing", | ||||||
|  |   "version": "0.0.0-placeholder", | ||||||
|   "author": "Stephan Bönnemann <stephan@boennemann.me> (http://boennemann.me)", |   "author": "Stephan Bönnemann <stephan@boennemann.me> (http://boennemann.me)", | ||||||
|   "bin": { |   "bin": { | ||||||
|     "semantic-release": "./bin/semantic-release.js" |     "semantic-release": "bin/semantic-release.js" | ||||||
|   }, |   }, | ||||||
|   "bugs": { |   "bugs": { | ||||||
|     "url": "https://github.com/semantic-release/semantic-release/issues" |     "url": "https://github.com/semantic-release/semantic-release/issues" | ||||||
|   }, |   }, | ||||||
|   "config": { |  | ||||||
|     "nyc": { |  | ||||||
|       "exclude": [ |  | ||||||
|         ".test", |  | ||||||
|         "node_modules" |  | ||||||
|       ] |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   "czConfig": { |   "czConfig": { | ||||||
|     "path": "node_modules/cz-conventional-changelog/" |     "path": "node_modules/cz-conventional-changelog/" | ||||||
|   }, |   }, | ||||||
| @ -40,7 +33,6 @@ | |||||||
|     "semver": "^5.0.3" |     "semver": "^5.0.3" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "babel": "^5.8.21", |  | ||||||
|     "coveralls": "^2.11.4", |     "coveralls": "^2.11.4", | ||||||
|     "cz-conventional-changelog": "^1.1.4", |     "cz-conventional-changelog": "^1.1.4", | ||||||
|     "mkdirp": "^0.5.1", |     "mkdirp": "^0.5.1", | ||||||
| @ -49,7 +41,7 @@ | |||||||
|     "npm-registry-couchapp": "^2.6.11", |     "npm-registry-couchapp": "^2.6.11", | ||||||
|     "nyc": "^5.0.0", |     "nyc": "^5.0.0", | ||||||
|     "proxyquire": "^1.7.3", |     "proxyquire": "^1.7.3", | ||||||
|     "rimraf": "^2.4.3", |     "rimraf": "^2.5.0", | ||||||
|     "standard": "^5.3.0", |     "standard": "^5.3.0", | ||||||
|     "tap": "^2.1.1" |     "tap": "^2.1.1" | ||||||
|   }, |   }, | ||||||
| @ -70,7 +62,11 @@ | |||||||
|     "version" |     "version" | ||||||
|   ], |   ], | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "main": "dist/index.js", |   "main": "bin/semantic-release.js", | ||||||
|  |   "files": [ | ||||||
|  |     "bin", | ||||||
|  |     "src" | ||||||
|  |   ], | ||||||
|   "publishConfig": { |   "publishConfig": { | ||||||
|     "tag": "next" |     "tag": "next" | ||||||
|   }, |   }, | ||||||
| @ -82,17 +78,12 @@ | |||||||
|     "url": "git+https://github.com/semantic-release/semantic-release.git" |     "url": "git+https://github.com/semantic-release/semantic-release.git" | ||||||
|   }, |   }, | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "build": "rimraf dist && mkdirp dist && babel src --out-dir dist", |  | ||||||
|     "coverage": "nyc report", |     "coverage": "nyc report", | ||||||
|     "coverage:upload": "npm run coverage -- --reporter=lcovonly && coveralls < coverage/lcov.info", |     "coverage:upload": "npm run coverage -s -- --reporter=text-lcov | coveralls", | ||||||
|     "prepublish": "npm run build", |     "pretest": "standard", | ||||||
|     "pretest:integration": "npm run build && npm run test:build", |     "semantic-release": "./bin/semantic-release.js pre && npm publish && ./bin/semantic-release.js post", | ||||||
|     "pretest:unit": "npm run build && npm run test:build", |     "test": "npm run test:unit && npm run test:integration", | ||||||
|     "semantic-release": "./bin/semantic-release.js pre && npm dedupe && npm publish && ./bin/semantic-release.js post", |     "test:integration": "tap --no-cov test/scenarios/*.js", | ||||||
|     "test": "npm run test:style && npm run test:unit", |     "test:unit": "nyc tap --no-cov test/specs/*.js" | ||||||
|     "test:build": "rimraf .test && mkdirp .test && babel test --out-dir .test", |  | ||||||
|     "test:integration": "tap --no-cov .test/scenarios/*.js", |  | ||||||
|     "test:style": "standard", |  | ||||||
|     "test:unit": "nyc tap --no-cov .test/specs/*.js" |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										150
									
								
								src/index.js
									
									
									
									
									
								
							
							
						
						
									
										150
									
								
								src/index.js
									
									
									
									
									
								
							| @ -1,150 +0,0 @@ | |||||||
| const { readFileSync, writeFileSync } = require('fs') |  | ||||||
| const path = require('path') |  | ||||||
| const url = require('url') |  | ||||||
| 
 |  | ||||||
| const _ = require('lodash') |  | ||||||
| const log = require('npmlog') |  | ||||||
| const nopt = require('nopt') |  | ||||||
| const npmconf = require('npmconf') |  | ||||||
| const normalizeData = require('normalize-package-data') |  | ||||||
| 
 |  | ||||||
| log.heading = 'semantic-release' |  | ||||||
| const env = process.env |  | ||||||
| const pkg = normalizeData(readFileSync('./package.json')) |  | ||||||
| const knownOptions = { |  | ||||||
|   branch: String, |  | ||||||
|   debug: Boolean, |  | ||||||
|   'github-token': String, |  | ||||||
|   'github-url': String, |  | ||||||
|   'analyze-commits': [path, String], |  | ||||||
|   'generate-notes': [path, String], |  | ||||||
|   'verify-conditions': [path, String], |  | ||||||
|   'verify-release': [path, String] |  | ||||||
| } |  | ||||||
| const options = _.defaults( |  | ||||||
|   _.mapKeys(nopt(knownOptions), (value, key) => _.camelCase(key)), |  | ||||||
|   pkg.release, |  | ||||||
|   { |  | ||||||
|     branch: 'master', |  | ||||||
|     fallbackTags: { |  | ||||||
|       next: 'latest' |  | ||||||
|     }, |  | ||||||
|     debug: !env.CI, |  | ||||||
|     githubToken: env.GH_TOKEN || env.GITHUB_TOKEN, |  | ||||||
|     githubUrl: env.GH_URL |  | ||||||
|   } |  | ||||||
| ) |  | ||||||
| const plugins = require('./lib/plugins')(options) |  | ||||||
| 
 |  | ||||||
| npmconf.load({}, (err, conf) => { |  | ||||||
|   if (err) { |  | ||||||
|     log.error('init', 'Failed to load npm config.', err) |  | ||||||
|     process.exit(1) |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   let npm = { |  | ||||||
|     auth: { |  | ||||||
|       token: env.NPM_TOKEN |  | ||||||
|     }, |  | ||||||
|     loglevel: conf.get('loglevel'), |  | ||||||
|     registry: require('./lib/get-registry')(pkg, conf), |  | ||||||
|     tag: (pkg.publishConfig || {}).tag || conf.get('tag') || 'latest' |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   // normalize trailing slash
 |  | ||||||
|   npm.registry = url.format(url.parse(npm.registry)) |  | ||||||
| 
 |  | ||||||
|   log.level = npm.loglevel |  | ||||||
| 
 |  | ||||||
|   const config = {env, pkg, options, plugins, npm} |  | ||||||
| 
 |  | ||||||
|   let hide = {} |  | ||||||
|   if (options.githubToken) hide.githubToken = '***' |  | ||||||
| 
 |  | ||||||
|   log.verbose('init', 'options:', _.assign({}, options, hide)) |  | ||||||
|   log.verbose('init', 'Verifying config.') |  | ||||||
| 
 |  | ||||||
|   const errors = require('./lib/verify')(config) |  | ||||||
|   errors.forEach((err) => log.error('init', `${err.message} ${err.code}`)) |  | ||||||
|   if (errors.length) process.exit(1) |  | ||||||
| 
 |  | ||||||
|   if (options.argv.remain[0] === 'pre') { |  | ||||||
|     log.verbose('pre', 'Running pre-script.') |  | ||||||
|     log.verbose('pre', 'Veriying conditions.') |  | ||||||
| 
 |  | ||||||
|     plugins.verifyConditions(config, (err) => { |  | ||||||
|       if (err) { |  | ||||||
|         log[options.debug ? 'warn' : 'error']('pre', err.message) |  | ||||||
|         if (!options.debug) process.exit(1) |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       const nerfDart = require('nerf-dart')(npm.registry) |  | ||||||
|       let wroteNpmRc = false |  | ||||||
| 
 |  | ||||||
|       if (env.NPM_TOKEN) { |  | ||||||
|         conf.set(`${nerfDart}:_authToken`, '${NPM_TOKEN}', 'project') |  | ||||||
|         wroteNpmRc = true |  | ||||||
|       } else if (env.NPM_OLD_TOKEN && env.NPM_EMAIL) { |  | ||||||
|         // Using the old auth token format is not considered part of the public API
 |  | ||||||
|         // This might go away anytime (i.e. once we have a better testing strategy)
 |  | ||||||
|         conf.set('_auth', '${NPM_OLD_TOKEN}', 'project') |  | ||||||
|         conf.set('email', '${NPM_EMAIL}', 'project') |  | ||||||
|         wroteNpmRc = true |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       conf.save('project', (err) => { |  | ||||||
|         if (err) return log.error('pre', 'Failed to save npm config.', err) |  | ||||||
| 
 |  | ||||||
|         if (wroteNpmRc) log.verbose('pre', 'Wrote authToken to .npmrc.') |  | ||||||
| 
 |  | ||||||
|         require('./pre')(config, (err, release) => { |  | ||||||
|           if (err) { |  | ||||||
|             log.error('pre', 'Failed to determine new version.') |  | ||||||
| 
 |  | ||||||
|             const args = ['pre', (err.code ? `${err.code} ` : '') + err.message] |  | ||||||
|             if (err.stack) args.push(err.stack) |  | ||||||
|             log.error(...args) |  | ||||||
|             process.exit(1) |  | ||||||
|           } |  | ||||||
| 
 |  | ||||||
|           const message = `Determined version ${release.version} as "${npm.tag}".` |  | ||||||
| 
 |  | ||||||
|           log.verbose('pre', message) |  | ||||||
| 
 |  | ||||||
|           if (options.debug) { |  | ||||||
|             log.error('pre', `${message} Not publishing in debug mode.`, release) |  | ||||||
|             process.exit(1) |  | ||||||
|           } |  | ||||||
| 
 |  | ||||||
|           try { |  | ||||||
|             let shrinkwrap = JSON.parse(readFileSync('./npm-shrinkwrap.json')) |  | ||||||
|             shrinkwrap.version = release.version |  | ||||||
|             writeFileSync('./npm-shrinkwrap.json', JSON.stringify(shrinkwrap, null, 2)) |  | ||||||
|             log.verbose('pre', `Wrote version ${release.version} to npm-shrinkwrap.json.`) |  | ||||||
|           } catch (e) { |  | ||||||
|             log.silly('pre', `Couldn't find npm-shrinkwrap.json.`) |  | ||||||
|           } |  | ||||||
| 
 |  | ||||||
|           writeFileSync('./package.json', JSON.stringify(_.assign(pkg, { |  | ||||||
|             version: release.version |  | ||||||
|           }), null, 2)) |  | ||||||
| 
 |  | ||||||
|           log.verbose('pre', `Wrote version ${release.version} to package.json.`) |  | ||||||
|         }) |  | ||||||
|       }) |  | ||||||
|     }) |  | ||||||
|   } else if (options.argv.remain[0] === 'post') { |  | ||||||
|     log.verbose('post', 'Running post-script.') |  | ||||||
| 
 |  | ||||||
|     require('./post')(config, (err, published, release) => { |  | ||||||
|       if (err) { |  | ||||||
|         log.error('post', 'Failed to publish release notes.', err) |  | ||||||
|         process.exit(1) |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       log.verbose('post', `${published ? 'Published' : 'Generated'} release notes.`, release) |  | ||||||
|     }) |  | ||||||
|   } else { |  | ||||||
|     log.error('post', `Command "${options.argv.remain[0]}" not recognized. User either "pre" or "post"`) |  | ||||||
|   } |  | ||||||
| }) |  | ||||||
| @ -1,39 +1,43 @@ | |||||||
| const { exec } = require('child_process') | var exec = require('child_process').exec | ||||||
| 
 | 
 | ||||||
| const log = require('npmlog') | var log = require('npmlog') | ||||||
| 
 | 
 | ||||||
| const SemanticReleaseError = require('@semantic-release/error') | var SemanticReleaseError = require('@semantic-release/error') | ||||||
| 
 | 
 | ||||||
| module.exports = function ({lastRelease, options}, cb) { | module.exports = function (config, cb) { | ||||||
|   const branch = options.branch |   var lastRelease = config.lastRelease | ||||||
|   const from = lastRelease.gitHead |   var options = config.options | ||||||
|   const range = (from ? from + '..' : '') + 'HEAD' |   var branch = options.branch | ||||||
|  |   var from = lastRelease.gitHead | ||||||
|  |   var range = (from ? from + '..' : '') + 'HEAD' | ||||||
| 
 | 
 | ||||||
|   if (!from) return extract() |   if (!from) return extract() | ||||||
| 
 | 
 | ||||||
|   exec(`git branch --contains ${from}`, (err, stdout) => { |   exec('git branch --contains ' + from, function (err, stdout) { | ||||||
|     let inHistory = false |     var inHistory = false | ||||||
|     let branches |     var branches | ||||||
| 
 | 
 | ||||||
|     if (!err && stdout) { |     if (!err && stdout) { | ||||||
|       branches = stdout.split('\n') |       branches = stdout.split('\n') | ||||||
|       .map((result) => { |       .map(function (result) { | ||||||
|         if (branch === result.replace('*', '').trim()) { |         if (branch === result.replace('*', '').trim()) { | ||||||
|           inHistory = true |           inHistory = true | ||||||
|           return null |           return null | ||||||
|         } |         } | ||||||
|         return result.trim() |         return result.trim() | ||||||
|       }) |       }) | ||||||
|       .filter(branch => !!branch) |       .filter(function (branch) { | ||||||
|  |         return !!branch | ||||||
|  |       }) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (!inHistory) { |     if (!inHistory) { | ||||||
|       log.error('commits', |       log.error('commits', | ||||||
| `The commit the last release of this package was derived from is not in the direct history of the "${branch}" branch.
 |         'The commit the last release of this package was derived from is not in the direct history of the "' + branch + '" branch.\n' + | ||||||
| This means semantic-release can not extract the commits between now and then. |         'This means semantic-release can not extract the commits between now and then.\n' + | ||||||
| This is usually caused by force pushing, releasing from an unrelated branch, or using an already existing package name. |         'This is usually caused by force pushing, releasing from an unrelated branch, or using an already existing package name.\n' + | ||||||
| You can recover from this error by publishing manually or restoring the commit "${from}".` + (branches && branches.length
 |         'You can recover from this error by publishing manually or restoring the commit "' + from + '".' + (branches && branches.length | ||||||
|         ? `\nHere is a list of branches that still contain the commit in question: \n * ${branches.join('\n * ')}` |         ? '\nHere is a list of branches that still contain the commit in question: \n * ' + branches.join('\n * ') | ||||||
|         : '' |         : '' | ||||||
|       )) |       )) | ||||||
|       return cb(new SemanticReleaseError('Commit not in history', 'ENOTINHISTORY')) |       return cb(new SemanticReleaseError('Commit not in history', 'ENOTINHISTORY')) | ||||||
| @ -44,16 +48,18 @@ You can recover from this error by publishing manually or restoring the commit " | |||||||
| 
 | 
 | ||||||
|   function extract () { |   function extract () { | ||||||
|     exec( |     exec( | ||||||
|       `git log -E --format=%H==SPLIT==%B==END== ${range}`, |       'git log -E --format=%H==SPLIT==%B==END== ' + range, | ||||||
|       (err, stdout) => { |       function (err, stdout) { | ||||||
|         if (err) return cb(err) |         if (err) return cb(err) | ||||||
| 
 | 
 | ||||||
|         cb(null, String(stdout).split('==END==\n') |         cb(null, String(stdout).split('==END==\n') | ||||||
| 
 | 
 | ||||||
|         .filter((raw) => !!raw.trim()) |         .filter(function (raw) { | ||||||
|  |           return !!raw.trim() | ||||||
|  |         }) | ||||||
| 
 | 
 | ||||||
|         .map((raw) => { |         .map(function (raw) { | ||||||
|           const data = raw.split('==SPLIT==') |           var data = raw.split('==SPLIT==') | ||||||
|           return { |           return { | ||||||
|             hash: data[0], |             hash: data[0], | ||||||
|             message: data[1] |             message: data[1] | ||||||
|  | |||||||
| @ -3,8 +3,8 @@ module.exports = function (pkg, conf) { | |||||||
| 
 | 
 | ||||||
|   if (pkg.name[0] !== '@') return conf.get('registry') || 'https://registry.npmjs.org/' |   if (pkg.name[0] !== '@') return conf.get('registry') || 'https://registry.npmjs.org/' | ||||||
| 
 | 
 | ||||||
|   const scope = pkg.name.split('/')[0] |   var scope = pkg.name.split('/')[0] | ||||||
|   const scopedRegistry = conf.get(`${scope}/registry`) |   var scopedRegistry = conf.get(scope + '/registry') | ||||||
| 
 | 
 | ||||||
|   if (scopedRegistry) return scopedRegistry |   if (scopedRegistry) return scopedRegistry | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,14 +1,14 @@ | |||||||
| const relative = require('require-relative') | var relative = require('require-relative') | ||||||
| const series = require('run-series') | var series = require('run-series') | ||||||
| 
 | 
 | ||||||
| let exports = module.exports = function (options) { | var exports = module.exports = function (options) { | ||||||
|   var plugins = { |   var plugins = { | ||||||
|     analyzeCommits: exports.normalize(options.analyzeCommits, '@semantic-release/commit-analyzer'), |     analyzeCommits: exports.normalize(options.analyzeCommits, '@semantic-release/commit-analyzer'), | ||||||
|     generateNotes: exports.normalize(options.generateNotes, '@semantic-release/release-notes-generator'), |     generateNotes: exports.normalize(options.generateNotes, '@semantic-release/release-notes-generator'), | ||||||
|     getLastRelease: exports.normalize(options.getLastRelease, '@semantic-release/last-release-npm') |     getLastRelease: exports.normalize(options.getLastRelease, '@semantic-release/last-release-npm') | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ;['verifyConditions', 'verifyRelease'].forEach((plugin) => { |   ;['verifyConditions', 'verifyRelease'].forEach(function (plugin) { | ||||||
|     if (!Array.isArray(options[plugin])) { |     if (!Array.isArray(options[plugin])) { | ||||||
|       plugins[plugin] = exports.normalize( |       plugins[plugin] = exports.normalize( | ||||||
|         options[plugin], |         options[plugin], | ||||||
| @ -20,7 +20,7 @@ let exports = module.exports = function (options) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     plugins[plugin] = function (pluginOptions, cb) { |     plugins[plugin] = function (pluginOptions, cb) { | ||||||
|       var tasks = options[plugin].map((step) => { |       var tasks = options[plugin].map(function (step) { | ||||||
|         return exports.normalize(step, './plugin-noop').bind(null, pluginOptions) |         return exports.normalize(step, './plugin-noop').bind(null, pluginOptions) | ||||||
|       }) |       }) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,9 +1,10 @@ | |||||||
| const SemanticReleaseError = require('@semantic-release/error') | var SemanticReleaseError = require('@semantic-release/error') | ||||||
| 
 | 
 | ||||||
| module.exports = function (config, cb) { | module.exports = function (config, cb) { | ||||||
|   const { plugins, lastRelease } = config |   var plugins = config.plugins | ||||||
|  |   var lastRelease = config.lastRelease | ||||||
| 
 | 
 | ||||||
|   plugins.analyzeCommits(config, (err, type) => { |   plugins.analyzeCommits(config, function (err, type) { | ||||||
|     if (err) return cb(err) |     if (err) return cb(err) | ||||||
| 
 | 
 | ||||||
|     if (!type) { |     if (!type) { | ||||||
|  | |||||||
| @ -1,9 +1,12 @@ | |||||||
| const parseSlug = require('parse-github-repo-url') | var parseSlug = require('parse-github-repo-url') | ||||||
| 
 | 
 | ||||||
| const SemanticReleaseError = require('@semantic-release/error') | var SemanticReleaseError = require('@semantic-release/error') | ||||||
| 
 | 
 | ||||||
| module.exports = function ({pkg, options, env}) { | module.exports = function (config) { | ||||||
|   let errors = [] |   var pkg = config.pkg | ||||||
|  |   var options = config.options | ||||||
|  |   var env = config.env | ||||||
|  |   var errors = [] | ||||||
| 
 | 
 | ||||||
|   if (!pkg.name) { |   if (!pkg.name) { | ||||||
|     errors.push(new SemanticReleaseError( |     errors.push(new SemanticReleaseError( | ||||||
|  | |||||||
							
								
								
									
										30
									
								
								src/post.js
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								src/post.js
									
									
									
									
									
								
							| @ -1,32 +1,34 @@ | |||||||
| const url = require('url') | var url = require('url') | ||||||
| 
 | 
 | ||||||
| const gitHead = require('git-head') | var gitHead = require('git-head') | ||||||
| const GitHubApi = require('github') | var GitHubApi = require('github') | ||||||
| const parseSlug = require('parse-github-repo-url') | var parseSlug = require('parse-github-repo-url') | ||||||
| 
 | 
 | ||||||
| module.exports = function (config, cb) { | module.exports = function (config, cb) { | ||||||
|   const { pkg, options, plugins } = config |   var pkg = config.pkg | ||||||
|   const ghConfig = options.githubUrl ? url.parse(options.githubUrl) : {} |   var options = config.options | ||||||
|  |   var plugins = config.plugins | ||||||
|  |   var ghConfig = options.githubUrl ? url.parse(options.githubUrl) : {} | ||||||
| 
 | 
 | ||||||
|   const github = new GitHubApi({ |   var github = new GitHubApi({ | ||||||
|     version: '3.0.0', |     version: '3.0.0', | ||||||
|     port: ghConfig.port, |     port: ghConfig.port, | ||||||
|     protocol: (ghConfig.protocol || '').split(':')[0] || null, |     protocol: (ghConfig.protocol || '').split(':')[0] || null, | ||||||
|     host: ghConfig.hostname |     host: ghConfig.hostname | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   plugins.generateNotes(config, (err, log) => { |   plugins.generateNotes(config, function (err, log) { | ||||||
|     if (err) return cb(err) |     if (err) return cb(err) | ||||||
| 
 | 
 | ||||||
|     gitHead((err, hash) => { |     gitHead(function (err, hash) { | ||||||
|       if (err) return cb(err) |       if (err) return cb(err) | ||||||
| 
 | 
 | ||||||
|       const ghRepo = parseSlug(pkg.repository.url) |       var ghRepo = parseSlug(pkg.repository.url) | ||||||
|       const release = { |       var release = { | ||||||
|         owner: ghRepo[0], |         owner: ghRepo[0], | ||||||
|         repo: ghRepo[1], |         repo: ghRepo[1], | ||||||
|         name: `v${pkg.version}`, |         name: 'v' + pkg.version, | ||||||
|         tag_name: `v${pkg.version}`, |         tag_name: 'v' + pkg.version, | ||||||
|         target_commitish: hash, |         target_commitish: hash, | ||||||
|         draft: !!options.debug, |         draft: !!options.debug, | ||||||
|         body: log |         body: log | ||||||
| @ -41,7 +43,7 @@ module.exports = function (config, cb) { | |||||||
|         token: options.githubToken |         token: options.githubToken | ||||||
|       }) |       }) | ||||||
| 
 | 
 | ||||||
|       github.releases.createRelease(release, (err) => { |       github.releases.createRelease(release, function (err) { | ||||||
|         if (err) return cb(err) |         if (err) return cb(err) | ||||||
| 
 | 
 | ||||||
|         cb(null, true, release) |         cb(null, true, release) | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								src/pre.js
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								src/pre.js
									
									
									
									
									
								
							| @ -1,32 +1,32 @@ | |||||||
| const _ = require('lodash') | var _ = require('lodash') | ||||||
| const auto = require('run-auto') | var auto = require('run-auto') | ||||||
| const semver = require('semver') | var semver = require('semver') | ||||||
| 
 | 
 | ||||||
| const getCommits = require('./lib/commits') | var getCommits = require('./lib/commits') | ||||||
| const getType = require('./lib/type') | var getType = require('./lib/type') | ||||||
| 
 | 
 | ||||||
| module.exports = function (config, cb) { | module.exports = function (config, cb) { | ||||||
|   const { plugins } = config |   var plugins = config.plugins | ||||||
| 
 | 
 | ||||||
|   auto({ |   auto({ | ||||||
|     lastRelease: plugins.getLastRelease.bind(null, config), |     lastRelease: plugins.getLastRelease.bind(null, config), | ||||||
|     commits: ['lastRelease', (cb, results) => { |     commits: ['lastRelease', function (cb, results) { | ||||||
|       getCommits(_.assign({ |       getCommits(_.assign({ | ||||||
|         lastRelease: results.lastRelease |         lastRelease: results.lastRelease | ||||||
|       }, config), |       }, config), | ||||||
|       cb) |       cb) | ||||||
|     }], |     }], | ||||||
|     type: ['commits', 'lastRelease', (cb, results) => { |     type: ['commits', 'lastRelease', function (cb, results) { | ||||||
|       getType(_.assign({ |       getType(_.assign({ | ||||||
|         commits: results.commits, |         commits: results.commits, | ||||||
|         lastRelease: results.lastRelease |         lastRelease: results.lastRelease | ||||||
|       }, config), |       }, config), | ||||||
|       cb) |       cb) | ||||||
|     }] |     }] | ||||||
|   }, (err, results) => { |   }, function (err, results) { | ||||||
|     if (err) return cb(err) |     if (err) return cb(err) | ||||||
| 
 | 
 | ||||||
|     const nextRelease = { |     var nextRelease = { | ||||||
|       type: results.type, |       type: results.type, | ||||||
|       version: results.type === 'initial' |       version: results.type === 'initial' | ||||||
|         ? '1.0.0' |         ? '1.0.0' | ||||||
| @ -36,8 +36,8 @@ module.exports = function (config, cb) { | |||||||
|     plugins.verifyRelease(_.assign({ |     plugins.verifyRelease(_.assign({ | ||||||
|       commits: results.commits, |       commits: results.commits, | ||||||
|       lastRelease: results.lastRelease, |       lastRelease: results.lastRelease, | ||||||
|       nextRelease |       nextRelease: nextRelease | ||||||
|     }, config), (err) => { |     }, config), function (err) { | ||||||
|       if (err) return cb(err) |       if (err) return cb(err) | ||||||
|       cb(null, nextRelease) |       cb(null, nextRelease) | ||||||
|     }) |     }) | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| const nixt = require('nixt') | var nixt = require('nixt') | ||||||
| 
 | 
 | ||||||
| module.exports = function (cwd, uri) { | module.exports = function (cwd, uri) { | ||||||
|   return nixt() |   return nixt() | ||||||
| @ -7,8 +7,6 @@ module.exports = function (cwd, uri) { | |||||||
| 		.env('NPM_EMAIL', 'integration@test.com') | 		.env('NPM_EMAIL', 'integration@test.com') | ||||||
|     .env('GH_TOKEN', 'ghtoken') |     .env('GH_TOKEN', 'ghtoken') | ||||||
|     .env('CI', 'true') |     .env('CI', 'true') | ||||||
|     .env('TRAVIS', 'true') |  | ||||||
|     .env('TRAVIS_BRANCH', 'master') |  | ||||||
|     .env('npm_config_registry', uri) |     .env('npm_config_registry', uri) | ||||||
|     .clone() |     .clone() | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,40 +1,31 @@ | |||||||
| const { exec } = require('child_process') | var exec = require('child_process').exec | ||||||
| const { join } = require('path') | var join = require('path').join | ||||||
| const { writeFileSync } = require('fs') | var writeFileSync = require('fs').writeFileSync | ||||||
| 
 | 
 | ||||||
| const mkdirp = require('mkdirp') | var mkdirp = require('mkdirp') | ||||||
| 
 | 
 | ||||||
| module.exports = function (name, cb) { | module.exports = function (name, registry, cb) { | ||||||
|   const cwd = join(__dirname, '../tmp', name) |   var cwd = join(__dirname, '../tmp', name) | ||||||
| 
 | 
 | ||||||
|   mkdirp.sync(cwd) |   mkdirp.sync(cwd) | ||||||
| 
 | 
 | ||||||
|   writeFileSync(join(cwd, '.npmrc'), ` |  | ||||||
| //localhost:1337/registry/_design/app/_rewrite/:username=integration
 |  | ||||||
| //localhost:1337/registry/_design/app/_rewrite/:email=integration@test.com`, null, 2)
 |  | ||||||
| 
 |  | ||||||
|   writeFileSync(join(cwd, 'package.json'), JSON.stringify({ |   writeFileSync(join(cwd, 'package.json'), JSON.stringify({ | ||||||
|     name, |     name: name, | ||||||
|     repository: { |     repository: { | ||||||
|       url: 'git+https://github.com/semantic-release/test' |       url: 'git+https://github.com/semantic-release/test' | ||||||
|     }, |     }, | ||||||
|     _npmUser: { |     release: { | ||||||
|       name: 'integration', |       verifyConditions: '../../../src/lib/plugin-noop' | ||||||
|       email: 'integration@test.com' |     } | ||||||
|     }, |  | ||||||
|     maintainers: [{ |  | ||||||
|       name: 'integration', |  | ||||||
|       email: 'integration@test.com' |  | ||||||
|     }] |  | ||||||
|   }, null, 2)) |   }, null, 2)) | ||||||
| 
 | 
 | ||||||
|   exec(` |   exec( | ||||||
|     git init && |   'git init && ' + | ||||||
|     git config user.email "integration@test" && |   'git config user.email "integration@test" && ' + | ||||||
|     git config user.name "Integration Test" && |   'git config user.name "Integration Test" && ' + | ||||||
|     git add . && |   'git add . && ' + | ||||||
|     git commit -m "chore: root"` |   'git commit -m "chore: root"' | ||||||
|   , {cwd}, (err, stdout, stderr) => { |   , {cwd: cwd}, function (err, stdout, stderr) { | ||||||
|     if (err) { |     if (err) { | ||||||
|       console.log(stdout, stderr) |       console.log(stdout, stderr) | ||||||
|       return cb(err) |       return cb(err) | ||||||
|  | |||||||
| @ -4,10 +4,10 @@ const rawCommits = [ | |||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
|   exec: (command, cb) => { |   exec: function (command, cb) { | ||||||
|     if (/contains/.test(command)) { |     if (/contains/.test(command)) { | ||||||
|       if (/notinhistory/.test(command)) return cb(new Error()) |       if (/notinhistory/.test(command)) return cb(new Error()) | ||||||
|       return cb(null, `whatever\nmaster\n`) |       return cb(null, 'whatever\nmaster\n') | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     cb( |     cb( | ||||||
|  | |||||||
| @ -1,6 +1,12 @@ | |||||||
| module.exports = () => ({ | module.exports = function () { | ||||||
|   authenticate: () => true, |   return { | ||||||
|  |     authenticate: function () { | ||||||
|  |       return true | ||||||
|  |     }, | ||||||
|     releases: { |     releases: { | ||||||
|     createRelease: (release, cb) => cb(null) |       createRelease: function (release, cb) { | ||||||
|  |         cb(null) | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
| } | } | ||||||
| }) |  | ||||||
|  | |||||||
| @ -1,12 +1,11 @@ | |||||||
| const { exec } = require('child_process') | var exec = require('child_process').exec | ||||||
| const { join } = require('path') |  | ||||||
| 
 | 
 | ||||||
| const opts = { | var opts = { | ||||||
|   cwd: join(__dirname, '../../test/registry') |   cwd: __dirname | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
|   start: exec.bind(null, './start.sh', opts), |   start: exec.bind(null, './start.sh', opts), | ||||||
|   stop: exec.bind(null, './stop.sh', opts), |   stop: exec.bind(null, './stop.sh', opts), | ||||||
|   uri: 'http://localhost:15986/registry/_design/app/_rewrite/' |   uri: 'http://localhost:' + (process.env.TRAVIS === 'true' ? 5984 : 15986) + '/registry/_design/app/_rewrite/' | ||||||
| } | } | ||||||
|  | |||||||
| @ -7,19 +7,23 @@ cd $(dirname $0) | |||||||
| 
 | 
 | ||||||
| mkdir -p couch | mkdir -p couch | ||||||
| 
 | 
 | ||||||
| # start couchdb as a background process, load local config, specify writable logfiles |  | ||||||
| if [[ $TRAVIS = true ]] | if [[ $TRAVIS = true ]] | ||||||
| then | then | ||||||
|   echo 'starting couch with sudo' |   COUCH=http://admin:password@127.0.0.1:5984 | ||||||
|   sudo couchdb -b -a local.ini -p couch/pid -o couch/stdout.log -e couch/stderr.log | 
 | ||||||
|  |   curl -X PUT http://127.0.0.1:5984/_config/admins/admin -d '"password"' | ||||||
|  | 
 | ||||||
|  |   curl -X PUT $COUCH/_config/couchdb/delayed_commits -d '"false"' | ||||||
|  |   curl -X PUT $COUCH/_config/couch_httpd_auth/users_db_public -d '"true"' | ||||||
|  |   curl -X PUT $COUCH/_config/couch_httpd_auth/public_fields -d '"appdotnet, avatar, avatarMedium, avatarLarge, date, email, fields, freenode, fullname, github, homepage, name, roles, twitter, type, _id, _rev"' | ||||||
|  |   curl -X PUT $COUCH/_config/httpd/secure_rewrites -d '"false"' | ||||||
|  | 
 | ||||||
| else | else | ||||||
|   couchdb -b -a local.ini -p couch/pid -o couch/stdout.log -e couch/stderr.log |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| # wait for couch to start |  | ||||||
| sleep 5 |  | ||||||
| 
 |  | ||||||
|   COUCH=http://admin:password@127.0.0.1:15986 |   COUCH=http://admin:password@127.0.0.1:15986 | ||||||
|  |   couchdb -b -a local.ini -p couch/pid -o couch/stdout.log -e couch/stderr.log | ||||||
|  |   # wait for couch to start | ||||||
|  |   sleep 1 | ||||||
|  | fi | ||||||
| 
 | 
 | ||||||
| # create "registry" database | # create "registry" database | ||||||
| curl -X PUT $COUCH/registry | curl -X PUT $COUCH/registry | ||||||
|  | |||||||
| @ -8,5 +8,6 @@ cd $(dirname $0) | |||||||
| 
 | 
 | ||||||
| cat couch/{couch,stdout,stderr}.log | cat couch/{couch,stdout,stderr}.log | ||||||
| 
 | 
 | ||||||
|  | cat couch/pid | xargs kill | ||||||
| rm -rf couch | rm -rf couch | ||||||
| rm -rf data | rm -rf data | ||||||
|  | |||||||
| @ -1,30 +1,27 @@ | |||||||
| const { join } = require('path') | var join = require('path').join | ||||||
| 
 | 
 | ||||||
| const { test, tearDown } = require('tap') | var tap = require('tap') | ||||||
| const rimraf = require('rimraf') | var rimraf = require('rimraf') | ||||||
| 
 | 
 | ||||||
| const registry = require('../registry') | var registry = require('../registry') | ||||||
| const testModule = require('../lib/test-module') | var testModule = require('../lib/test-module') | ||||||
| const baseScenario = require('../lib/base-scenario') | var baseScenario = require('../lib/base-scenario') | ||||||
| 
 | 
 | ||||||
| test('change version', (t) => { | var tearDown = tap.tearDown | ||||||
|  | var test = tap.test | ||||||
|  | 
 | ||||||
|  | test('change version', {bail: process.env.TRAVIS === 'true'}, function (t) { | ||||||
|   t.plan(7) |   t.plan(7) | ||||||
| 
 | 
 | ||||||
|   registry.start((err) => { |   registry.start(function (err, stdout, stderr) { | ||||||
|     t.error(err, 'registry started') |     t.error(err, 'registry started') | ||||||
|     if (err) { |     if (err) return t.end() | ||||||
|       t.end() |  | ||||||
|       t.bailout('registry not started') |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     testModule('change-version', (err, cwd) => { |     testModule('change-version', registry.uri, function (err, cwd) { | ||||||
|       t.error(err, 'test-module created') |       t.error(err, 'test-module created') | ||||||
|       if (err) { |       if (err) return t.end() | ||||||
|         t.end() |  | ||||||
|         t.bailout('test-module not created') |  | ||||||
|       } |  | ||||||
| 
 | 
 | ||||||
|       t.test('no version', (tt) => { |       t.test('no version', function (tt) { | ||||||
|         tt.plan(1) |         tt.plan(1) | ||||||
| 
 | 
 | ||||||
|         baseScenario(cwd, registry.uri) |         baseScenario(cwd, registry.uri) | ||||||
| @ -35,7 +32,7 @@ test('change version', (t) => { | |||||||
|           .end(tt.error) |           .end(tt.error) | ||||||
|       }) |       }) | ||||||
| 
 | 
 | ||||||
|       t.test('initial version', (tt) => { |       t.test('initial version', function (tt) { | ||||||
|         tt.plan(1) |         tt.plan(1) | ||||||
| 
 | 
 | ||||||
|         baseScenario(cwd, registry.uri) |         baseScenario(cwd, registry.uri) | ||||||
| @ -47,7 +44,7 @@ test('change version', (t) => { | |||||||
|           .end(tt.error) |           .end(tt.error) | ||||||
|       }) |       }) | ||||||
| 
 | 
 | ||||||
|       t.test('patch version', (tt) => { |       t.test('patch version', function (tt) { | ||||||
|         tt.plan(1) |         tt.plan(1) | ||||||
| 
 | 
 | ||||||
|         baseScenario(cwd, registry.uri) |         baseScenario(cwd, registry.uri) | ||||||
| @ -59,7 +56,7 @@ test('change version', (t) => { | |||||||
|           .end(tt.error) |           .end(tt.error) | ||||||
|       }) |       }) | ||||||
| 
 | 
 | ||||||
|       t.test('feature version', (tt) => { |       t.test('feature version', function (tt) { | ||||||
|         tt.plan(1) |         tt.plan(1) | ||||||
| 
 | 
 | ||||||
|         baseScenario(cwd, registry.uri) |         baseScenario(cwd, registry.uri) | ||||||
| @ -71,7 +68,7 @@ test('change version', (t) => { | |||||||
|           .end(tt.error) |           .end(tt.error) | ||||||
|       }) |       }) | ||||||
| 
 | 
 | ||||||
|       t.test('breaking version', (tt) => { |       t.test('breaking version', function (tt) { | ||||||
|         tt.plan(1) |         tt.plan(1) | ||||||
| 
 | 
 | ||||||
|         baseScenario(cwd, registry.uri) |         baseScenario(cwd, registry.uri) | ||||||
| @ -86,10 +83,11 @@ test('change version', (t) => { | |||||||
|   }) |   }) | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| tearDown(() => { | tearDown(function () { | ||||||
|  |   if (process.env.TRAVIS === 'true') return | ||||||
|  | 
 | ||||||
|   function cb (err, stdout, stderr) { |   function cb (err, stdout, stderr) { | ||||||
|     if (err) console.log(err) |     if (err) console.log(err) | ||||||
|     if (stdout) console.log(stdout) |  | ||||||
|     if (stderr) console.log(stderr) |     if (stderr) console.log(stderr) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,13 +1,16 @@ | |||||||
| const test = require('tap').test | var test = require('tap').test | ||||||
| const proxyquire = require('proxyquire') | var proxyquire = require('proxyquire') | ||||||
| 
 | 
 | ||||||
| const commits = proxyquire('../../dist/lib/commits', { | var commits = proxyquire('../../src/lib/commits', { | ||||||
|  |   'npmlog': { | ||||||
|  |     error: function () {} | ||||||
|  |   }, | ||||||
|   'child_process': require('../mocks/child-process') |   'child_process': require('../mocks/child-process') | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| test('commits since last release', (t) => { | test('commits since last release', function (t) { | ||||||
|   t.test('get all commits', (tt) => { |   t.test('get all commits', function (tt) { | ||||||
|     commits({lastRelease: {}, options: {branch: 'master'}}, (err, commits) => { |     commits({lastRelease: {}, options: {branch: 'master'}}, function (err, commits) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.is(commits.length, 2, 'all commits') |       tt.is(commits.length, 2, 'all commits') | ||||||
|       tt.is(commits[0].hash, 'hash-one', 'parsed hash') |       tt.is(commits[0].hash, 'hash-one', 'parsed hash') | ||||||
| @ -17,8 +20,8 @@ test('commits since last release', (t) => { | |||||||
|     }) |     }) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('get commits since hash', (tt) => { |   t.test('get commits since hash', function (tt) { | ||||||
|     commits({lastRelease: {gitHead: 'hash'}, options: {branch: 'master'}}, (err, commits) => { |     commits({lastRelease: {gitHead: 'hash'}, options: {branch: 'master'}}, function (err, commits) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.is(commits.length, 1, 'specified commits') |       tt.is(commits.length, 1, 'specified commits') | ||||||
|       tt.is(commits[0].hash, 'hash-one', 'parsed hash') |       tt.is(commits[0].hash, 'hash-one', 'parsed hash') | ||||||
| @ -28,8 +31,8 @@ test('commits since last release', (t) => { | |||||||
|     }) |     }) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('get commits since hash', (tt) => { |   t.test('get commits since hash', function (tt) { | ||||||
|     commits({lastRelease: {gitHead: 'notinhistory'}, options: {branch: 'notmaster'}}, (err, commits) => { |     commits({lastRelease: {gitHead: 'notinhistory'}, options: {branch: 'notmaster'}}, function (err, commits) { | ||||||
|       tt.ok(err) |       tt.ok(err) | ||||||
|       tt.is(err.code, 'ENOTINHISTORY') |       tt.is(err.code, 'ENOTINHISTORY') | ||||||
|       tt.end() |       tt.end() | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| const test = require('tap').test | const test = require('tap').test | ||||||
| 
 | 
 | ||||||
| const getRegistry = require('../../dist/lib/get-registry') | const getRegistry = require('../../src/lib/get-registry') | ||||||
| 
 | 
 | ||||||
| test('get correct registry', (t) => { | test('get correct registry', function (t) { | ||||||
|   t.is(getRegistry({ |   t.is(getRegistry({ | ||||||
|     name: 'publish-config', |     name: 'publish-config', | ||||||
|     publishConfig: { |     publishConfig: { | ||||||
| @ -10,20 +10,34 @@ test('get correct registry', (t) => { | |||||||
|     }}, |     }}, | ||||||
|   {}), 'a') |   {}), 'a') | ||||||
| 
 | 
 | ||||||
|   t.is(getRegistry({name: 'normal'}, {get: () => 'b'}), 'b') |   t.is(getRegistry({name: 'normal'}, { | ||||||
|  |     get: function () { | ||||||
|  |       return 'b' | ||||||
|  |     } | ||||||
|  |   }), 'b') | ||||||
| 
 | 
 | ||||||
|   t.is(getRegistry({name: 'normal'}, {get: () => null}), 'https://registry.npmjs.org/') |   t.is(getRegistry({name: 'normal'}, { | ||||||
|  |     get: function () { | ||||||
|  |       return null | ||||||
|  |     } | ||||||
|  |   }), 'https://registry.npmjs.org/') | ||||||
| 
 | 
 | ||||||
|   t.is(getRegistry({name: '@scoped/foo'}, { |   t.is(getRegistry({name: '@scoped/foo'}, { | ||||||
|     get: (input) => input === '@scoped/registry' ? 'c' : 'd' |     get: function (input) { | ||||||
|  |       return input === '@scoped/registry' ? 'c' : 'd' | ||||||
|  |     } | ||||||
|   }), 'c') |   }), 'c') | ||||||
| 
 | 
 | ||||||
|   t.is(getRegistry({name: '@scoped/bar'}, { |   t.is(getRegistry({name: '@scoped/bar'}, { | ||||||
|     get: () => 'e' |     get: function () { | ||||||
|  |       return 'e' | ||||||
|  |     } | ||||||
|   }), 'e') |   }), 'e') | ||||||
| 
 | 
 | ||||||
|   t.is(getRegistry({name: '@scoped/baz'}, { |   t.is(getRegistry({name: '@scoped/baz'}, { | ||||||
|     get: () => null |     get: function () { | ||||||
|  |       return null | ||||||
|  |     } | ||||||
|   }), 'https://registry.npmjs.org/') |   }), 'https://registry.npmjs.org/') | ||||||
| 
 | 
 | ||||||
|   t.end() |   t.end() | ||||||
|  | |||||||
| @ -1,11 +1,11 @@ | |||||||
| const test = require('tap').test | var test = require('tap').test | ||||||
| 
 | 
 | ||||||
| const plugins = require('../../dist/lib/plugins') | var plugins = require('../../src/lib/plugins') | ||||||
| 
 | 
 | ||||||
| test('export plugins', (t) => { | test('export plugins', function (t) { | ||||||
|   t.plan(5) |   t.plan(5) | ||||||
| 
 | 
 | ||||||
|   const defaultPlugins = plugins({}) |   var defaultPlugins = plugins({}) | ||||||
| 
 | 
 | ||||||
|   t.is(typeof defaultPlugins.analyzeCommits, 'function') |   t.is(typeof defaultPlugins.analyzeCommits, 'function') | ||||||
|   t.is(typeof defaultPlugins.generateNotes, 'function') |   t.is(typeof defaultPlugins.generateNotes, 'function') | ||||||
| @ -14,51 +14,51 @@ test('export plugins', (t) => { | |||||||
|   t.is(typeof defaultPlugins.getLastRelease, 'function') |   t.is(typeof defaultPlugins.getLastRelease, 'function') | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| test('plugin pipelines', (t) => { | test('plugin pipelines', function (t) { | ||||||
|   t.plan(3) |   t.plan(3) | ||||||
| 
 | 
 | ||||||
|   t.test('get all results', (tt) => { |   t.test('get all results', function (tt) { | ||||||
|     const pipelinePlugins = plugins({ |     var pipelinePlugins = plugins({ | ||||||
|       verifyRelease: [ |       verifyRelease: [ | ||||||
|         './dist/lib/plugin-noop', |         './src/lib/plugin-noop', | ||||||
|         './.test/mocks/plugin-result-a', |         './test/mocks/plugin-result-a', | ||||||
|         './.test/mocks/plugin-result-b' |         './test/mocks/plugin-result-b' | ||||||
|       ] |       ] | ||||||
|     }) |     }) | ||||||
| 
 | 
 | ||||||
|     pipelinePlugins.verifyRelease({}, (err, results) => { |     pipelinePlugins.verifyRelease({}, function (err, results) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.same(results, [undefined, 'a', 'b']) |       tt.same(results, [undefined, 'a', 'b']) | ||||||
|       tt.end() |       tt.end() | ||||||
|     }) |     }) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('get first error', (tt) => { |   t.test('get first error', function (tt) { | ||||||
|     const pipelinePlugins = plugins({ |     var pipelinePlugins = plugins({ | ||||||
|       verifyConditions: [ |       verifyConditions: [ | ||||||
|         './dist/lib/plugin-noop', |         './src/lib/plugin-noop', | ||||||
|         './.test/mocks/plugin-error-a', |         './test/mocks/plugin-error-a', | ||||||
|         './.test/mocks/plugin-error-b' |         './test/mocks/plugin-error-b' | ||||||
|       ] |       ] | ||||||
|     }) |     }) | ||||||
| 
 | 
 | ||||||
|     pipelinePlugins.verifyConditions({}, (err) => { |     pipelinePlugins.verifyConditions({}, function (err) { | ||||||
|       tt.is(err.message, 'a') |       tt.is(err.message, 'a') | ||||||
|       tt.end() |       tt.end() | ||||||
|     }) |     }) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('get error and only results before', (tt) => { |   t.test('get error and only results before', function (tt) { | ||||||
|     const pipelinePlugins = plugins({ |     var pipelinePlugins = plugins({ | ||||||
|       verifyRelease: [ |       verifyRelease: [ | ||||||
|         './dist/lib/plugin-noop', |         './src/lib/plugin-noop', | ||||||
|         './.test/mocks/plugin-result-a', |         './test/mocks/plugin-result-a', | ||||||
|         './.test/mocks/plugin-error-b', |         './test/mocks/plugin-error-b', | ||||||
|         './.test/mocks/plugin-result-b' |         './test/mocks/plugin-result-b' | ||||||
|       ] |       ] | ||||||
|     }) |     }) | ||||||
| 
 | 
 | ||||||
|     pipelinePlugins.verifyRelease({}, (err, results) => { |     pipelinePlugins.verifyRelease({}, function (err, results) { | ||||||
|       tt.is(err.message, 'b') |       tt.is(err.message, 'b') | ||||||
|       tt.same(results, [undefined, 'a', undefined]) |       tt.same(results, [undefined, 'a', undefined]) | ||||||
|       tt.end() |       tt.end() | ||||||
| @ -66,18 +66,18 @@ test('plugin pipelines', (t) => { | |||||||
|   }) |   }) | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| test('normalize and load plugin', (t) => { | test('normalize and load plugin', function (t) { | ||||||
|   t.test('load from string', (tt) => { |   t.test('load from string', function (tt) { | ||||||
|     const plugin = plugins.normalize('./dist/lib/plugin-noop') |     var plugin = plugins.normalize('./src/lib/plugin-noop') | ||||||
| 
 | 
 | ||||||
|     tt.is(typeof plugin, 'function') |     tt.is(typeof plugin, 'function') | ||||||
| 
 | 
 | ||||||
|     tt.end() |     tt.end() | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('load from object', (tt) => { |   t.test('load from object', function (tt) { | ||||||
|     const plugin = plugins.normalize({ |     var plugin = plugins.normalize({ | ||||||
|       path: './dist/lib/plugin-noop' |       path: './src/lib/plugin-noop' | ||||||
|     }) |     }) | ||||||
| 
 | 
 | ||||||
|     tt.is(typeof plugin, 'function') |     tt.is(typeof plugin, 'function') | ||||||
| @ -85,8 +85,8 @@ test('normalize and load plugin', (t) => { | |||||||
|     tt.end() |     tt.end() | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('load from object', (tt) => { |   t.test('load from fallback', function (tt) { | ||||||
|     const plugin = plugins.normalize(null, '../../dist/lib/plugin-noop') |     var plugin = plugins.normalize(null, '../../src/lib/plugin-noop') | ||||||
| 
 | 
 | ||||||
|     tt.is(typeof plugin, 'function') |     tt.is(typeof plugin, 'function') | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,20 +1,24 @@ | |||||||
| const { defaults } = require('lodash') | var defaults = require('lodash').defaults | ||||||
| const test = require('tap').test | var test = require('tap').test | ||||||
| const proxyquire = require('proxyquire') | var proxyquire = require('proxyquire') | ||||||
| 
 | 
 | ||||||
| const post = proxyquire('../../dist/post', { | var post = proxyquire('../../src/post', { | ||||||
|   'git-head': require('../mocks/git-head'), |   'git-head': require('../mocks/git-head'), | ||||||
|   github: require('../mocks/github') |   github: require('../mocks/github') | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| const pkg = { | var pkg = { | ||||||
|   version: '1.0.0', |   version: '1.0.0', | ||||||
|   repository: {url: 'http://github.com/whats/up.git'} |   repository: {url: 'http://github.com/whats/up.git'} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const plugins = {generateNotes: (pkg, cb) => cb(null, 'the log')} | var plugins = { | ||||||
|  |   generateNotes: function (pkg, cb) { | ||||||
|  |     cb(null, 'the log') | ||||||
|  |   } | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| const defaultRelease = { | var defaultRelease = { | ||||||
|   owner: 'whats', |   owner: 'whats', | ||||||
|   repo: 'up', |   repo: 'up', | ||||||
|   name: 'v1.0.0', |   name: 'v1.0.0', | ||||||
| @ -23,13 +27,13 @@ const defaultRelease = { | |||||||
|   body: 'the log' |   body: 'the log' | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| test('full post run', (t) => { | test('full post run', function (t) { | ||||||
|   t.test('in debug mode w/o token', (tt) => { |   t.test('in debug mode w/o token', function (tt) { | ||||||
|     post({ |     post({ | ||||||
|       options: {debug: true}, |       options: {debug: true}, | ||||||
|       pkg, |       pkg: pkg, | ||||||
|       plugins |       plugins: plugins | ||||||
|     }, (err, published, release) => { |     }, function (err, published, release) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.is(published, false) |       tt.is(published, false) | ||||||
|       tt.match(release, defaults({draft: true}, defaultRelease)) |       tt.match(release, defaults({draft: true}, defaultRelease)) | ||||||
| @ -38,12 +42,12 @@ test('full post run', (t) => { | |||||||
|     }) |     }) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('in debug mode w/token', (tt) => { |   t.test('in debug mode w/token', function (tt) { | ||||||
|     post({ |     post({ | ||||||
|       options: {debug: true, githubToken: 'yo'}, |       options: {debug: true, githubToken: 'yo'}, | ||||||
|       pkg, |       pkg: pkg, | ||||||
|       plugins |       plugins: plugins | ||||||
|     }, (err, published, release) => { |     }, function (err, published, release) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.is(published, true) |       tt.is(published, true) | ||||||
|       tt.match(release, defaults({draft: true}, defaultRelease)) |       tt.match(release, defaults({draft: true}, defaultRelease)) | ||||||
| @ -52,12 +56,12 @@ test('full post run', (t) => { | |||||||
|     }) |     }) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('production', (tt) => { |   t.test('production', function (tt) { | ||||||
|     post({ |     post({ | ||||||
|       options: {githubToken: 'yo'}, |       options: {githubToken: 'yo'}, | ||||||
|       pkg, |       pkg: pkg, | ||||||
|       plugins |       plugins: plugins | ||||||
|     }, (err, published, release) => { |     }, function (err, published, release) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.is(published, true) |       tt.is(published, true) | ||||||
|       tt.match(release, defaultRelease) |       tt.match(release, defaultRelease) | ||||||
|  | |||||||
| @ -1,55 +1,59 @@ | |||||||
| const test = require('tap').test | var test = require('tap').test | ||||||
| const proxyquire = require('proxyquire') | var proxyquire = require('proxyquire') | ||||||
| 
 | 
 | ||||||
| require('../mocks/registry') | require('../mocks/registry') | ||||||
| const pre = proxyquire('../../dist/pre', { | var pre = proxyquire('../../src/pre', { | ||||||
|   './lib/commits': proxyquire('../../dist/lib/commits', { |   './lib/commits': proxyquire('../../src/lib/commits', { | ||||||
|     'child_process': require('../mocks/child-process') |     'child_process': require('../mocks/child-process') | ||||||
|   }) |   }) | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| const versions = { | var versions = { | ||||||
|   available: '1.0.0' |   available: '1.0.0' | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const plugins = { | var plugins = { | ||||||
|   verifyRelease: (release, cb) => cb(null, release), |   verifyRelease: function (release, cb) { | ||||||
|   analyzeCommits: (commits, cb) => cb(null, 'major'), |     cb(null, release) | ||||||
|   getLastRelease: ({ pkg }, cb) => { |   }, | ||||||
|     cb(null, {version: versions[pkg.name] || null, gitHead: 'HEAD'}) |   analyzeCommits: function (commits, cb) { | ||||||
|  |     cb(null, 'major') | ||||||
|  |   }, | ||||||
|  |   getLastRelease: function (config, cb) { | ||||||
|  |     cb(null, {version: versions[config.pkg.name] || null, gitHead: 'HEAD'}) | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const npm = { | var npm = { | ||||||
|   registry: 'http://registry.npmjs.org/', |   registry: 'http://registry.npmjs.org/', | ||||||
|   tag: 'latest' |   tag: 'latest' | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| test('full pre run', (t) => { | test('full pre run', function (t) { | ||||||
|   t.test('increase version', (tt) => { |   t.test('increase version', function (tt) { | ||||||
|     tt.plan(3) |     tt.plan(3) | ||||||
| 
 | 
 | ||||||
|     pre({ |     pre({ | ||||||
|       options: {branch: 'master'}, |       options: {branch: 'master'}, | ||||||
|       npm, |       npm: npm, | ||||||
|       pkg: {name: 'available'}, |       pkg: {name: 'available'}, | ||||||
|       plugins |       plugins: plugins | ||||||
|     }, (err, release) => { |     }, function (err, release) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.is(release.type, 'major') |       tt.is(release.type, 'major') | ||||||
|       tt.is(release.version, '2.0.0') |       tt.is(release.version, '2.0.0') | ||||||
|     }) |     }) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('increase version', (tt) => { |   t.test('increase version', function (tt) { | ||||||
|     tt.plan(3) |     tt.plan(3) | ||||||
| 
 | 
 | ||||||
|     pre({ |     pre({ | ||||||
|       options: {branch: 'master'}, |       options: {branch: 'master'}, | ||||||
|       npm, |       npm: npm, | ||||||
|       pkg: {name: 'unavailable'}, |       pkg: {name: 'unavailable'}, | ||||||
|       plugins |       plugins: plugins | ||||||
|     }, (err, release) => { |     }, function (err, release) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.is(release.type, 'initial') |       tt.is(release.type, 'initial') | ||||||
|       tt.is(release.version, '1.0.0') |       tt.is(release.version, '1.0.0') | ||||||
|  | |||||||
| @ -1,9 +1,9 @@ | |||||||
| const test = require('tap').test | var test = require('tap').test | ||||||
| 
 | 
 | ||||||
| const type = require('../../dist/lib/type') | var type = require('../../src/lib/type') | ||||||
| 
 | 
 | ||||||
| test('get type from commits', (t) => { | test('get type from commits', function (t) { | ||||||
|   t.test('get type from plugin', (tt) => { |   t.test('get type from plugin', function (tt) { | ||||||
|     tt.plan(2) |     tt.plan(2) | ||||||
| 
 | 
 | ||||||
|     type({ |     type({ | ||||||
| @ -12,33 +12,45 @@ test('get type from commits', (t) => { | |||||||
|         message: 'a' |         message: 'a' | ||||||
|       }], |       }], | ||||||
|       lastRelease: {version: '1.0.0'}, |       lastRelease: {version: '1.0.0'}, | ||||||
|       plugins: {analyzeCommits: (config, cb) => cb(null, 'major')} |       plugins: { | ||||||
|     }, (err, type) => { |         analyzeCommits: function (config, cb) { | ||||||
|  |           cb(null, 'major') | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, function (err, type) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.is(type, 'major') |       tt.is(type, 'major') | ||||||
|     }) |     }) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('error when no changes', (tt) => { |   t.test('error when no changes', function (tt) { | ||||||
|     tt.plan(1) |     tt.plan(1) | ||||||
| 
 | 
 | ||||||
|     type({ |     type({ | ||||||
|       commits: [], |       commits: [], | ||||||
|       lastRelease: {}, |       lastRelease: {}, | ||||||
|       plugins: {analyzeCommits: (config, cb) => cb(null, null)} |       plugins: { | ||||||
|     }, (err) => { |         analyzeCommits: function (config, cb) { | ||||||
|  |           cb(null, null) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, function (err) { | ||||||
|       tt.is(err.code, 'ENOCHANGE') |       tt.is(err.code, 'ENOCHANGE') | ||||||
|     }) |     }) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('initial version', (tt) => { |   t.test('initial version', function (tt) { | ||||||
|     tt.plan(2) |     tt.plan(2) | ||||||
| 
 | 
 | ||||||
|     type({ |     type({ | ||||||
|       commits: [], |       commits: [], | ||||||
|       lastRelease: {}, |       lastRelease: {}, | ||||||
|       plugins: {analyzeCommits: (config, cb) => cb(null, 'major')} |       plugins: { | ||||||
|     }, (err, type) => { |         analyzeCommits: function (config, cb) { | ||||||
|  |           cb(null, 'major') | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, function (err, type) { | ||||||
|       tt.error(err) |       tt.error(err) | ||||||
|       tt.is(type, 'initial') |       tt.is(type, 'initial') | ||||||
|     }) |     }) | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| const test = require('tap').test | var test = require('tap').test | ||||||
| 
 | 
 | ||||||
| const verify = require('../../dist/lib/verify') | var verify = require('../../src/lib/verify') | ||||||
| 
 | 
 | ||||||
| test('verify pkg, options and env', (t) => { | test('verify pkg, options and env', function (t) { | ||||||
|   t.test('dry run verification', (tt) => { |   t.test('dry run verification', function (tt) { | ||||||
|     const noErrors = verify({ |     var noErrors = verify({ | ||||||
|       options: {debug: true}, |       options: {debug: true}, | ||||||
|       pkg: { |       pkg: { | ||||||
|         name: 'package', |         name: 'package', | ||||||
| @ -16,7 +16,7 @@ test('verify pkg, options and env', (t) => { | |||||||
| 
 | 
 | ||||||
|     tt.is(noErrors.length, 0) |     tt.is(noErrors.length, 0) | ||||||
| 
 | 
 | ||||||
|     const errors = verify({ |     var errors = verify({ | ||||||
|       options: {debug: true}, |       options: {debug: true}, | ||||||
|       pkg: {} |       pkg: {} | ||||||
|     }) |     }) | ||||||
| @ -25,7 +25,7 @@ test('verify pkg, options and env', (t) => { | |||||||
|     tt.is(errors[0].code, 'ENOPKGNAME') |     tt.is(errors[0].code, 'ENOPKGNAME') | ||||||
|     tt.is(errors[1].code, 'ENOPKGREPO') |     tt.is(errors[1].code, 'ENOPKGREPO') | ||||||
| 
 | 
 | ||||||
|     const errors2 = verify({ |     var errors2 = verify({ | ||||||
|       options: {debug: true}, |       options: {debug: true}, | ||||||
|       pkg: { |       pkg: { | ||||||
|         name: 'package', |         name: 'package', | ||||||
| @ -41,8 +41,8 @@ test('verify pkg, options and env', (t) => { | |||||||
|     tt.end() |     tt.end() | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   t.test('publish verification', (tt) => { |   t.test('publish verification', function (tt) { | ||||||
|     const noErrors = verify({ |     var noErrors = verify({ | ||||||
|       env: {NPM_TOKEN: 'yo'}, |       env: {NPM_TOKEN: 'yo'}, | ||||||
|       options: {githubToken: 'sup'}, |       options: {githubToken: 'sup'}, | ||||||
|       pkg: { |       pkg: { | ||||||
| @ -55,7 +55,7 @@ test('verify pkg, options and env', (t) => { | |||||||
| 
 | 
 | ||||||
|     tt.is(noErrors.length, 0) |     tt.is(noErrors.length, 0) | ||||||
| 
 | 
 | ||||||
|     const errors = verify({env: {}, options: {}, pkg: {}}) |     var errors = verify({env: {}, options: {}, pkg: {}}) | ||||||
| 
 | 
 | ||||||
|     tt.is(errors.length, 4) |     tt.is(errors.length, 4) | ||||||
|     tt.is(errors[0].code, 'ENOPKGNAME') |     tt.is(errors[0].code, 'ENOPKGNAME') | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user