kopia lustrzana https://github.com/c9/core
fix and reenable language tests
rodzic
c5a00fed69
commit
766d3039d7
|
@ -1,18 +1,44 @@
|
|||
var path = require("path");
|
||||
var fs = require("fs");
|
||||
|
||||
function changeFile(filepath, handler) {
|
||||
var value = fs.readFileSync(filepath, "utf8");
|
||||
value = handler(value);
|
||||
function changeFile(filepath, handler, ignoreBackup) {
|
||||
var value;
|
||||
try {
|
||||
value = fs.readFileSync(filepath + ".bak", "utf8");
|
||||
} catch (e) {
|
||||
value = fs.readFileSync(filepath, "utf8");
|
||||
if (!ignoreBackup)
|
||||
fs.writeFileSync(filepath + ".bak", value, "utf8");
|
||||
}
|
||||
|
||||
if (typeof handler == "function") {
|
||||
value = handler(value);
|
||||
} else {
|
||||
handler.forEach(function(v) {
|
||||
value = safeReplace(value, ...v);
|
||||
});
|
||||
}
|
||||
fs.writeFileSync(filepath, value, "utf8");
|
||||
}
|
||||
|
||||
var loadRulesPath = require.resolve("eslint/lib/load-rules")
|
||||
function safeReplace(src, pattern, value, count) {
|
||||
var n = 0;
|
||||
src = src.replace(pattern, function(...args) {
|
||||
n++;
|
||||
if (typeof value == "function")
|
||||
return value.apply(this, args);
|
||||
return value.replace(/\$(\d)/g, (_, i) => args[i]);
|
||||
});
|
||||
// if (count != undefined && n != count)
|
||||
// throw new Error(`expected "${pattern}" to match ${count} times instead of ${n}`);
|
||||
return src;
|
||||
}
|
||||
|
||||
var loadRulesPath = require.resolve("eslint/lib/load-rules");
|
||||
var contents = `module.exports = function() {
|
||||
require("babel-polyfill");
|
||||
var rules = {`;
|
||||
|
||||
fs.readdirSync(loadRulesPath + "/../rules").forEach(file => {
|
||||
fs.readdirSync(path.join(loadRulesPath, "../rules")).forEach((file) => {
|
||||
if (path.extname(file) == ".js") {
|
||||
file = file.slice(0, -3);
|
||||
contents += ' "' + file + '": ' + 'require("eslint/lib/rules/' + file + '"),\n';
|
||||
|
@ -24,11 +50,25 @@ var jsxRules = require("eslint-plugin-react").rules;
|
|||
Object.keys(jsxRules).forEach(function(key) { rules["react/" + key] = jsxRules[key]; })
|
||||
return rules
|
||||
};
|
||||
`
|
||||
`;
|
||||
|
||||
changeFile(loadRulesPath, function() { return contents });
|
||||
changeFile(require.resolve("eslint/lib/linter"), function(src) {
|
||||
return src.replace('require(parserName)', 'require("espree")');
|
||||
});
|
||||
changeFile(require.resolve("eslint/lib/linter"), [
|
||||
[/^/, `//a
|
||||
require('core-js/es6');
|
||||
require('core-js/fn/symbol');
|
||||
require('core-js/fn/set');
|
||||
require('core-js/fn/array/from');
|
||||
require('core-js/fn/array/find-index');
|
||||
require('core-js/fn/string/raw');
|
||||
require('core-js/fn/map');
|
||||
require('core-js/fn/weak-map');
|
||||
require("regenerator-runtime/runtime");
|
||||
`.replace(/^\s*/gm, ""), 1],
|
||||
['require(config.parser)', 'require("espree")', 1],
|
||||
[`require("./config/config-validator")`, `{validateRuleOptions: x=>x}`, 1]
|
||||
]);
|
||||
|
||||
changeFile(require.resolve("espree/espree"), function(src) {
|
||||
return src.replace(/acornOptions = {[^}\s]*/g, 'acornOptions = {allowImportExportEverywhere:true,')
|
||||
.replace(/(function isValid(?:Node|Token)\(\w+\) {)(?!ret)/g, "$1return true;");
|
||||
|
@ -38,11 +78,11 @@ changeFile(require.resolve("espree/espree"), function(src) {
|
|||
|
||||
|
||||
var webpack = require("webpack");
|
||||
var outputPath = __dirname + "/../worker/eslint_browserified.js"
|
||||
var outputPath = __dirname + "/../worker/eslint_browserified.js";
|
||||
webpack({
|
||||
entry: "eslint/lib/linter",
|
||||
module: {
|
||||
rules: [{
|
||||
rules: [{
|
||||
test: /\.js$/,
|
||||
include: [
|
||||
path.resolve(__dirname)
|
||||
|
@ -51,7 +91,8 @@ webpack({
|
|||
loader: "babel-loader",
|
||||
options: {
|
||||
presets: ["es2015"],
|
||||
compact: false
|
||||
compact: false,
|
||||
plugins: ["babel-plugin-unassert"]
|
||||
},
|
||||
}]
|
||||
},
|
||||
|
@ -67,15 +108,16 @@ webpack({
|
|||
}
|
||||
}, (err, stats) => {
|
||||
if (err || stats.hasErrors()) {
|
||||
console.log(err, stats)
|
||||
console.log(err, stats);
|
||||
}
|
||||
var commentRe = /^(;)?(?:\s*(?:\/\/.+\n|\/\*(?:[^*]|\*(?!\/))*\*\/))+(?: *\n)?/gm;
|
||||
changeFile(outputPath, function(src) {
|
||||
return "// generated using packager/eslint.js\n"
|
||||
+ src.replace(commentRe, "$1")
|
||||
.replace('define("eslint", ', "define(")
|
||||
.replace("if (severityValue === 0 || severityValue === 1 || severityValue === 2) {", "if (typeof severityValue === 'number') {")
|
||||
.replace(/^ {4,}/gm, function(indentation) {
|
||||
return indentation.replace(indentation.length % 4 ? / {2}/g :/ {4}/g, "\t")
|
||||
return indentation.replace(indentation.length % 4 ? / {2}/g : / {4}/g, "\t");
|
||||
});
|
||||
})
|
||||
}, true);
|
||||
});
|
|
@ -3,10 +3,13 @@
|
|||
"babel": "^6.23.0",
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-loader": "^7.1.2",
|
||||
"babel-plugin-unassert": "^2.1.2",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"babel-preset-es2015": "^6.24.1",
|
||||
"eslint": "^4.11.0",
|
||||
"eslint-plugin-react": "^7.4.0",
|
||||
"core-js": "^2.5.1",
|
||||
"eslint": "^4.12.0",
|
||||
"eslint-plugin-react": "7.4.0",
|
||||
"regenerator-runtime": "^0.11.0",
|
||||
"webpack": "^3.8.1"
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -78,11 +78,6 @@ handler.init = function(callback) {
|
|||
rules["handle-callback-err"] = 1;
|
||||
rules["no-new-require"] = 2;
|
||||
|
||||
// for (var r in rules) {
|
||||
// if (!(r in linter.defaults().rules))
|
||||
// throw new Error("Unknown rule: ", r);
|
||||
// }
|
||||
|
||||
loadConfigFile(true, function(err) {
|
||||
if (err) console.error(err);
|
||||
util.$watchDir("/", handler);
|
||||
|
|
|
@ -11,14 +11,30 @@ define(function(require, exports, module) {
|
|||
var assert = require("assert");
|
||||
var LanguageWorker = require('../c9.ide.language.core/worker').LanguageWorker;
|
||||
var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
|
||||
var emitter;
|
||||
var worker;
|
||||
|
||||
describe("Jump To Definition", function() {
|
||||
this.timeout(1000000);
|
||||
|
||||
beforeEach(function() {
|
||||
// preload the handlers
|
||||
require("plugins/c9.ide.language.javascript/scope_analyzer");
|
||||
require("plugins/c9.ide.language.javascript/jumptodef");
|
||||
require("plugins/c9.ide.language.javascript/parse");
|
||||
|
||||
emitter = Object.create(EventEmitter);
|
||||
emitter.emit = emitter._dispatchEvent;
|
||||
|
||||
worker = new LanguageWorker(emitter);
|
||||
worker.register("plugins/c9.ide.language.javascript/scope_analyzer");
|
||||
worker.register("plugins/c9.ide.language.javascript/jumptodef");
|
||||
worker.register("plugins/c9.ide.language.javascript/parse");
|
||||
});
|
||||
|
||||
it("test jump to definition should point to variable declaration", function(next) {
|
||||
disabledFeatures = { jshint: true };
|
||||
var emitter = Object.create(EventEmitter);
|
||||
emitter.emit = emitter._dispatchEvent;
|
||||
|
||||
emitter.on("definition", function(def) {
|
||||
assert.equal(def.results[0].row, 0);
|
||||
assert.equal(def.results[0].column, 4);
|
||||
|
@ -32,16 +48,10 @@ define(function(require, exports, module) {
|
|||
}
|
||||
});
|
||||
});
|
||||
var worker = new LanguageWorker(emitter);
|
||||
worker.register("plugins/c9.ide.language.javascript/scope_analyzer");
|
||||
worker.register("plugins/c9.ide.language.javascript/jumptodef");
|
||||
worker.register("plugins/c9.ide.language.javascript/parse");
|
||||
worker.switchFile("test.js", false, "javascript", "var ab = 4; console.log(ab);", null, "");
|
||||
});
|
||||
it("test jump to definition on a position without code should still return a result", function(next) {
|
||||
disabledFeatures = { jshint: true };
|
||||
var emitter = Object.create(EventEmitter);
|
||||
emitter.emit = emitter._dispatchEvent;
|
||||
var definitionListener = function() {definitionListener.callCount += 1;};
|
||||
definitionListener.callCount = 0;
|
||||
emitter.on("definition", definitionListener);
|
||||
|
@ -53,10 +63,6 @@ define(function(require, exports, module) {
|
|||
}
|
||||
});
|
||||
});
|
||||
var worker = new LanguageWorker(emitter);
|
||||
worker.register("plugins/c9.ide.language.javascript/scope_analyzer");
|
||||
worker.register("plugins/c9.ide.language.javascript/jumptodef");
|
||||
worker.register("plugins/c9.ide.language.javascript/parse");
|
||||
worker.switchFile("test.js", false, "javascript", "var ab = 4; console.log(ab); ", null, "");
|
||||
|
||||
// definition listener should not be called
|
||||
|
@ -67,8 +73,6 @@ define(function(require, exports, module) {
|
|||
});
|
||||
it("test isJumpToDefinitionAvailable should return true when available", function(next) {
|
||||
disabledFeatures = { jshint: true };
|
||||
var emitter = Object.create(EventEmitter);
|
||||
emitter.emit = emitter._dispatchEvent;
|
||||
emitter.on("isJumpToDefinitionAvailableResult", function(res) {
|
||||
assert.equal(res.value, true);
|
||||
next();
|
||||
|
@ -81,16 +85,10 @@ define(function(require, exports, module) {
|
|||
}
|
||||
});
|
||||
});
|
||||
var worker = new LanguageWorker(emitter);
|
||||
worker.register("plugins/c9.ide.language.javascript/scope_analyzer");
|
||||
worker.register("plugins/c9.ide.language.javascript/jumptodef");
|
||||
worker.register("plugins/c9.ide.language.javascript/parse");
|
||||
worker.switchFile("test.js", false, "javascript", "var ab = 4; console.log(ab);", null, "");
|
||||
});
|
||||
it("test isJumpToDefinitionAvailable should return false when not available", function(next) {
|
||||
disabledFeatures = { jshint: true };
|
||||
var emitter = Object.create(EventEmitter);
|
||||
emitter.emit = emitter._dispatchEvent;
|
||||
emitter.on("isJumpToDefinitionAvailableResult", function(res) {
|
||||
assert.equal(res.value, false);
|
||||
next();
|
||||
|
@ -103,10 +101,6 @@ define(function(require, exports, module) {
|
|||
}
|
||||
});
|
||||
});
|
||||
var worker = new LanguageWorker(emitter);
|
||||
worker.register("plugins/c9.ide.language.javascript/scope_analyzer");
|
||||
worker.register("plugins/c9.ide.language.javascript/jumptodef");
|
||||
worker.register("plugins/c9.ide.language.javascript/parse");
|
||||
worker.switchFile("test.js", false, "javascript", "var ab = 4; console.log(ab);", null, "");
|
||||
});
|
||||
});
|
||||
|
|
|
@ -38,8 +38,7 @@ require(["plugins/c9.ide.language/test_base"], function(base) {
|
|||
}, 0);
|
||||
});
|
||||
|
||||
// TODO: make sure this works in the ci server
|
||||
it.skip("has three markers initially", function(done) {
|
||||
it("has three markers initially", function(done) {
|
||||
jsSession.on("changeAnnotation", function onAnnos() {
|
||||
if (!jsSession.getAnnotations().length)
|
||||
return;
|
||||
|
|
|
@ -13,7 +13,7 @@ var address = system.args[1];
|
|||
var filter = system.args[2];
|
||||
var branch = system.args[3];
|
||||
|
||||
var logAll = false;
|
||||
var logAll = !false;
|
||||
if (!address) console.log("# No address, running against: ", TEST_SUITE_URL);
|
||||
if (filter) console.log("# Filter tests by ", filter);
|
||||
if (!address) address = TEST_SUITE_URL;
|
||||
|
@ -168,9 +168,8 @@ page.open(address, function(status) {
|
|||
|
||||
watchForTimeout(name);
|
||||
|
||||
log("# %s", name);
|
||||
window.c9Test.run(name, function(errors, out) {
|
||||
log("# %s", name);
|
||||
|
||||
out.tests.forEach(function(test, i) {
|
||||
count++;
|
||||
if (test.state == "passed") return log("ok %s %s", count, test.title);
|
||||
|
|
Ładowanie…
Reference in New Issue