bumped
Version:
Makes easy release software.
169 lines (145 loc) • 5.69 kB
text/coffeescript
'use strict'
path = require 'path'
CSON = require 'season'
should = require 'should'
fs = require 'fs-extra'
Bumped = require '../lib/Bumped'
pkg = require '../package.json'
testPath = (filepath) -> path.resolve __dirname, filepath
bumpedFactory = (folderName) ->
before (done) ->
src = testPath "fixtures/#{folderName}"
dest = testPath "#{folderName}"
fs.copy src, dest, =>
@bumped = new Bumped
cwd: dest
logger:
color: true
done()
after (done) ->
fs.remove testPath(folderName), done
describe 'Bumped ::', ->
bumpedFactory 'sample_directory'
describe 'init ::', ->
it 'initialize a configuration file', (done) ->
@bumped.init ->
config = fs.readFileSync('.bumpedrc', encoding: 'utf8')
config = CSON.parse config
config.files.length.should.be.equal 2
done()
describe 'semver ::', ->
describe 'version ::', ->
it 'sync correctly the version between the files', ->
@bumped.semver.version (version) ->
version.should.be.equal('0.2.0')
describe 'release ::', ->
it 'try to release a new version that is not valid', (done) ->
@bumped.semver.release version:null, (err, version) ->
(err?).should.be.equal true
done()
it 'try to release a new version that is not valid string', (done) ->
@bumped.semver.release version:'1.0', (err, version) ->
(err?).should.be.equal true
done()
it 'try to release a new version that is a valid string but is not greater', (done) ->
@bumped.semver.release version:'0.1.0', (err, version) ->
(err?).should.be.equal true
done()
it 'releases a new version that is a valid based in a number', (done) ->
@bumped.semver.release version:'1.0.0', (err, version) ->
(err?).should.be.equal false
version.should.be.equal('1.0.0')
require('./sample_directory/bower.json').version.should.be.equal('1.0.0')
done()
it 'release a new version that is valid based in a semver keyword', (done) ->
@bumped.semver.release version:'minor', (err, version) ->
(err?).should.be.equal false
version.should.be.equal('1.1.0')
require('./sample_directory/bower.json').version.should.be.equal('1.1.0')
done()
describe 'config ::', ->
describe 'add ::', ->
it 'just add a file', (done) ->
@bumped.config.add
file: 'test.json'
outputMessage: true
, (err, files) ->
files.length.should.be.equal 3
done()
it 'try to add a file that is already added', (done) ->
@bumped.config.add
file: 'test.json'
outputMessage: true
, (err, files) ->
(err?).should.be.equal true
files.length.should.be.equal 3
done()
it 'prevent add a file that doesn\'t exist in the directory', (done) ->
@bumped.config.add
file: 'testing.json'
detect: true
outputMessage: true
, (err, files) ->
(err?).should.be.equal true
files.length.should.be.equal 3
done()
it 'add a file that exist in the directory and then save it', (done) ->
@bumped.config.add
file: 'component.json'
detect: true
outputMessage: true
save: true
, (err, files) ->
(err?).should.be.equal false
files.length.should.be.equal 4
config = fs.readFileSync('.bumpedrc', encoding: 'utf8')
config = CSON.parse config
config.files.length.should.be.equal 4
done()
describe 'remove ::', ->
it 'try to removed a file that doesn\'t exist', (done) ->
@bumped.config.remove
file: 'unicorn.json'
outputMessage: true
save: true
, (err, files) ->
(err?).should.be.equal true
files.length.should.be.equal 4
done()
it 'remove a previous declared file', (done) ->
@bumped.config.remove
file: 'test.json'
outputMessage: true
save: true
, (err, files) ->
(err?).should.be.equal false
files.length.should.be.equal 3
config = fs.readFileSync('.bumpedrc', encoding: 'utf8')
config = CSON.parse config
config.files.length.should.be.equal 3
done()
describe 'set ::', ->
it 'change a property across the files', ->
descriptionValue = 'a new description for the project'
@bumped.config.set
property: 'description'
value: descriptionValue
outputMessage: true
, (err) ->
(err?).should.be.equal false
require('./sample_directory/bower.json').description.should.be.equal descriptionValue
require('./sample_directory/package.json').description.should.be.equal descriptionValue
require('./sample_directory/component.json').description.should.be.equal descriptionValue
describe 'plugins ::', ->
bumpedFactory 'plugin_directory'
it 'exists a plugins section in the basic file scaffold', (done) ->
config = fs.readFileSync(@bumped.config.rc.config, encoding: 'utf8')
config = CSON.parse config
(config.plugins?.prerelease?).should.be.equal true
(config.plugins?.prerelease?).should.be.equal true
done()
it 'release a new version and hook pre releases plugins in order', (done) ->
@bumped.semver.release version: '1.0.0', (err, version) ->
done err if err
# (err?).should.be.equal true
done()