kopia lustrzana https://github.com/c9/core
136 wiersze
5.8 KiB
JavaScript
136 wiersze
5.8 KiB
JavaScript
/*global describe it before after beforeEach onload*/
|
|
|
|
"use client";
|
|
|
|
require(["plugins/c9.ide.language/test_base"], function(base) {
|
|
base.setup(function(err, imports, helpers) {
|
|
if (err) throw err;
|
|
|
|
var language = imports.language;
|
|
var chai = require("lib/chai/chai");
|
|
var expect = chai.expect;
|
|
var assert = require("assert");
|
|
var tabs = imports.tabManager;
|
|
var complete = imports["language.complete"];
|
|
var afterNoCompleteOpen = helpers.afterNoCompleteOpen;
|
|
var afterCompleteDocOpen = helpers.afterCompleteDocOpen;
|
|
var afterCompleteOpen = helpers.afterCompleteOpen;
|
|
var isCompleterOpen = helpers.isCompleterOpen;
|
|
var getCompletionCalls = helpers.getCompletionCalls;
|
|
|
|
describe("analysis", function() {
|
|
var jsTab;
|
|
var jsSession;
|
|
|
|
// Setup
|
|
beforeEach(function(done) {
|
|
tabs.getTabs().forEach(function(tab) {
|
|
tab.close(true);
|
|
});
|
|
// tab.close() isn't quite synchronous, wait for it :(
|
|
complete.closeCompletionBox();
|
|
setTimeout(function() {
|
|
tabs.openFile("/language.js", function(err, tab) {
|
|
if (err) return done(err);
|
|
|
|
jsTab = tab;
|
|
jsSession = jsTab.document.getSession().session;
|
|
expect(jsSession).to.not.equal(null);
|
|
setTimeout(function() {
|
|
complete.closeCompletionBox();
|
|
done();
|
|
});
|
|
});
|
|
}, 0);
|
|
});
|
|
|
|
it('manages to succesfully install codeintel', function(done) {
|
|
this.timeout(5 * 60 * 1000);
|
|
tabs.openFile("/test.css", function(err, tab) {
|
|
if (err) return done(err);
|
|
|
|
tabs.focusTab(tab);
|
|
|
|
imports.worker.once("codeintel_ready", function(e) {
|
|
assert(!e.data.err, e.data.err);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('does continuous completion for CSS if you just typed one character', function(done) {
|
|
tabs.openFile("/test.css", function(err, tab) {
|
|
if (err) return done(err);
|
|
|
|
tabs.focusTab(tab);
|
|
// We get a tab, but it's not done yet, so we wait
|
|
setTimeout(function() {
|
|
tab.editor.ace.selection.setSelectionRange({ start: { row: 1, column: 4 }, end: { row: 1, column: 4 }});
|
|
tab.editor.ace.onTextInput(" f");
|
|
afterCompleteOpen(function(el) {
|
|
expect.html(el).text(/font-/);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
it('does continuous completion for CSS if you just typed one character', function(done) {
|
|
tabs.openFile("/test.css", function(err, tab) {
|
|
if (err) return done(err);
|
|
|
|
tabs.focusTab(tab);
|
|
// We get a tab, but it's not done yet, so we wait
|
|
setTimeout(function() {
|
|
tab.editor.ace.selection.setSelectionRange({ start: { row: 1, column: 4 }, end: { row: 1, column: 4 }});
|
|
tab.editor.ace.onTextInput("f");
|
|
afterCompleteOpen(function(el) {
|
|
assert(el.textContent.match(/font-size/), el.textContent);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
it('does continuous completion for CSS', function(done) {
|
|
tabs.openFile("/test.css", function(err, tab) {
|
|
if (err) return done(err);
|
|
|
|
tabs.focusTab(tab);
|
|
// We get a tab, but it's not done yet, so we wait
|
|
setTimeout(function() {
|
|
tab.editor.ace.selection.setSelectionRange({ start: { row: 1, column: 4 }, end: { row: 1, column: 4 }});
|
|
tab.editor.ace.onTextInput("font-f");
|
|
afterCompleteOpen(function(el) {
|
|
expect.html(el).text(/font-family/);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
it("completes php", function(done) {
|
|
tabs.openFile("/test.php", function(err, tab) {
|
|
if (err) return done(err);
|
|
|
|
tabs.focusTab(tab);
|
|
imports.worker.on("setCompletionRegex", function onRegex(e) {
|
|
if (e.data.language !== "php")
|
|
return;
|
|
imports.worker.off("setCompletionRegex", onRegex);
|
|
|
|
tab.editor.ace.selection.setSelectionRange({ start: { row: 17, column: 5 }, end: { row: 17, column: 5 }});
|
|
tab.editor.ace.onTextInput("-");
|
|
tab.editor.ace.onTextInput(">");
|
|
afterCompleteOpen(function(el) {
|
|
complete.closeCompletionBox();
|
|
assert(el.textContent.match(/y/), el.textContent);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|