private _report()

in infra/build.ts [87:142]


  private _report() {
    const output = this._outputs.sort((a, b) => {
      const ares = +a.message.success;
      const bres = +b.message.success;
      return bres - ares;
    });
    let result = '';
    let totalSuccess = 0;
    const regressed: string[] = [];
    const newPasses: string[] = [];

    output.forEach(row => {
      if (row.message.success) totalSuccess += 1;
      if (failingProjects.has(row.project) && row.message.success) {
        newPasses.push(row.project);
      } else if (!failingProjects.has(row.project) && !row.message.success) {
        regressed.push(row.project);
      }
      result += chalk.yellow('### ' + row.project + ' ###') + '\n';
      result +=
        'Status: ' +
        (row.message.success ? chalk.green('Tests passed') : chalk.red('Tests failed')) +
        '\n\n';
      result += row.message.success
        ? row.message.out
        : chalk.red(row.message.out);
      result += '\n\n';
    });

    console.log('\n');
    console.log(result);
    console.log(
      `Total: ${output.length}, ${chalk.green(
        'Success: ' + totalSuccess
      )}, ${chalk.red('Failed: ' + (output.length - totalSuccess))}`
    );

    if (regressed.length) {
      console.log(chalk.red('Regressions: ' + regressed.join(', ')));
    }
    if (newPasses.length) {
      console.log(chalk.green('New successes: ' + newPasses.join(', ')));
      console.log(' (Please remove these projects from \'failing-projects.json\'.)');
    }

    // Additionally, ensure `failingProjectsList` does not contain non-existent projects.
    const nonExistentFailingProjects =
      failingProjectsList.filter(name => !allProjectNames.includes(name));
    if (nonExistentFailingProjects.length > 0) {
      console.log(chalk.red(
        `\'failing-projects.json\' contains ${nonExistentFailingProjects.length} non-existent project(s): ` +
        nonExistentFailingProjects.join(', ')));
    }

    process.exit((regressed.length + newPasses.length + nonExistentFailingProjects.length > 0) ? 1 : 0);
  }