run method
Runs this command.
The return value is wrapped in a Future
if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
void run() async {
final String? apps = argResults?['apps']?.toString().snakeCase;
final String? feature = argResults?['feature']?.toString().snakeCase;
final String? page = argResults?['page']?.toString().snakeCase;
final pathApps = join(current, 'apps', '${apps}_test');
final pathFeature = apps?.isEmpty ?? true
? join(current, 'features', '$feature', 'test')
: join(pathApps, 'features', '$feature', 'test');
final pathPage = join(pathFeature, '${page}_test');
final bool? isCoverage = argResults?['coverage'] as bool?;
final argCoverage = isCoverage ?? false ? '--coverage' : '';
final String? reporter = argResults?['reporter'];
final argReporter = reporter != null ? '--reporter $reporter' : '';
final String? fileReporter = argResults?['file-reporter'];
final argFileReporter =
fileReporter != null ? '--file-reporter $fileReporter' : '';
if (apps == null && feature == null && page == null) {
await ModularHelper.runSequence(
(path) {
final pathFeature = join(path, 'test');
DirectoryHelper.createDir(pathFeature);
final pages = find(
'*_test',
workingDirectory: pathFeature,
recursive: false,
types: [Find.directory],
).toList();
for (var i = 0; i < pages.length; i++) {
final pathPage = join(pathFeature, pages[i]);
deleteAllBundleTest(pathPage);
createBundleTest(pathPage);
}
creatFeatureBundleTest(pathFeature);
},
ignorePubWorkspaces: true,
);
} else if (page != null) {
if (feature == null) {
StatusHelper.failed('Feature is required');
} else if (!exists(pathFeature)) {
StatusHelper.failed('Feature not found');
} else if (!exists(pathPage)) {
StatusHelper.failed('Page not found');
}
DirectoryHelper.createDir(pathFeature);
deleteAllBundleTest(pathPage);
createBundleTest(pathPage);
creatFeatureBundleTest(pathFeature);
} else if (feature != null) {
if (!exists(pathFeature)) {
StatusHelper.failed('Feature not found');
}
DirectoryHelper.createDir(pathFeature);
final pages = find(
'*_test',
workingDirectory: pathFeature,
recursive: false,
types: [Find.directory],
).toList();
for (var i = 0; i < pages.length; i++) {
final pathPage = join(pathFeature, pages[i]);
deleteAllBundleTest(pathPage);
createBundleTest(pathPage);
}
creatFeatureBundleTest(pathFeature);
} else if (apps != null) {
StatusHelper.failed('This feature is not yet available');
}
final argMorphemeYaml = argResults.getOptionMorphemeYaml();
YamlHelper.validateMorphemeYaml(argMorphemeYaml);
final yaml = YamlHelper.loadFileYaml(argMorphemeYaml);
String workingDirCoverage = current;
if (page != null) {
workingDirCoverage = join(current, 'features', feature);
await FlutterHelper.start(
'test test/${page}_test/bundle_test.dart --no-pub $argCoverage $argReporter $argFileReporter',
workingDirectory: workingDirCoverage,
);
} else if (feature != null) {
workingDirCoverage = join(current, 'features', feature);
await FlutterHelper.start(
'test test/bundle_test.dart --no-pub $argCoverage $argReporter $argFileReporter',
workingDirectory: join(current, 'features', feature),
);
} else {
await ModularHelper.test(
concurrent: yaml.concurrent,
isCoverage: isCoverage ?? false,
reporter: reporter,
fileReporter: fileReporter,
);
}
if (isCoverage ?? false) {
combineLcovToRoot(
workingDirectory: workingDirCoverage,
isDeleteRootCoverageFirst: feature != null,
);
}
StatusHelper.success('morpheme test');
}