tweak(xod-tabtest): automatically inject xod/tabtest library to tested project

This commit is contained in:
Evgeny Kochetkov
2018-12-25 19:55:37 +03:00
parent a8a271fa5b
commit b3cf9fcc25
4 changed files with 49 additions and 5 deletions

View File

@@ -71,6 +71,7 @@ module.exports = {
'**/xod-client-electron/**/*.jsx',
'**/xod-client/stories/*.jsx',
'**/xod-client-browser/tools/*.js',
'**/xod-tabtest/tools/*.js',
'**/xod-client-browser/test-func/*.js',
'**/xod-client-browser/benchmark/*.js'
]

View File

@@ -3,7 +3,9 @@
"version": "0.25.2",
"scripts": {
"refmt": "find src/ test/ -name '*.re*' -exec refmt --in-place {} +",
"build": "bsb -make-world",
"build:lib": "node ./tools/loadTabtestLibPatches.js",
"build:re": "bsb -make-world",
"build": "yarn build:re && yarn build:lib",
"clean:dist": "rimraf ./lib ./src/**/*.bs.js ./test/**/*.bs.js",
"dev": "bsb -w",
"test": "jest"
@@ -22,7 +24,9 @@
},
"devDependencies": {
"@glennsl/bs-jest": "^0.4.2",
"bs-platform": "^3.1.5"
"bs-platform": "^3.1.5",
"ramda": "^0.24.1",
"xod-fs": "^0.25.2"
},
"jest": {
"testMatch": [

View File

@@ -283,8 +283,19 @@ module TestCase = {
};
};
[@bs.module]
external tabtestLibPatches : array(XodProject.Patch.t) =
"../lib/tabtestLibPatches.json";
let generatePatchSuite = (project, patchPathToTest) : XResult.t(t) => {
let patchUnderTestOpt = Project.getPatchByPath(project, patchPathToTest);
let projectWithTabtestLib =
XodProject.Project.upsertPatches(
project,
Belt.List.fromArray(tabtestLibPatches),
);
let patchUnderTestOpt =
Project.getPatchByPath(projectWithTabtestLib, patchPathToTest);
let tsvOpt = patchUnderTestOpt |. Option.flatMap(Patch.getTabtestContent);
switch (patchUnderTestOpt, tsvOpt) {
| (None, _) =>
@@ -298,7 +309,7 @@ let generatePatchSuite = (project, patchPathToTest) : XResult.t(t) => {
),
)
| (Some(patchUnderTest), Some(tsv)) =>
let bench = Bench.create(project, patchUnderTest);
let bench = Bench.create(projectWithTabtestLib, patchUnderTest);
let probes = bench.probes;
let tabData = TabData.parse(tsv);
let realPinLabels =
@@ -322,7 +333,7 @@ let generatePatchSuite = (project, patchPathToTest) : XResult.t(t) => {
let sketchFilename = safeBasename ++ ".sketch.cpp";
let testFilename = safeBasename ++ ".catch.inl";
let sketchFooter = {j|\n\n#include "$testFilename"\n|j};
Project.assocPatch(project, benchPatchPath, bench.patch)
Project.assocPatch(projectWithTabtestLib, benchPatchPath, bench.patch)
|. XodArduino.Transpiler.transpile(_, benchPatchPath)
|. BeltHoles.Result.map(program => {
let idMap =

View File

@@ -0,0 +1,28 @@
const fs = require('fs');
const path = require('path');
const R = require('ramda');
const XP = require('xod-project');
const { loadProject } = require('xod-fs');
const pathToTabtestLib = path.resolve(
__dirname,
'../workspace/__lib__/xod/tabtest'
);
const targetPath = path.resolve(__dirname, '../lib/tabtestLibPatches.json');
loadProject([], pathToTabtestLib).then(project => {
const tabtestLibPatches = R.compose(
R.map(
R.over(
R.lens(XP.getPatchPath, XP.setPatchPath),
R.replace('@', 'xod/tabtest')
)
),
XP.listLocalPatches
)(project);
const json = JSON.stringify(tabtestLibPatches, null, 2);
fs.writeFileSync(targetPath, json);
process.exit(0);
});