mirror of
https://github.com/Unitech/pm2.git
synced 2025-12-08 20:35:53 +00:00
226 lines
6.3 KiB
JavaScript
226 lines
6.3 KiB
JavaScript
|
|
const PM2 = require('../..');
|
|
const should = require('should');
|
|
const exec = require('child_process').exec
|
|
const path = require('path')
|
|
const fs = require('fs')
|
|
|
|
describe('Modules programmatic testing', function() {
|
|
var pm2;
|
|
|
|
var MODULE_FOLDER_MONO = path.join(__dirname, './fixtures/tar-module/mono-app-module')
|
|
var MODULE_FOLDER_MULTI = path.join(__dirname, './fixtures/tar-module/multi-app-module')
|
|
|
|
var PACKAGE_MONO = path.join(process.cwd(), 'mono-app-module-v0-23-0.tar.gz')
|
|
var PACKAGE_MULTI = path.join(process.cwd(), 'multi-app-module-v0-1.tar.gz')
|
|
|
|
after(function(done) {
|
|
pm2.kill(done);
|
|
});
|
|
|
|
before(function(done) {
|
|
pm2 = new PM2.custom({
|
|
cwd : './fixtures'
|
|
});
|
|
|
|
pm2.uninstall('all', () => done())
|
|
})
|
|
|
|
describe('Package', function() {
|
|
before((done) => {
|
|
fs.unlink(PACKAGE_MONO, () => {
|
|
fs.unlink(PACKAGE_MULTI, () => {
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
it('should package tarball for mono app', function(done) {
|
|
pm2.package(MODULE_FOLDER_MONO, (err) => {
|
|
should(err).be.null()
|
|
should(fs.existsSync(PACKAGE_MONO)).eql(true)
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('should package tarball for multi app', function(done) {
|
|
pm2.package(MODULE_FOLDER_MULTI, (err) => {
|
|
should(err).be.null()
|
|
should(fs.existsSync(PACKAGE_MULTI)).eql(true)
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('MULTI Install', function() {
|
|
it('should install module', function(done) {
|
|
pm2.install(PACKAGE_MULTI, {
|
|
tarball: true
|
|
}, function(err, apps) {
|
|
should(err).eql(null);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should have file decompressed in the right folder', function() {
|
|
var target_path = path.join(PM2._conf.DEFAULT_MODULE_PATH, 'multi-app-module')
|
|
fs.readFileSync(path.join(target_path, 'package.json'))
|
|
})
|
|
|
|
it('should have boot key present', function(done) {
|
|
var conf = JSON.parse(fs.readFileSync(process.env.HOME + '/.pm2/module_conf.json'))
|
|
should.exist(conf['tar-modules']['multi-app-module']);
|
|
done()
|
|
})
|
|
|
|
it('should have started 2 apps', function(done) {
|
|
pm2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(2)
|
|
should(list[0].pm2_env.version).eql('0.1')
|
|
should(list[0].name).eql('multi-app-module:first_app')
|
|
should(list[1].name).eql('multi-app-module:second_app')
|
|
should(list[1].pm2_env.version).eql('0.1')
|
|
should(list[0].pm2_env.status).eql('online')
|
|
should(list[1].pm2_env.status).eql('online')
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('Reinstall', () => {
|
|
it('should install module', function(done) {
|
|
pm2.install(PACKAGE_MULTI, {
|
|
tarball: true
|
|
}, function(err, apps) {
|
|
should(err).eql(null);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should have only 2 apps', function(done) {
|
|
pm2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(2)
|
|
should(list[0].pm2_env.status).eql('online')
|
|
should(list[1].pm2_env.status).eql('online')
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('Re spawn PM2', () => {
|
|
it('should kill/resurect pm2', (done) => {
|
|
pm2.update(function(err) {
|
|
should(err).be.null();
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('should have boot key present', function(done) {
|
|
var conf = JSON.parse(fs.readFileSync(process.env.HOME + '/.pm2/module_conf.json'))
|
|
should.exist(conf['tar-modules']['multi-app-module']);
|
|
done()
|
|
})
|
|
|
|
it('should have started 2 apps', function(done) {
|
|
pm2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(2)
|
|
should(list[0].pm2_env.status).eql('online')
|
|
should(list[0].pm2_env.version).eql('0.1')
|
|
should(list[1].pm2_env.version).eql('0.1')
|
|
should(list[1].pm2_env.status).eql('online')
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('CLI UX', () => {
|
|
it('should not delete modules when calling pm2 delete all', (done) => {
|
|
pm2.delete('all', (err, apps) => {
|
|
should(apps.length).eql(2)
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('Uninstall', () => {
|
|
it('should uninstall multi app module', (done) => {
|
|
pm2.uninstall('multi-app-module', (err, data) => {
|
|
should(err).be.null();
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('should have boot key deleted', function(done) {
|
|
var conf = JSON.parse(fs.readFileSync(process.env.HOME + '/.pm2/module_conf.json'))
|
|
should.not.exist(conf['tar-modules']['multi-app-module']);
|
|
done()
|
|
})
|
|
|
|
it('should have no running apps', function(done) {
|
|
pm2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(0)
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('MONO APP', () => {
|
|
it('should install module', function(done) {
|
|
pm2.install(PACKAGE_MONO, {
|
|
tarball: true
|
|
}, function(err, apps) {
|
|
should(err).eql(null);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should have file decompressed in the right folder', function() {
|
|
var target_path = path.join(PM2._conf.DEFAULT_MODULE_PATH, 'mono-app-module')
|
|
var pkg_path = path.join(target_path, 'package.json')
|
|
fs.readFileSync(pkg_path)
|
|
})
|
|
|
|
it('should have boot key present', function(done) {
|
|
var conf = JSON.parse(fs.readFileSync(process.env.HOME + '/.pm2/module_conf.json'))
|
|
should.exist(conf['tar-modules']['mono-app-module']);
|
|
done()
|
|
})
|
|
|
|
it('should have started 1 app', function(done) {
|
|
pm2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(1)
|
|
should(list[0].name).eql('mono_app')
|
|
should(list[0].pm2_env.version).eql('0.23.0')
|
|
should(list[0].pm2_env.status).eql('online')
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('should uninstall multi app module', (done) => {
|
|
pm2.uninstall('mono-app-module', (err, data) => {
|
|
should(err).be.null();
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('should have boot key deleted', function(done) {
|
|
var conf = JSON.parse(fs.readFileSync(process.env.HOME + '/.pm2/module_conf.json'))
|
|
should.not.exist(conf['tar-modules']['mono-app-module']);
|
|
done()
|
|
})
|
|
|
|
it('should have no running apps', function(done) {
|
|
pm2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(0)
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
})
|