UNPKG

patch-version

Version:

Patch version control tag version to package.json when deploy to npm on CI.

84 lines (74 loc) 2.23 kB
var test = require('ava'); var path = require('path'); var fsp = require('../src/fs-promise'); var patchVersion = require('../src/index'); function storage() { var value = ''; function store(newValue) { value = newValue; } Object.defineProperty(store, 'value', { get: function get() { return value; }, }); return store; } function include(str, substr) { return str.indexOf(substr) !== -1; } test(function testPatchVersion(t) { var dir = path.resolve(__dirname, './fake'); var file = path.resolve(dir, './package.json'); var version = '0.0.2'; var log = storage(); var error = storage(); var exit = storage(); return fsp.readFile(file, 'utf-8') .then(function backup(content) { t.context.content = content; return content; }) .then(function prepareAct(content) { var metadata = JSON.parse(content); t.same(metadata.version, '0.0.1'); t.notSame(metadata.version, version); }) .then(function act() { return patchVersion(dir, version, log, error, exit); }) .then(function prepareAssert() { return fsp.readFile(file, 'utf-8'); }) .then(function assert(content) { var metadata = JSON.parse(content); t.same(metadata.version, version); t.same(metadata.name, 'fake'); t.ok(include(log.value, 'version')); t.ok(include(log.value, version)); t.ok(include(log.value, file)); t.ok(error.value === ''); t.ok(exit.value === 0); }) .then(function restore() { return fsp.writeFile(file, t.context.content); }, function restore() { return fsp.writeFile(file, t.context.content); }); }); test(function testFileNotFound(t) { var version = '0.0.3'; var log = storage(); var error = storage(); var exit = storage(); return patchVersion(__dirname, version, log, error, exit) .then(function assert() { var metadata = require('./fake/package.json'); t.same(metadata.version, '0.0.1'); t.same(metadata.name, 'fake'); t.ok(include(error.value, 'ENOENT')); t.ok(include(error.value, path.resolve(__dirname, './package.json'))); t.ok(log.value === ''); t.ok(exit.value === -1); }); });