Shinobi/libs/codeTester.js

68 lines
2.4 KiB
JavaScript

var fs = require('fs');
var execSync = require('child_process').execSync;
module.exports = function(s,config,lang){
var onFFmpegLoaded = function(ffmpeg){
if(process.argv[2] && process.argv[2].indexOf('test') > -1){
config.testMode = true
}
if(config.testMode === true){
config.videosDir = s.mainDirectory + '/videosTest/'
config.port = 9999
if(config.childNodes && config.childNodes.enabled === true && config.childNodes.mode === 'master'){
config.childNodes.port = 9998
}
s.ffmpegFunctions = ffmpeg
}
}
var onBeforeDatabaseLoad = function(ffmpeg){
if(config.testMode === true){
try{
execSync('rm ' + s.mainDirectory + '/shinobi-test.sqlite')
}catch(err){
}
try{
require('sqlite3')
}catch(err){
execSync('npm install sqlite3 --unsafe-perm')
}
execSync('cp ' + s.mainDirectory + '/sql/shinobi.sample.sqlite ' + s.mainDirectory + '/shinobi-test.sqlite')
config.databaseType = 'sqlite3'
config.db = {
filename: s.mainDirectory + "/shinobi-test.sqlite"
}
}
}
var onProcessReady = function(){
if(config.testMode === true){
s.location.super = s.mainDirectory + '/super-test.json'
fs.writeFileSync(s.location.super,s.s([
{
"mail":"admin@shinobi.video",
"pass":"21232f297a57a5a743894a0e4a801fc3",
"tokens":[
"111"
]
}
],null,3))
setTimeout(function(){
require('../test/run.js')(s,config,lang,io)
},500)
}
}
var onProcessExit = function(){
if(config.testMode === true){
execSync('rm ' + s.mainDirectory + '/shinobi-test.sqlite')
execSync('rm ' + s.location.super)
execSync('rm -rf ' + config.videosDir)
console.log('---- Temporary Files Cleaned Up')
process.exit()
}
}
//attach event handlers
s.onFFmpegLoaded(onFFmpegLoaded)
s.onBeforeDatabaseLoad(onBeforeDatabaseLoad)
s.onProcessReady(onProcessReady)
s.onProcessExit(onProcessExit)
}