getTestsFromDirs method

(Map<String, DetermineFlutterOrDart>?, ExitCode?) getTestsFromDirs(
  1. List<String> testDirs,
  2. Map<String, DetermineFlutterOrDart> dirTools, {
  3. required bool optimize,
})

Implementation

(
  Map<String, DetermineFlutterOrDart>? filesToTest,
  ExitCode? exitCode,
) getTestsFromDirs(
  List<String> testDirs,
  Map<String, DetermineFlutterOrDart> dirTools, {
  required bool optimize,
}) {
  logger.detail(
    '${optimize ? '' : 'NOT '}Optimizing ${testDirs.length} test files',
  );

  if (optimize) {
    final done = logger.progress('Optimizing test files');
    final result = prepareOptimizedFilesFromDirs(testDirs, dirTools);

    done.complete();

    if (result.isEmpty) {
      logger.err('No tests found');
      return (null, ExitCode.unavailable);
    }

    return (result, null);
  }

  logger.warn('Running tests without optimization');

  final dirsWithTests = <String>[];

  for (final MapEntry(key: dir, value: _) in dirTools.entries) {
    final result = Glob('**_test.dart')
        .listFileSystemSync(fs, followLinks: false, root: dir);

    final hasTests = result.any((e) => e is File);

    if (hasTests) {
      dirsWithTests.add(dir);
    }
  }

  final dirs = {
    for (final dir in dirsWithTests) dir: dirTools[dir]!,
  };

  if (dirs.isEmpty) {
    logger.err('No tests found');
    return (null, ExitCode.unavailable);
  }

  return (dirs, null);
}