siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
153 lines (100 loc) • 3.75 kB
JavaScript
/*
Siesta 5.6.1
Copyright(c) 2009-2022 Bryntum AB
https://bryntum.com/contact
https://bryntum.com/products/siesta/license
*/
!function () {
/* header */
java.lang.Thread.setDefaultUncaughtExceptionHandler({
uncaughtException : function (thread, exception) {
java.lang.System.err.println("ERROR in thread: [" + thread + "]")
exception.printStackTrace()
quit(7)
}
})
var ids = {}
var timer = new java.util.Timer();
var counter = 1;
setTimeout = sync(function (fn, delay) {
var id = counter++;
ids[ id ] = new JavaAdapter(java.util.TimerTask, { run : fn })
timer.schedule(ids[ id ], delay);
return id;
})
clearTimeout = sync(function (id) {
var task = ids[ id ]
if (task) {
task.cancel();
timer.purge();
delete ids[ id ]
}
})
setInterval = sync(function (fn, delay) {
var id = counter++
ids[ id ] = new JavaAdapter(java.util.TimerTask, { run : fn })
timer.schedule(ids[ id ], delay, delay)
return id
})
clearInterval = clearTimeout;
SHUTDOWN = false
java.lang.Runtime.getRuntime().addShutdownHook(java.lang.Thread(function () {
SHUTDOWN = true
Joose.O.each(ids, function (id) {
clearTimeout(id)
})
}))
Role('Siesta.Launcher.CommandLineTool.RhinoTool', {
does : [
Siesta.Launcher.FileSystem.Rhino,
Siesta.Launcher.CommandLineTool.BaseTool
],
methods : {
doExit : function (code) {
quit(code)
},
getTerminalWidth : function () {
if (!this.isWindows) return this.terminalWidth
var processBuilder = new java.lang.ProcessBuilder('cmd.exe', '/C', 'mode')
var tunnelProcess = processBuilder.start()
var inputStream = tunnelProcess.getInputStream()
var bufferedReader = new java.io.BufferedReader(new java.io.InputStreamReader(inputStream))
var line
var output = ''
while ((line = bufferedReader.readLine()) != null) output += line
tunnelProcess.waitFor()
var match = /Columns:\s*(\d+)/.exec(output)
return match ? Number(match[ 1 ]) : 80
},
getJavaClass : function (className) {
var parts = className.split('.')
var cls = Packages
for (var i = 0; i < parts.length; i++) {
cls = cls[ parts[ i ]]
if (cls === undefined) return null
}
return cls
},
sleep : function (time) {
java.lang.Thread.currentThread().sleep(time)
},
print : function (text, indentLevel) {
print(this.prepareText(text, false, indentLevel))
},
printErr : function (text, indentLevel) {
java.lang.System.err.println(this.prepareText(text, false, indentLevel))
},
checkIsWindows : function () {
return java.lang.System.getProperty("os.name").indexOf("Windows") != -1
},
checkIsMacOS : function () {
return java.lang.System.getProperty('os.name').indexOf("Mac") != -1
},
checkIs64Bit : function () {
return java.lang.System.getProperty('os.arch').indexOf("64") != -1
}
}
// eof methods
})
/* footer */
}()