You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
venv/PyCharm 2025.2.1.1/plugins/nodeJS/js/mocha-intellij/lib/mochaTreeUtil.js

96 lines
2.0 KiB

var intellijUtil = require('./mochaIntellijUtil')
, hasOwnProperty = Object.prototype.hasOwnProperty;
function getRoot(suiteOrTest) {
var node = suiteOrTest;
while (!node.root) {
node = node.parent;
}
return node;
}
function findRoot(runner) {
if (runner.suite != null) {
return getRoot(runner.suite)
}
if (runner.test != null) {
return getRoot(runner.test)
}
return null;
}
function processTests(node, callback) {
node.tests.forEach(function (test) {
callback(test);
});
node.suites.forEach(function (suite) {
processTests(suite, callback);
});
}
function forEachTest(runner, callback) {
var root = findRoot(runner);
if (!root) {
intellijUtil.writeToStderr("[IDE integration] Cannot find mocha tree root node");
}
else {
processTests(root, callback);
}
}
function finishTree(tree) {
tree.root.children.forEach(function (node) {
node.finishIfStarted();
});
}
var INTELLIJ_TEST_NODE = "intellij_test_node";
var INTELLIJ_SUITE_NODE = "intellij_suite_node";
/**
* @param {Object} test mocha test
* @returns {TestNode}
*/
function getNodeForTest(test) {
if (hasOwnProperty.call(test, INTELLIJ_TEST_NODE)) {
return test[INTELLIJ_TEST_NODE];
}
return null;
}
/**
* @param {Object} test mocha test
* @param {TestNode} testNode
*/
function setNodeForTest(test, testNode) {
test[INTELLIJ_TEST_NODE] = testNode;
}
/**
* @param {Object} suite mocha suite
* @returns {TestSuiteNode}
*/
function getNodeForSuite(suite) {
if (hasOwnProperty.call(suite, INTELLIJ_SUITE_NODE)) {
return suite[INTELLIJ_SUITE_NODE];
}
return null;
}
/**
* @param {Object} suite mocha suite
* @param {TestSuiteNode} suiteNode
*/
function setNodeForSuite(suite, suiteNode) {
suite[INTELLIJ_SUITE_NODE] = suiteNode;
}
module.exports.forEachTest = forEachTest;
module.exports.finishTree = finishTree;
module.exports.getNodeForTest = getNodeForTest;
module.exports.setNodeForTest = setNodeForTest;
module.exports.getNodeForSuite = getNodeForSuite;
module.exports.setNodeForSuite = setNodeForSuite;