diff --git a/package.json b/package.json index c8500e58..72dd6fa0 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ ] }, "dependencies": { - "chalk": "^3.0.0", + "chalk": "^5.4.1", "clang-format": "^1.4.0", "cmake-js": "^7.1.1", "semver": "^7.1.3" diff --git a/test_all.js b/test_all.js index 2782a90d..346bb3d7 100644 --- a/test_all.js +++ b/test_all.js @@ -1,7 +1,6 @@ const fs = require("fs"); const path = require("path"); const { execSync } = require("child_process"); -const chalk = require("chalk"); const semver = require("semver"); const examplesFolder = path.join(__dirname, "src"); @@ -21,70 +20,78 @@ function getAllExamples(pathToCheck) { return directoriesToTest; } -const passed = []; -const failedInstalls = []; -const noTest = []; -const failedTests = []; -for (directoryToTest of getAllExamples(examplesFolder)) { - console.log(chalk.green(`testing: ${directoryToTest}`)); - const pkgJson = require(path.join(directoryToTest, "package.json")); - if (pkgJson.engines && pkgJson.engines.node) { - const currentNodeVersion = process.versions.node; - const range = pkgJson.engines.node; - const engineOk = semver.satisfies(currentNodeVersion, range); - if (!engineOk) { - console.warn( - chalk.yellow( - `${directoryToTest} require Node.js ${range}, current is ${currentNodeVersion}, skipping` - ) - ); +const main = async () => { + const { default: chalk } = await import("chalk"); + const passed = []; + const failedInstalls = []; + const noTest = []; + const failedTests = []; + for (directoryToTest of getAllExamples(examplesFolder)) { + console.log(chalk.green(`testing: ${directoryToTest}`)); + const pkgJson = require(path.join(directoryToTest, "package.json")); + if (pkgJson.engines && pkgJson.engines.node) { + const currentNodeVersion = process.versions.node; + const range = pkgJson.engines.node; + const engineOk = semver.satisfies(currentNodeVersion, range); + if (!engineOk) { + console.warn( + chalk.yellow( + `${directoryToTest} require Node.js ${range}, current is ${currentNodeVersion}, skipping` + ) + ); + continue; + } + } + + try { + const stdout = execSync("npm install", { cwd: directoryToTest }); + console.log(stdout.toString()); + } catch (err) { + console.log(err); + failedInstalls.push(directoryToTest); continue; } - } - try { - const stdout = execSync("npm install", { cwd: directoryToTest }); - console.log(stdout.toString()); - } catch (err) { - console.log(err); - failedInstalls.push(directoryToTest); - continue; - } + let testCommand; + if ("scripts" in pkgJson && "start" in pkgJson.scripts) { + testCommand = "npm start"; + } else if ("scripts" in pkgJson && "test" in pkgJson.scripts) { + testCommand = "npm test"; + } else if ("main" in pkgJson) { + testCommand = `node ${pkgJson.main}` + } else { + noTest.push(directoryToTest); + continue; + } - let testCommand; - if ("scripts" in pkgJson && "start" in pkgJson.scripts) { - testCommand = "npm start"; - } else if ("scripts" in pkgJson && "test" in pkgJson.scripts) { - testCommand = "npm test"; - } else if ("main" in pkgJson) { - testCommand = `node ${pkgJson.main}` - } else { - noTest.push(directoryToTest); - continue; + try { + const stdout = execSync(testCommand, { cwd: directoryToTest }); + console.log(stdout.toString()); + passed.push(directoryToTest); + } catch (err) { + console.log(err); + failedTests.push(directoryToTest); + } } - try { - const stdout = execSync(testCommand, { cwd: directoryToTest }); - console.log(stdout.toString()); - passed.push(directoryToTest); - } catch (err) { - console.log(err); - failedTests.push(directoryToTest); - } -} + passed.map((dir) => console.log(chalk.green(`passed: ${dir}`))); -passed.map((dir) => console.log(chalk.green(`passed: ${dir}`))); + if (noTest.length > 0) { + console.warn(chalk.yellow("no test found:")); + noTest.map((dir) => console.warn(chalk.yellow(` ${dir}`))); + } -if (noTest.length > 0) { - console.warn(chalk.yellow("no test found:")); - noTest.map((dir) => console.warn(chalk.yellow(` ${dir}`))); -} + if (failedInstalls.length > 0) { + console.error(chalk.red("failed to install:")); + failedInstalls.map((dir) => console.warn(chalk.red(` ${dir}`))); + } + if (failedTests.length > 0) { + console.error(chalk.red("failed tests:")); + failedTests.map((dir) => console.warn(chalk.red(` ${dir}`))); + } +}; -if (failedInstalls.length > 0) { - console.error(chalk.red("failed to install:")); - failedInstalls.map((dir) => console.warn(chalk.red(` ${dir}`))); -} -if (failedTests.length > 0) { - console.error(chalk.red("failed tests:")); - failedTests.map((dir) => console.warn(chalk.red(` ${dir}`))); -} +main().catch(e => { + console.error(e); + process.exitCode = 1; +});