* Tests packages in "publishOrder" * @param packages Packages * @param publishOrder string[][]
(packages: Packages, publishOrder: string[][])
| 647 | * @param publishOrder string[][] |
| 648 | */ |
| 649 | async function testPackages(packages: Packages, publishOrder: string[][]): Promise<void> { |
| 650 | const order = flatten(publishOrder) |
| 651 | |
| 652 | console.log(bold(`\nRun ${cyan('tests')}. Testing order:`)) |
| 653 | console.log(order) |
| 654 | |
| 655 | for (const pkgName of order) { |
| 656 | const pkg = packages[pkgName] |
| 657 | if (pkg.packageJson.scripts.test) { |
| 658 | console.log(`\nTesting ${magenta(pkg.name)}`) |
| 659 | await run(path.dirname(pkg.path), 'pnpm run test') |
| 660 | } else { |
| 661 | console.log(`\nSkipping ${magenta(pkg.name)}, as it doesn't have tests`) |
| 662 | } |
| 663 | } |
| 664 | } |
| 665 | |
| 666 | function flatten<T>(arr: T[][]): T[] { |
| 667 | return arr.reduce((acc, val) => acc.concat(val), []) |