only-changed-jest-watch-plugin
Version:
Jest watch plugin for running either only the modified test (for TDD), or tests of dependant modules
63 lines (55 loc) • 1.71 kB
JavaScript
;
const fs = require("fs");
const path = require("path");
const t = require("babel-types");
const generate = require("babel-generator").default;
const camelToDashed = require("../lib/parsers").camelToDashed;
const dahsedProperties = fs
.readdirSync(path.resolve(__dirname, "../lib/properties"))
.filter(propertyFile => propertyFile.substr(-3) === ".js")
.map(propertyFile => camelToDashed(propertyFile.replace('.js', '')))
const valid_properties_out_file = fs.createWriteStream(
path.resolve(__dirname, "../lib/validProperties.js"),
{ encoding: "utf-8" }
);
valid_properties_out_file.write("'use strict';\n\n// autogenerated\n\n");
valid_properties_out_file.write('/*\n *\n * http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSS2Properties\n */\n\n');
const validPropertiesStatements = [];
validPropertiesStatements.push(
t.variableDeclaration("var", [
t.variableDeclarator(
t.identifier("validProperties"),
t.newExpression(t.identifier("Set"), [])
)
])
);
dahsedProperties.forEach(property => {
validPropertiesStatements.push(
t.expressionStatement(
t.callExpression(
t.memberExpression(
t.identifier("validProperties"),
t.identifier("add")
),
[t.stringLiteral(property)]
)
)
);
});
validPropertiesStatements.push(
t.expressionStatement(
t.assignmentExpression(
"=",
t.memberExpression(t.identifier("module"), t.identifier("exports")),
t.identifier("validProperties")
)
)
);
valid_properties_out_file.write(
generate(t.program(validPropertiesStatements)).code + "\n"
);
valid_properties_out_file.end(function(err) {
if (err) {
throw err;
}
});