const Docker = require('../db/docker.js'); let dataSources = require('../loopback/server/datasources.json'); process.on('warning', warning => { console.log(warning.name); console.log(warning.message); console.log(warning.stack); }); process.on('SIGUSR2', async() => { if (container) await container.rm(); }); process.on('exit', async function() { if (container) await container.rm(); }); let container; async function test() { let isCI = false; if (process.argv[2] === 'ci') isCI = true; container = new Docker(); await container.run(isCI); dataSources = JSON.parse(JSON.stringify(dataSources)); Object.assign(dataSources.vn, { host: container.dbConf.host, port: container.dbConf.port }); const bootOptions = {dataSources}; const app = require('vn-loopback/server/server'); await new Promise((resolve, reject) => { app.boot(bootOptions, err => err ? reject(err) : resolve()); }); // FIXME: Workaround to wait for loopback to be ready await app.models.Application.status(); const Jasmine = require('jasmine'); const jasmine = new Jasmine(); const SpecReporter = require('jasmine-spec-reporter').SpecReporter; jasmine.addReporter(new SpecReporter({ spec: { displaySuccessful: isCI, displayPending: isCI }, summary: { displayPending: false, } })); if (isCI) { const JunitReporter = require('jasmine-reporters'); jasmine.addReporter(new JunitReporter.JUnitXmlReporter()); jasmine.exitOnCompletion = true; jasmine.jasmine.DEFAULT_TIMEOUT_INTERVAL = 900000; } const backSpecs = [ './back/**/*[sS]pec.js', './loopback/**/*[sS]pec.js', './modules/*/back/**/*.[sS]pec.js' ]; jasmine.loadConfig({ spec_dir: '.', spec_files: backSpecs, helpers: [], }); await jasmine.execute(); if (app) await app.disconnect(); if (container) await container.rm(); console.log('App disconnected & container removed'); } test();