mirror of
https://github.com/Unitech/pm2.git
synced 2025-12-08 20:35:53 +00:00
135 lines
4.7 KiB
JavaScript
135 lines
4.7 KiB
JavaScript
|
|
var Containerizer = require('../../lib/API/Containerizer.js');
|
|
var path = require('path');
|
|
var fs = require('fs');
|
|
var should = require('should');
|
|
var Plan = require('../helpers/plan.js');
|
|
|
|
describe('Containerizer unit tests', function() {
|
|
var fixture_path = path.join(__dirname, '../fixtures/containerizer');
|
|
var Dockerfile = path.join(fixture_path, 'Dockerfile');
|
|
|
|
var res_lines_dev = ['## DEVELOPMENT MODE',
|
|
'ENV NODE_ENV=development',
|
|
'CMD ["rundev", "start", "--auto-exit", "index.js", "--env", "development"]'];
|
|
|
|
var res_lines_prod = ['## DISTRIBUTION MODE',
|
|
'ENV NODE_ENV=production',
|
|
'COPY . /var/app',
|
|
'CMD ["pm2-docker", "start", "--auto-exit", "index.js", "--env", "production"]'];
|
|
|
|
after(function(done) {
|
|
fs.unlink(Dockerfile, done);
|
|
});
|
|
|
|
it('should generate a dockerfile', function() {
|
|
var has_meta = false;
|
|
|
|
return Containerizer.generateDockerfile(Dockerfile, 'index.js', 'development')
|
|
.then(function(meta) {
|
|
meta.Dockerfile_path.should.eql(Dockerfile);
|
|
fs.statSync(Dockerfile);
|
|
|
|
var lines = meta.Dockerfile.split('\n');
|
|
lines.forEach(function(line, i) {
|
|
if (line == '## DEVELOPMENT MODE') {
|
|
has_meta = true;
|
|
should(lines[i]).eql(res_lines_dev[0]);
|
|
should(lines[i + 1]).eql(res_lines_dev[1]);
|
|
should(lines[i + 2]).eql(res_lines_dev[2]);
|
|
}
|
|
});
|
|
|
|
should(has_meta).be.true();
|
|
});
|
|
});
|
|
|
|
it('should switch dockerfile to distribution', function() {
|
|
return Containerizer.switchDockerFile(Dockerfile, 'index.js', 'distribution')
|
|
.then(function(meta) {
|
|
meta.Dockerfile_path.should.eql(Dockerfile);
|
|
fs.statSync(Dockerfile);
|
|
|
|
var lines = meta.Dockerfile.split('\n')
|
|
lines.forEach(function(line, i) {
|
|
if (line == '## DISTRIBUTION MODE') {
|
|
should(lines[i]).eql(res_lines_prod[0]);
|
|
should(lines[i + 1]).eql(res_lines_prod[1]);
|
|
should(lines[i + 2]).eql(res_lines_prod[2]);
|
|
should(lines[i + 3]).eql(res_lines_prod[3]);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should switch dockerfile to distribution (no touching it)', function() {
|
|
return Containerizer.switchDockerFile(Dockerfile, 'index.js', 'distribution')
|
|
.then(function(meta) {
|
|
meta.Dockerfile_path.should.eql(Dockerfile);
|
|
fs.statSync(Dockerfile);
|
|
var lines = meta.Dockerfile.split('\n');
|
|
lines.forEach(function(line, i) {
|
|
if (line == '## DISTRIBUTION MODE') {
|
|
should(lines[i]).eql(res_lines_prod[0]);
|
|
should(lines[i + 1]).eql(res_lines_prod[1]);
|
|
should(lines[i + 2]).eql(res_lines_prod[2]);
|
|
should(lines[i + 3]).eql(res_lines_prod[3]);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should switch dockerfile to development', function() {
|
|
return Containerizer.switchDockerFile(Dockerfile, 'index.js', 'development')
|
|
.then(function(meta) {
|
|
meta.Dockerfile_path.should.eql(Dockerfile);
|
|
fs.statSync(Dockerfile);
|
|
|
|
var lines = meta.Dockerfile.split('\n');
|
|
lines.forEach(function(line, i) {
|
|
if (line == '## DEVELOPMENT MODE') {
|
|
should(lines[i]).eql(res_lines_dev[0]);
|
|
should(lines[i + 1]).eql(res_lines_dev[1]);
|
|
should(lines[i + 2]).eql(res_lines_dev[2]);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should switch dockerfile to development (no touching it)', function() {
|
|
return Containerizer.switchDockerFile(Dockerfile, 'index.js', 'development')
|
|
.then(function(meta) {
|
|
meta.Dockerfile_path.should.eql(Dockerfile);
|
|
fs.statSync(Dockerfile);
|
|
|
|
var lines = meta.Dockerfile.split('\n');
|
|
lines.forEach(function(line, i) {
|
|
if (line == '## DEVELOPMENT MODE') {
|
|
should(lines[i]).eql(res_lines_dev[0]);
|
|
should(lines[i + 1]).eql(res_lines_dev[1]);
|
|
should(lines[i + 2]).eql(res_lines_dev[2]);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should switch dockerfile to distribution', function() {
|
|
return Containerizer.switchDockerFile(Dockerfile, 'index.js', 'distribution')
|
|
.then(function(meta) {
|
|
meta.Dockerfile_path.should.eql(Dockerfile);
|
|
fs.statSync(Dockerfile);
|
|
|
|
var lines = meta.Dockerfile.split('\n')
|
|
lines.forEach(function(line, i) {
|
|
if (line == '## DISTRIBUTION MODE') {
|
|
should(lines[i]).eql(res_lines_prod[0]);
|
|
should(lines[i + 1]).eql(res_lines_prod[1]);
|
|
should(lines[i + 2]).eql(res_lines_prod[2]);
|
|
should(lines[i + 3]).eql(res_lines_prod[3]);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|