Skip to content

Commit

Permalink
[INTERNAL] static translator and normalizer: Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
romaniam authored and RandomByte committed Dec 17, 2018
1 parent dd64ff5 commit 595936d
Show file tree
Hide file tree
Showing 7 changed files with 304 additions and 92 deletions.
103 changes: 51 additions & 52 deletions lib/normalizer.js
@@ -1,67 +1,66 @@
const log = require("@ui5/logger").getLogger("normalizer:normalizer");
const projectPreprocessor = require("./projectPreprocessor");


/**
* Generate project and dependency trees via translators. Optionally configure all projects with the projectPreprocessor.
*
* @module normalizer/normalizer
*/
const Normalizer = {

/**
* Generates a project and dependency tree via translators and configures all projects via the projectPreprocessor
*
* @param {Object} options Options
* @param {string} options.cwd Current working directory
* @param {string} options.configPath Path to configuration file
* @param {string} options.translator Translator to use
* @returns {Promise} Promise resolving to tree object
*/
async function generateProjectTree(options) {
const tree = await generateDependencyTree(options);
/**
* Generates a project and dependency tree via translators and configures all projects via the projectPreprocessor
*
* @param {Object} options Options
* @param {string} options.cwd Current working directory
* @param {string} options.configPath Path to configuration file
* @param {string} options.translator Translator to use
* @returns {Promise} Promise resolving to tree object
*/
generateProjectTree: async function(options = {}) {
const tree = await Normalizer.generateDependencyTree(options);

if (options.configPath) {
tree.configPath = options.configPath;
}
return projectPreprocessor.processTree(tree);
}
if (options.configPath) {
tree.configPath = options.configPath;
}
return projectPreprocessor.processTree(tree);
},
/**
* Generates a project and dependency tree via translators
*
* @param {Object} options Options
* @param {string} options.cwd Current working directory
* @param {string} options.configPath Path to configuration file
* @param {string} options.translator Translator to use
* @returns {Promise} Promise resolving to tree object
*/
generateDependencyTree: async function(options = {}) {
log.verbose("Building dependency tree...");
const cwd = options && options.cwd || ".";

/**
* Generates a project and dependency tree via translators
*
* @param {Object} options Options
* @param {string} options.cwd Current working directory
* @param {string} options.configPath Path to configuration file
* @param {string} options.translator Translator to use
* @returns {Promise} Promise resolving to tree object
*/
async function generateDependencyTree(options) {
log.verbose("Building dependency tree...");
const cwd = options && options.cwd || ".";
let translatorName = "npm"; // Default is npm translator
let translatorParams = [];
if (options.translator) {
const translatorOptions = options.translator.split(":");
translatorName = translatorOptions[0];
translatorParams = translatorOptions.slice(1);
}

let translatorName = "npm"; // Default is npm translator
let translatorParams = [];
if (options.translator) {
const translatorOptions = options.translator.split(":");
translatorName = translatorOptions[0];
translatorParams = translatorOptions.slice(1);
}
let translator;
switch (translatorName) {
case "static":
translator = require("./translators/static");
break;
case "npm":
translator = require("./translators/npm");
break;
default:
return Promise.reject(new Error(`Unknown translator ${translatorName}`));
}

let translator;
switch (translatorName) {
case "static":
translator = require("./translators/static");
break;
case "npm":
translator = require("./translators/npm");
break;
default:
throw new Error(`Unkown translator ${translatorName}`);
return translator.generateDependencyTree(cwd, translatorParams);
}

return translator.generateDependencyTree(cwd, translatorParams);
}

module.exports = {
generateProjectTree,
generateDependencyTree
};

module.exports = Normalizer;
4 changes: 2 additions & 2 deletions lib/translators/static.js
Expand Up @@ -17,13 +17,13 @@ const parseYaml = require("js-yaml").safeLoad;
* @param {Array} [translatorOptions] Configuration options
* @returns {Promise} Promise resolving with a dependency tree
*/
function generateDependencyTree(dirPath, translatorOptions) {
function generateDependencyTree(dirPath, translatorOptions = []) {
const depFilePath = translatorOptions[0] || path.join(dirPath, "projectDependencies.yaml");

return new Promise(function(resolve, reject) {
fs.readFile(depFilePath, function(err, buffer) {
if (err) {
reject(err);
reject(new Error(`[static translator] Failed to locate projectDependencies.json at path: "${dirPath}" - Error: ${err.message}`));
} else {
resolve(parseYaml(buffer.toString(), {
filename: depFilePath
Expand Down

0 comments on commit 595936d

Please sign in to comment.