test.mjs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env zx
  2. import "zx/globals";
  3. const submodulesDirectory = path.resolve(__dirname, "../submodules/");
  4. const clients = ["js", "rust"];
  5. let projects = fs
  6. .readdirSync(submodulesDirectory, { withFileTypes: true })
  7. .filter((dirent) => dirent.isDirectory())
  8. .map((dirent) => dirent.name)
  9. .filter((name) => !name.startsWith(".") && name !== "node_modules");
  10. if (process.argv[2])
  11. projects = projects.filter((project) => project.includes(process.argv[2]));
  12. cd(submodulesDirectory);
  13. console.log("Installing playground dependencies");
  14. await $`pnpm install`;
  15. for (const projectName of projects) {
  16. // Go inside the project.
  17. const projectDirectory = path.resolve(submodulesDirectory, projectName);
  18. cd(projectDirectory);
  19. const pkg = require(path.resolve(projectDirectory, "package.json"));
  20. // Test programs.
  21. if ("programs:test" in pkg.scripts) {
  22. await $`pnpm programs:test`;
  23. }
  24. // Test clients.
  25. for (const client of clients) {
  26. if (`clients:${client}:test` in pkg.scripts) {
  27. await $`pnpm clients:${client}:test`;
  28. }
  29. }
  30. }