run method

  1. @override
Future<bool> run()
override

Runs this command.

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

Implementation

@override
Future<bool> run() async {
  final indAug = '   ';
  final dirPath = targetDir;
  final ind = args['indent'] ?? inRs;
  final baseName = path.basename(dirPath);
  final useCoverage = args['coverage'] ?? true;
  final blkLogger = logger.collapsibleBlock('🧪 Testing $baseName', ind);

  final hasTestDir = Directory(path.join(targetDir, 'test')).existsSync();
  if (!hasTestDir) {
    blkLogger.printSkipped(blkLogger.useMemo('missing test directory'));
    return true;
  }

  final usesTests =
      (Utils.getPubSpecValue(targetDir, 'dev_dependencies.test') ??
              Utils.getPubSpecValue(targetDir, 'dependencies.test')) !=
          null;
  if (!usesTests) {
    blkLogger.printSkipped(blkLogger.useMemo('missing test in pubspec'));
    return true;
  }

  bool result = _runTests(blkLogger, useCoverage, dirPath, ind + indAug);
  if (result) {
    result = _formatLcov(
      blkLogger,
      useCoverage,
      baseName,
      ind + indAug,
      dirPath,
    );
  }
  if (result) {
    result = _formatHtml(
      blkLogger,
      useCoverage,
      baseName,
      ind + indAug,
      dirPath,
    );
  }

  return blkLogger.close(result);
}