run method

  1. @override
FutureOr<int> run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
FutureOr<int> run() async {
  exitIfNotValidDartPackage();
  final config = await RocketConfig.fromPackageRoot(getPackageRoot());
  _reportGenerator = ReportGenerator(getPackageRoot());
  final bool shouldShardTests = argResults?['faster'] ?? false;
  final minCoverageOption = argResults?['min-coverage'] as String?;
  final failOnDrop = argResults?['fail-on-drop'] as bool? ?? false;

  if (argResults?.wasParsed('report') ?? false) {
    print(
      'ℹ️ Note: The --report flag is deprecated; reports are now generated automatically on every run.',
    );
  }

  final double? cliMinCoverage =
      minCoverageOption != null ? double.tryParse(minCoverageOption) : null;
  final double? minCoverage = cliMinCoverage ?? config.minCoverage;

  // Passing --min-coverage or --fail-on-drop or having config.minCoverage implies coverage collection
  runCoverage =
      (argResults?['coverage'] ?? false) || minCoverage != null || failOnDrop;
  buildReport = argResults?['report'] ?? true;

  if (shouldShardTests) {
    final testShards = await _shardTests(3);
    await _runShards(testShards);
  } else {
    await generateTestBundle(packageRoot: getPackageRoot());
    return await _runTestBundle(
      minCoverage: minCoverage,
      failOnDrop: failOnDrop,
    );
  }
  return 0;
}