93852d4da9
Also support auto-load all types from types folder for template test. Change-Id: I113d9dd69b6f1b1e016dcf0b00e942446bbb6a6f
87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
const fs = require('fs');
|
|
const twinkie = require('fried-twinkie');
|
|
|
|
fs.readdir('./polygerrit-ui/temp/behaviors/', (err, data) => {
|
|
if (err) {
|
|
console.log('error /polygerrit-ui/temp/behaviors/ directory');
|
|
}
|
|
const behaviors = data;
|
|
const additionalSources = [];
|
|
const externMap = {};
|
|
|
|
for (const behavior of behaviors) {
|
|
if (!externMap[behavior]) {
|
|
additionalSources.push({
|
|
path: `./polygerrit-ui/temp/behaviors/${behavior}`,
|
|
src: fs.readFileSync(
|
|
`./polygerrit-ui/temp/behaviors/${behavior}`, 'utf-8'),
|
|
});
|
|
externMap[behavior] = true;
|
|
}
|
|
}
|
|
|
|
let mappings = JSON.parse(fs.readFileSync(
|
|
`./polygerrit-ui/temp/map.json`, 'utf-8'));
|
|
|
|
// The directory is passed as arg2 by the test target.
|
|
const directory = process.argv[2];
|
|
if (directory) {
|
|
const mappingSpecificDirectory = {};
|
|
|
|
for (key of Object.keys(mappings)) {
|
|
if (directory === mappings[key].directory) {
|
|
mappingSpecificDirectory[key] = mappings[key];
|
|
}
|
|
}
|
|
mappings = mappingSpecificDirectory;
|
|
}
|
|
|
|
// If a particular file was passed by the user, don't test everything.
|
|
const file = process.argv[3];
|
|
if (file) {
|
|
const mappingSpecificFile = {};
|
|
for (key of Object.keys(mappings)) {
|
|
if (key.includes(file)) {
|
|
mappingSpecificFile[key] = mappings[key];
|
|
}
|
|
}
|
|
mappings = mappingSpecificFile;
|
|
}
|
|
|
|
/**
|
|
* Types in Gerrit.
|
|
* All types should be under `./polygerrit-ui/app/types` folder and end with `js`.
|
|
*/
|
|
fs.readdir('./polygerrit-ui/app/types/', (err, typeFiles) => {
|
|
for (const typeFile of typeFiles) {
|
|
if (!typeFile.endsWith('.js')) continue;
|
|
additionalSources.push({
|
|
path: `./polygerrit-ui/app/types/${typeFile}`,
|
|
src: fs.readFileSync(
|
|
`./polygerrit-ui/app/types/${typeFile}`, 'utf-8'),
|
|
});
|
|
}
|
|
|
|
const toCheck = [];
|
|
for (key of Object.keys(mappings)) {
|
|
if (mappings[key].html && mappings[key].js) {
|
|
toCheck.push({
|
|
htmlSrcPath: mappings[key].html,
|
|
jsSrcPath: mappings[key].js,
|
|
jsModule: 'polygerrit.' + mappings[key].package,
|
|
});
|
|
}
|
|
}
|
|
|
|
twinkie.checkTemplate(toCheck, additionalSources)
|
|
.then(() => {}, joinedErrors => {
|
|
if (joinedErrors) {
|
|
process.exit(1);
|
|
}
|
|
}).catch(e => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
});
|
|
});
|
|
});
|