c9-core/plugins/c9.ide.run/output_test.js

182 wiersze
6.6 KiB
JavaScript

/*global describe it before after bar */
"use client";
require(["lib/architect/architect", "lib/chai/chai", "/vfs-root"],
function (architect, chai, baseProc) {
var expect = chai.expect;
expect.setupArchitectTest([
{
packagePath: "plugins/c9.core/c9",
workspaceId: "johndoe/dev",
startdate: new Date(),
debug: true,
hosted: true,
local: false,
davPrefix: "/"
},
"plugins/c9.core/ext",
"plugins/c9.core/http-xhr",
"plugins/c9.core/util",
"plugins/c9.ide.ui/lib_apf",
{
packagePath: "plugins/c9.core/settings",
testing: true
},
{
packagePath: "plugins/c9.ide.ui/ui",
staticPrefix: "plugins/c9.ide.ui"
},
"plugins/c9.ide.editors/document",
"plugins/c9.ide.editors/undomanager",
"plugins/c9.ide.editors/editors",
"plugins/c9.ide.editors/editor",
"plugins/c9.ide.editors/tabmanager",
"plugins/c9.ide.ui/focus",
{
packagePath: "plugins/c9.ide.console/console",
testing: 2
},
"plugins/c9.ide.editors/pane",
"plugins/c9.ide.editors/tab",
"plugins/c9.ide.terminal/terminal",
"plugins/c9.ide.run/output",
{
packagePath: "plugins/c9.ide.run/run",
testing: true,
base: baseProc,
staticPrefix: "plugins/c9.ide.run",
runners: {
"node": {
"caption": "Node.js (current)",
"cmd": ["node", "${debug?--debug-brk=15454}", "$file"],
"debugger": "v8",
"debugport": 15454,
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.js",
"info": "Your code is running at \\033[01;34m$hostname\\033[00m.\n"
+ "\\033[01;31mImportant:\\033[00m use \\033[01;32mprocess.env.PORT\\033[00m as the port and \\033[01;32mprocess.env.IP\\033[00m as the host in your scripts!\n"
},
"pythoni": {
"caption": "Python in interactive mode",
"cmd": ["python", "-i"],
"selector": "source.python",
"info": "Hit \\033[01;34mCtrl-D\\033[00m to exit.\n"
}
}
},
"plugins/c9.ide.preferences/preferences",
"plugins/c9.ide.ui/forms",
"plugins/c9.fs/fs",
"plugins/c9.fs/proc",
"plugins/c9.vfs.client/vfs_client",
"plugins/c9.vfs.client/endpoint",
"plugins/c9.ide.auth/auth",
"plugins/c9.core/api",
"plugins/c9.ide.ace/ace",
// "plugins/c9.ide.panels/panels",
// "plugins/c9.ide.panels/panel",
// "plugins/c9.ide.panels/area",
"plugins/c9.ide.run.debug/debuggers/debugger",
"plugins/c9.ide.run.debug/breakpoints",
"plugins/c9.ide.run.debug/debugpanel",
"plugins/c9.ide.run.debug/callstack",
"plugins/c9.ide.run.debug/debuggers/socket",
"plugins/c9.fs/net",
"plugins/c9.ide.ui/menus",
{
consumes: ["tabManager", "proc", "output", "fs", "ext"],
provides: [],
setup: main
}
], architect);
function main(options, imports, register) {
var tabs = imports.tabManager;
var output = imports.output;
var fs = imports.fs;
var ext = imports.ext;
expect.html.setConstructor(function(tab) {
if (typeof tab == "object")
return tab.pane.aml.getPage("editor::" + tab.editorType).$ext;
});
describe('terminal', function() {
before(function(done) {
bar.$ext.style.background = "rgba(220, 220, 220, 0.93)";
bar.$ext.style.position = "fixed";
bar.$ext.style.left = "20px";
bar.$ext.style.right = "20px";
bar.$ext.style.bottom = "20px";
bar.$ext.style.height = "33%";
document.body.style.marginBottom = "33%";
tabs.once("ready", function() {
tabs.getPanes()[0].focus();
done();
});
});
this.timeout(10000);
it('should open an output window and run with a runner', function(done) {
var c = "console.log('Hello World', new Date());";
fs.writeFile("/helloworld.js", c, "utf8", function(err) {
if (err) throw err.message;
tabs.open({
editorType: "output",
document: {
title: "Output",
output: {
id: "testoutput",
config: {
command: "./helloworld.js",
debug: false
},
runner: "auto",
run: true
}
}
}, function(err, tab) {
expect(err).to.not.ok;
var ace = tabs.focussedTab.editor.ace;
tab.editor.once("connect", function() {
ace.session.term.once('afterWrite', function() {
ace.renderer.on('afterRender', function afterRender() {
if (tab.classList.names.indexOf("running") == -1
&& ace.getValue().match(/Hello\s*World/)) {
expect.html(ace.container).text(/Hello\s*World/);
ace.renderer.off('afterRender', afterRender);
done();
}
});
});
});
});
});
});
if (!onload.remain) {
after(function(done) {
ext.unloadAllPlugins();
document.body.style.marginBottom = "";
done();
});
}
});
register();
}
});