Simplify version guard
- Updated index.js test to run in Node.js and browsers - Simplified message and clarified case where two of the same versions would conflict
This commit is contained in:
parent
7e3993578c
commit
1c8ebc0eb5
22
index.js
22
index.js
|
@ -1,20 +1,18 @@
|
|||
'use strict';
|
||||
|
||||
var bitcore = module.exports;
|
||||
|
||||
// module information
|
||||
bitcore.version = 'v' + require('./package.json').version;
|
||||
|
||||
if (global._bitcore !== undefined) {
|
||||
var versions = bitcore.version + ' and ' + global._bitcore;
|
||||
var message = 'More than one instance of bitcore found with different versions: ' + versions;
|
||||
if (typeof window === 'undefined') {
|
||||
message += '. Make sure there are no version conflicts between package.json files of your ' +
|
||||
'dependencies. This could also happen when a package depends on a git repository.';
|
||||
} else {
|
||||
message += '. Make sure any scripts included don\'t contain their own bitcore bundle.';
|
||||
bitcore.versionGuard = function(version) {
|
||||
if (version !== undefined) {
|
||||
var message = 'More than one instance of bitcore found with versions: ' + bitcore.version +
|
||||
' and ' + version + '. Please make sure to require bitcore and check that submodules do' +
|
||||
' not also include their own bitcore dependency.';
|
||||
throw new Error(message);
|
||||
}
|
||||
|
||||
throw new Error(message);
|
||||
}
|
||||
};
|
||||
bitcore.versionGuard(global._bitcore);
|
||||
global._bitcore = bitcore.version;
|
||||
|
||||
// crypto
|
||||
|
|
|
@ -1,39 +1,16 @@
|
|||
'use strict';
|
||||
|
||||
var expect = require('chai').expect;
|
||||
var should = require('chai').should();
|
||||
var bitcore = require('../');
|
||||
|
||||
// current tests works only in node.js
|
||||
var bdescribe = typeof window === 'undefined' ? describe : xdescribe
|
||||
bdescribe('index.js', function() {
|
||||
var bitcoreModulePath;
|
||||
var bitcoreModule;
|
||||
|
||||
before(function() {
|
||||
bitcoreModulePath = require.resolve('../');
|
||||
bitcoreModule = require.cache[bitcoreModulePath];
|
||||
delete require.cache[bitcoreModulePath];
|
||||
});
|
||||
|
||||
after(function() {
|
||||
require.cache[bitcoreModulePath] = bitcoreModule;
|
||||
});
|
||||
|
||||
function importBitcore() {
|
||||
require('../');
|
||||
}
|
||||
|
||||
describe('#versionGuard', function() {
|
||||
it('global._bitcore should be defined', function() {
|
||||
expect(global._bitcore).to.equal(bitcore.version);
|
||||
should.equal(global._bitcore, bitcore.version);
|
||||
});
|
||||
|
||||
it('throw error on importing other bitcore module', function() {
|
||||
expect(importBitcore).to.throw(Error);
|
||||
});
|
||||
|
||||
it('throw error on importing with defined window', function () {
|
||||
global.window = 'window hack';
|
||||
expect(importBitcore).to.throw(Error);
|
||||
delete global.window;
|
||||
it('throw an error if version is already defined', function() {
|
||||
(function() {
|
||||
bitcore.versionGuard('version');
|
||||
}).should.throw('More than one instance of bitcore');
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue