mirror of https://github.com/embarklabs/embark.git
test(@embark/code-runner): add unit tests for code-runner module
This commit is contained in:
parent
c947517c0d
commit
23adb0ced7
|
@ -38,31 +38,36 @@
|
||||||
"lint": "npm-run-all lint:*",
|
"lint": "npm-run-all lint:*",
|
||||||
"lint:js": "eslint src/",
|
"lint:js": "eslint src/",
|
||||||
"lint:ts": "tslint -c tslint.json \"src/**/*.ts\"",
|
"lint:ts": "tslint -c tslint.json \"src/**/*.ts\"",
|
||||||
"qa": "npm-run-all lint _typecheck _build",
|
"qa": "npm-run-all lint _typecheck _build test",
|
||||||
"reset": "npx rimraf dist embark-*.tgz package",
|
"reset": "npx rimraf dist embark-*.tgz package",
|
||||||
"solo": "embark-solo"
|
"solo": "embark-solo",
|
||||||
|
"test": "jest"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"extends": "../../../.eslintrc.json"
|
"extends": "../../../.eslintrc.json"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime-corejs3": "7.7.4",
|
"@babel/runtime-corejs3": "7.7.7",
|
||||||
"@types/async": "3.0.3",
|
"@types/async": "3.0.3",
|
||||||
"async": "2.6.1",
|
"async": "3.1.0",
|
||||||
"colors": "1.3.2",
|
"colors": "1.4.0",
|
||||||
"core-js": "3.4.3",
|
"core-js": "3.6.2",
|
||||||
"embark-core": "^5.0.0",
|
"embark-core": "^5.0.0",
|
||||||
"embark-logger": "^5.0.0",
|
"embark-logger": "^5.0.0",
|
||||||
"embark-utils": "^5.0.0",
|
"embark-utils": "^5.0.0",
|
||||||
"embarkjs": "^5.0.0",
|
"embarkjs": "^5.0.0",
|
||||||
"fs-extra": "8.1.0",
|
"fs-extra": "8.1.0",
|
||||||
"parse-json": "4.0.0",
|
"parse-json": "5.0.0",
|
||||||
"vm2": "3.6.4",
|
"vm2": "3.8.4",
|
||||||
"web3": "1.2.4"
|
"web3": "1.2.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@babel/core": "7.7.7",
|
||||||
|
"babel-jest": "24.9.0",
|
||||||
"embark-solo": "^5.0.0",
|
"embark-solo": "^5.0.0",
|
||||||
|
"embark-testing": "^5.0.0",
|
||||||
"eslint": "5.7.0",
|
"eslint": "5.7.0",
|
||||||
|
"jest": "24.9.0",
|
||||||
"npm-run-all": "4.1.5",
|
"npm-run-all": "4.1.5",
|
||||||
"rimraf": "3.0.0",
|
"rimraf": "3.0.0",
|
||||||
"tslint": "5.20.1",
|
"tslint": "5.20.1",
|
||||||
|
@ -72,5 +77,20 @@
|
||||||
"node": ">=10.17.0 <12.0.0",
|
"node": ">=10.17.0 <12.0.0",
|
||||||
"npm": ">=6.11.3",
|
"npm": ">=6.11.3",
|
||||||
"yarn": ">=1.19.1"
|
"yarn": ">=1.19.1"
|
||||||
|
},
|
||||||
|
"jest": {
|
||||||
|
"collectCoverage": true,
|
||||||
|
"testEnvironment": "node",
|
||||||
|
"testMatch": [
|
||||||
|
"**/test/**/*.js"
|
||||||
|
],
|
||||||
|
"transform": {
|
||||||
|
"\\.(js|ts)$": [
|
||||||
|
"babel-jest",
|
||||||
|
{
|
||||||
|
"rootMode": "upward"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ class CodeRunner {
|
||||||
|
|
||||||
private registerCommands() {
|
private registerCommands() {
|
||||||
this.events.setCommandHandler("runcode:getContext", (cb) => {
|
this.events.setCommandHandler("runcode:getContext", (cb) => {
|
||||||
cb(this.vm.options.sandbox);
|
cb(null, this.vm.options.sandbox);
|
||||||
});
|
});
|
||||||
this.events.setCommandHandler("runcode:eval", this.evalCode.bind(this));
|
this.events.setCommandHandler("runcode:eval", this.evalCode.bind(this));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
import assert from 'assert';
|
||||||
|
import sinon from 'sinon';
|
||||||
|
import { fakeEmbark } from 'embark-testing';
|
||||||
|
import CodeRunner from '../src/';
|
||||||
|
|
||||||
|
// Due to our `DAPP_PATH` dependency in `embark-utils` `dappPath()`, we need to
|
||||||
|
// ensure that this environment variable is defined.
|
||||||
|
process.env.DAPP_PATH = 'something';
|
||||||
|
|
||||||
|
describe('core/code-runner', () => {
|
||||||
|
|
||||||
|
const { embark, plugins } = fakeEmbark();
|
||||||
|
|
||||||
|
let codeRunner, doneCb;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
codeRunner = new CodeRunner(embark);
|
||||||
|
doneCb = sinon.fake();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
embark.teardown();
|
||||||
|
sinon.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('it should register variables and eval code in the VM', async () => {
|
||||||
|
const testVar = {
|
||||||
|
foo: 'bar'
|
||||||
|
};
|
||||||
|
await embark.events.request2('runcode:register', 'testVar', testVar);
|
||||||
|
const context = await embark.events.request2('runcode:getContext');
|
||||||
|
assert.equal(context['testVar'], testVar);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('it should run code in the VM', async () => {
|
||||||
|
const testVar = {
|
||||||
|
foo: 'bar'
|
||||||
|
};
|
||||||
|
await embark.events.request2('runcode:register', 'testVar', testVar);
|
||||||
|
// `runcode:eval` throws a `ReferenceError` if `testVar` wasn't registered
|
||||||
|
// in the VM.
|
||||||
|
await embark.events.request2('runcode:eval', `testVar.foo = 'bar';`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
@ -13,6 +13,9 @@
|
||||||
{
|
{
|
||||||
"path": "../../embarkjs/embarkjs"
|
"path": "../../embarkjs/embarkjs"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "../../utils/testing"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "../core"
|
"path": "../core"
|
||||||
},
|
},
|
||||||
|
|
|
@ -107,7 +107,7 @@ class REPL {
|
||||||
this.ipc.client.on('console:history:save', this.addHistory.bind(this));
|
this.ipc.client.on('console:history:save', this.addHistory.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.events.request("runcode:getContext", (context) => {
|
this.events.request("runcode:getContext", (err, context) => {
|
||||||
this.replServer.context = context;
|
this.replServer.context = context;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
74
yarn.lock
74
yarn.lock
|
@ -65,6 +65,26 @@
|
||||||
semver "^5.4.1"
|
semver "^5.4.1"
|
||||||
source-map "^0.5.0"
|
source-map "^0.5.0"
|
||||||
|
|
||||||
|
"@babel/core@7.7.7":
|
||||||
|
version "7.7.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9"
|
||||||
|
integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/code-frame" "^7.5.5"
|
||||||
|
"@babel/generator" "^7.7.7"
|
||||||
|
"@babel/helpers" "^7.7.4"
|
||||||
|
"@babel/parser" "^7.7.7"
|
||||||
|
"@babel/template" "^7.7.4"
|
||||||
|
"@babel/traverse" "^7.7.4"
|
||||||
|
"@babel/types" "^7.7.4"
|
||||||
|
convert-source-map "^1.7.0"
|
||||||
|
debug "^4.1.0"
|
||||||
|
json5 "^2.1.0"
|
||||||
|
lodash "^4.17.13"
|
||||||
|
resolve "^1.3.2"
|
||||||
|
semver "^5.4.1"
|
||||||
|
source-map "^0.5.0"
|
||||||
|
|
||||||
"@babel/core@^7.0.0", "@babel/core@^7.4.5":
|
"@babel/core@^7.0.0", "@babel/core@^7.4.5":
|
||||||
version "7.5.5"
|
version "7.5.5"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30"
|
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30"
|
||||||
|
@ -117,6 +137,16 @@
|
||||||
lodash "^4.17.13"
|
lodash "^4.17.13"
|
||||||
source-map "^0.5.0"
|
source-map "^0.5.0"
|
||||||
|
|
||||||
|
"@babel/generator@^7.7.7":
|
||||||
|
version "7.7.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45"
|
||||||
|
integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/types" "^7.7.4"
|
||||||
|
jsesc "^2.5.1"
|
||||||
|
lodash "^4.17.13"
|
||||||
|
source-map "^0.5.0"
|
||||||
|
|
||||||
"@babel/helper-annotate-as-pure@^7.0.0":
|
"@babel/helper-annotate-as-pure@^7.0.0":
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
|
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
|
||||||
|
@ -526,6 +556,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.4.tgz#75ab2d7110c2cf2fa949959afb05fa346d2231bb"
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.4.tgz#75ab2d7110c2cf2fa949959afb05fa346d2231bb"
|
||||||
integrity sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==
|
integrity sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==
|
||||||
|
|
||||||
|
"@babel/parser@^7.7.7":
|
||||||
|
version "7.7.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937"
|
||||||
|
integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==
|
||||||
|
|
||||||
"@babel/plugin-proposal-async-generator-functions@^7.2.0":
|
"@babel/plugin-proposal-async-generator-functions@^7.2.0":
|
||||||
version "7.2.0"
|
version "7.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e"
|
||||||
|
@ -1758,6 +1793,14 @@
|
||||||
core-js-pure "^3.0.0"
|
core-js-pure "^3.0.0"
|
||||||
regenerator-runtime "^0.13.2"
|
regenerator-runtime "^0.13.2"
|
||||||
|
|
||||||
|
"@babel/runtime-corejs3@7.7.7":
|
||||||
|
version "7.7.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.7.7.tgz#78fcbd472daec13abc42678bfc319e58a62235a3"
|
||||||
|
integrity sha512-kr3W3Fw8mB/CTru2M5zIRQZZgC/9zOxNSoJ/tVCzjPt3H1/p5uuGbz6WwmaQy/TLQcW31rUhUUWKY28sXFRelA==
|
||||||
|
dependencies:
|
||||||
|
core-js-pure "^3.0.0"
|
||||||
|
regenerator-runtime "^0.13.2"
|
||||||
|
|
||||||
"@babel/runtime@7.3.4":
|
"@babel/runtime@7.3.4":
|
||||||
version "7.3.4"
|
version "7.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.4.tgz#73d12ba819e365fcf7fd152aed56d6df97d21c83"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.4.tgz#73d12ba819e365fcf7fd152aed56d6df97d21c83"
|
||||||
|
@ -6709,6 +6752,11 @@ colors@1.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b"
|
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b"
|
||||||
integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==
|
integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==
|
||||||
|
|
||||||
|
colors@1.4.0:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
|
||||||
|
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
|
||||||
|
|
||||||
colors@^1.1.2, colors@^1.2.1:
|
colors@^1.1.2, colors@^1.2.1:
|
||||||
version "1.3.3"
|
version "1.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
|
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
|
||||||
|
@ -7114,6 +7162,11 @@ core-js@3.4.3, core-js@^3.0.1, core-js@^3.0.4, core-js@^3.3.4:
|
||||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.4.3.tgz#09ea102412a368d5f73d24f082e41ac90c633a49"
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.4.3.tgz#09ea102412a368d5f73d24f082e41ac90c633a49"
|
||||||
integrity sha512-BVvHidX8uAmLCYPfLpXTEex7jz1uZJ1mW+shhIsBdA716O8Fg6TOwSgenSyO/bvEtnGdOTpKRZPSh4bSVI1k9w==
|
integrity sha512-BVvHidX8uAmLCYPfLpXTEex7jz1uZJ1mW+shhIsBdA716O8Fg6TOwSgenSyO/bvEtnGdOTpKRZPSh4bSVI1k9w==
|
||||||
|
|
||||||
|
core-js@3.6.2:
|
||||||
|
version "3.6.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.2.tgz#2799ea1a59050f0acf50dfe89b916d6503b16caa"
|
||||||
|
integrity sha512-hIE5dXkRzRvnZ5vhkRfQxUvDxQZmD9oueA08jDYRBKJHx+VIl/Pne/e0A4x9LObEEthC/TqiZybUoNM4tRgnKg==
|
||||||
|
|
||||||
core-js@^1.0.0:
|
core-js@^1.0.0:
|
||||||
version "1.2.7"
|
version "1.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
||||||
|
@ -15682,14 +15735,7 @@ parse-json@4.0.0, parse-json@^4.0.0:
|
||||||
error-ex "^1.3.1"
|
error-ex "^1.3.1"
|
||||||
json-parse-better-errors "^1.0.1"
|
json-parse-better-errors "^1.0.1"
|
||||||
|
|
||||||
parse-json@^2.2.0:
|
parse-json@5.0.0, parse-json@^5.0.0:
|
||||||
version "2.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
|
|
||||||
integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
|
|
||||||
dependencies:
|
|
||||||
error-ex "^1.2.0"
|
|
||||||
|
|
||||||
parse-json@^5.0.0:
|
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f"
|
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f"
|
||||||
integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==
|
integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==
|
||||||
|
@ -15699,6 +15745,13 @@ parse-json@^5.0.0:
|
||||||
json-parse-better-errors "^1.0.1"
|
json-parse-better-errors "^1.0.1"
|
||||||
lines-and-columns "^1.1.6"
|
lines-and-columns "^1.1.6"
|
||||||
|
|
||||||
|
parse-json@^2.2.0:
|
||||||
|
version "2.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
|
||||||
|
integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
|
||||||
|
dependencies:
|
||||||
|
error-ex "^1.2.0"
|
||||||
|
|
||||||
parse-ms@^2.1.0:
|
parse-ms@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d"
|
resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d"
|
||||||
|
@ -21129,6 +21182,11 @@ vm2@3.6.4:
|
||||||
resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.6.4.tgz#88b27a9f328a0630671841363692a57d24dead33"
|
resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.6.4.tgz#88b27a9f328a0630671841363692a57d24dead33"
|
||||||
integrity sha512-LFj8YL9DyGn+fwgG2J+10HyuIpdIRHHN8/3NwKoc2e2t2Pr0aXV/2OSODceDR7NP7VNr8RTqmxHRYcwbNvpbwg==
|
integrity sha512-LFj8YL9DyGn+fwgG2J+10HyuIpdIRHHN8/3NwKoc2e2t2Pr0aXV/2OSODceDR7NP7VNr8RTqmxHRYcwbNvpbwg==
|
||||||
|
|
||||||
|
vm2@3.8.4:
|
||||||
|
version "3.8.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.8.4.tgz#882be9135467942d84d1af80b6e6549b57c69041"
|
||||||
|
integrity sha512-5HThl+RBO/pwE9SF0kM4nLrpq5vXHBNk4BMX27xztvl0j1RsZ4/PMVJAu9rM9yfOtTo5KroL7XNX3031ExleSw==
|
||||||
|
|
||||||
w3c-hr-time@^1.0.1:
|
w3c-hr-time@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
|
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
|
||||||
|
|
Loading…
Reference in New Issue