testBuilders function

Future<TestBuilderResult> testBuilders(
  1. Iterable<Builder> builders,
  2. Map<String, Object> sourceAssets, {
  3. Iterable<PostProcessBuilder> postProcessBuilders = const [],
  4. Set<String>? generateFor,
  5. bool isInput(
    1. String assetId
    )?,
  6. String? rootPackage,
  7. Map<String, Object>? outputs,
  8. void onLog(
    1. LogRecord log
    )?,
  9. void reportUnusedAssetsForInput(
    1. AssetId,
    2. Iterable<AssetId>
    )?,
  10. PackageConfig? packageConfig,
  11. Resolvers? resolvers,
  12. Set<Builder> optionalBuilders = const {},
  13. Set<Builder> visibleOutputBuilders = const {},
  14. Set<PostProcessBuilder> visibleOutputPostProcessBuilders = const {},
  15. Set<Builder> addsToLibraryBuilders = const {},
  16. Map<Builder, List<String>> appliesBuilders = const {},
  17. bool testingBuilderConfig = true,
  18. TestReaderWriter? readerWriter,
  19. bool verbose = false,
  20. bool flattenOutput = false,
})

Runs builders and postProcessBuilders in a test environment.

Calls testBuilderFactories with factories that each return a member of builders and postProcessBuilders, see that method for details.

By default builders will be configured with a test-oriented builder config that causes builders to run for all files. To instead use the default build_runner config pass testingBuilderConfig false. To read build.yaml files passed in sourceAssets, use testBuilderFactories directly.

To access the outputs via testing.readString using the same AssetIds as returned by the outputs of this method, set flattenOutput to true. See TestReaderWriter for details.

Implementation

Future<TestBuilderResult> testBuilders(
  Iterable<Builder> builders,
  Map<String, /*String|List<int>*/ Object> sourceAssets, {
  Iterable<PostProcessBuilder> postProcessBuilders = const [],
  Set<String>? generateFor,
  bool Function(String assetId)? isInput,
  String? rootPackage,
  Map<String, /*String|List<int>|Matcher<List<int>>*/ Object>? outputs,
  void Function(LogRecord log)? onLog,
  void Function(AssetId, Iterable<AssetId>)? reportUnusedAssetsForInput,
  PackageConfig? packageConfig,
  Resolvers? resolvers,
  Set<Builder> optionalBuilders = const {},
  Set<Builder> visibleOutputBuilders = const {},
  Set<PostProcessBuilder> visibleOutputPostProcessBuilders = const {},
  Set<Builder> addsToLibraryBuilders = const {},
  Map<Builder, List<String>> appliesBuilders = const {},
  bool testingBuilderConfig = true,
  TestReaderWriter? readerWriter,
  bool verbose = false,
  bool flattenOutput = false,
}) {
  final builderFactories = <BuilderFactory>[];
  final optionalBuilderFactories = Set<BuilderFactory>.identity();
  final visibleOutputBuilderFactories = Set<BuilderFactory>.identity();
  final addsToLibraryBuilderFactories = Set<BuilderFactory>.identity();
  final appliesBuildersToFactories = <BuilderFactory, List<String>>{};
  for (final builder in builders) {
    Builder builderFactory(_) => builder;
    builderFactories.add(builderFactory);
    if (optionalBuilders.contains(builder)) {
      optionalBuilderFactories.add(builderFactory);
    }
    if (visibleOutputBuilders.contains(builder)) {
      visibleOutputBuilderFactories.add(builderFactory);
    }
    if (addsToLibraryBuilders.contains(builder)) {
      addsToLibraryBuilderFactories.add(builderFactory);
    }
    if (appliesBuilders.containsKey(builder)) {
      appliesBuildersToFactories[builderFactory] = appliesBuilders[builder]!;
    }
  }
  final postProcessBuilderFactories = <PostProcessBuilderFactory>[];
  final visibleOutputPostProcessBuilderFactories =
      Set<PostProcessBuilderFactory>.identity();
  for (final postProcessBuilder in postProcessBuilders) {
    PostProcessBuilder factory(_) => postProcessBuilder;
    postProcessBuilderFactories.add(factory);
    if (visibleOutputPostProcessBuilders.contains(postProcessBuilder)) {
      visibleOutputPostProcessBuilderFactories.add(factory);
    }
  }
  return testBuilderFactories(
    builderFactories,
    sourceAssets,
    postProcessBuilderFactories: postProcessBuilderFactories,
    generateFor: generateFor,
    isInput: isInput,
    rootPackage: rootPackage,
    outputs: outputs,
    onLog: onLog,
    reportUnusedAssetsForInput: reportUnusedAssetsForInput,
    packageConfig: packageConfig,
    resolvers: resolvers,
    optionalBuilderFactories: optionalBuilderFactories,
    visibleOutputBuilderFactories: visibleOutputBuilderFactories,
    visibleOutputPostProcessBuilderFactories:
        visibleOutputPostProcessBuilderFactories,
    addsToLibraryBuilderFactories: addsToLibraryBuilderFactories,
    appliesBuilders: appliesBuildersToFactories,
    testingBuilderConfig: testingBuilderConfig,
    readerWriter: readerWriter,
    verbose: verbose,
    flattenOutput: flattenOutput,
  );
}