const path = require('path'); const Myt = require('@verdnatura/myt/myt'); const Run = require('@verdnatura/myt/myt-run'); let dataSources = require('../loopback/server/datasources.json'); let myt; process.on('warning', warning => { console.log(warning.name); console.log(warning.message); console.log(warning.stack); }); process.on('SIGUSR2', async() => { if (myt) await myt.deinit(); }); process.on('exit', async function() { if (myt) await myt.deinit(); }); async function test() { const isCI = process.argv[2] === 'ci'; myt = new Myt(); await myt.init({ workspace: path.join(__dirname, '..'), random: true, ci: isCI, network: isCI ? 'jenkins' : null }); const {dbConfig} = await myt.run(Run); dataSources = JSON.parse(JSON.stringify(dataSources)); Object.assign(dataSources.vn, { host: dbConfig.host, port: dbConfig.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 (myt) await myt.deinit(); console.log('App disconnected & container removed'); } test();