run method
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);
}