mirror of
https://github.com/xodio/xod.git
synced 2026-02-20 02:01:20 +01:00
tweak(xod-tabtest): automatically inject xod/tabtest library to tested project
This commit is contained in:
@@ -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'
|
||||
]
|
||||
|
||||
@@ -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": [
|
||||
|
||||
@@ -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 =
|
||||
|
||||
28
packages/xod-tabtest/tools/loadTabtestLibPatches.js
Normal file
28
packages/xod-tabtest/tools/loadTabtestLibPatches.js
Normal 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);
|
||||
});
|
||||
Reference in New Issue
Block a user