Skip to content

Upgrading build_test 2 to 3

Breaking2.2.3 → 3.5.23Breaking10Platform2New21Changed46Fixed8Other7

Fetching 39 releases from GitHub…36 / 39
BreakingUpgrade verdict

10 breaking changes and 2 platform requirement changes.

  • Any code that passed the low resource mode option must stop using it, since that mode is gone.
  • testBuilder now gives back the reader/writer it used rather than taking them as arguments.
  • Tests that relied on resolveSources reading extra files from disk must now list those files explicitly.
  • The MultiAssetReader class is gone; put all sources into a single TestReaderWriter.
Top 5 of 12 that need code or config changes

Dart SDK requirement changed in 3.5.17: ^3.6.0 → ^3.11.0.

Adds build_runner 2.17.1, built_collection >=5.1.1 <7.0.0.

Drops async, build_resolvers.

Moves build ^2.1.0 → ^5.0.0, package_config ^2.0.0 → >=2.0.0 <4.0.0. Your build may pick other versions.

Breaking10
Removes enableLowResourceMode parameters because low resource mode no longer exists.
enableLowResourceMode
testBuilder no longer accepts reader and writer and instead returns a TestBuilderResult with the TestReaderWriter used.
testBuilderTestBuilderResultTestReaderWriter
resolveSources no longer automatically reads non-input files from the filesystem; specify them in nonInputsToReadFromFilesystem.
resolveSourcesnonInputsToReadFromFilesystem
Removes MultiAssetReader; load the source into one TestReaderWriter instead.
MultiAssetReaderTestReaderWriter
Removes StubAssetReader; use TestReaderWriter instead.
StubAssetReaderTestReaderWriter
Removes the tearDown parameter to resolveSources for keeping resolvers across multiple tests.
resolveSourcestearDown
TestReaderWriter.assetsRead now reflects only what was actually read; use inputsTracked and resolverEntrypointsTracked for build tracking.
TestReaderWriter.assetsReadTestReaderWriter.inputsTrackedTestReaderWriter.resolverEntrypointsTracked
Refactors BuildCacheReader to BuildCacheAssetPathProvider.
BuildCacheReaderBuildCacheAssetPathProvider
Refactors FileBasedAssetReader and FileBasedAssetWriter to ReaderWriter.
FileBasedAssetReaderFileBasedAssetWriterReaderWriter
Tests must use the new TestReaderWriter instead of InMemoryAssetReader and InMemoryAssetWriter.
TestReaderWriterInMemoryAssetReaderInMemoryAssetWriter
Platform2
Requires Dart 3.11.0.
Requires Dart 3.8.0.

Generated by DepDelta from published Dart source. Not mixed with prose notes.

  • removed: class InMemoryAssetReader extends AssetReader implements MultiPackageAssetReader, RecordingAssetReader
  • removed: class InMemoryAssetWriter implements RecordingAssetWriter
  • removed: class MultiAssetReader extends AssetReader implements MultiPackageAssetReader
  • removed: class RecordingAssetReader: abstract implements AssetReader
  • removed: class RecordingAssetWriter: abstract implements AssetWriter
  • removed: class StubAssetReader extends AssetReader implements MultiPackageAssetReader
  • removed: class StubAssetWriter implements AssetWriter
  • removed: class WrittenAssetReader extends MultiPackageAssetReader
  • removed: ctor InMemoryAssetReader({Map<AssetId, dynamic>? sourceAssets, this.rootPackage})
  • removed: ctor InMemoryAssetReader.shareAssetCache(this.assets, {this.rootPackage})
  • removed: ctor InMemoryAssetWriter()
  • removed: ctor MultiAssetReader(this._readers)
  • removed: ctor StubAssetReader()
  • removed: ctor StubAssetWriter()
  • removed: ctor WrittenAssetReader(this.source, [this.filterSpy])
  • removed: field InMemoryAssetReader.assets: final Map<AssetId, List<int>>
  • removed: field InMemoryAssetReader.assetsRead: final Set<AssetId>
  • removed: field InMemoryAssetReader.rootPackage: final String?
  • removed: field InMemoryAssetWriter.assets: final Map<AssetId, List<int>>
  • removed: field WrittenAssetReader.filterSpy: final AssetWriterSpy?
  • removed: field WrittenAssetReader.source: final RecordingAssetWriter
  • removed: get RecordingAssetReader.assetsRead: Iterable<AssetId>
  • removed: get RecordingAssetWriter.assets: Map<AssetId, List<int>>
  • removed: method InMemoryAssetReader.cacheBytesAsset(AssetId id, List<int> bytes): void
  • removed: method InMemoryAssetReader.cacheStringAsset(AssetId id, String contents, {Encoding? encoding}): void
  • removed: method InMemoryAssetReader.canRead(AssetId id): Future<bool>
  • removed: method InMemoryAssetReader.findAssets(Glob glob, {String? package}): Stream<AssetId>
  • removed: method InMemoryAssetReader.readAsBytes(AssetId id): Future<List<int>>
  • removed: method InMemoryAssetReader.readAsString(AssetId id, {Encoding encoding = …}): Future<String>
  • removed: method InMemoryAssetWriter.writeAsBytes(AssetId id, List<int> bytes): Future
  • removed: method InMemoryAssetWriter.writeAsString(AssetId id, String contents, {Encoding encoding = …}): Future
  • removed: method MultiAssetReader.canRead(AssetId id): Future<bool>
  • removed: method MultiAssetReader.findAssets(Glob glob, {String? package}): Stream<AssetId>
  • removed: method MultiAssetReader.readAsBytes(AssetId id): Future<List<int>>
  • removed: method MultiAssetReader.readAsString(AssetId id, {Encoding encoding = …}): Future<String>
  • removed: method StubAssetReader.canRead(AssetId id): Future<bool>
  • removed: method StubAssetReader.digest(AssetId id): Future<Digest>
  • removed: method StubAssetReader.findAssets(Glob glob, {String? package}): Stream<AssetId>
  • removed: method StubAssetReader.readAsBytes(AssetId id): Future<List<int>>
  • removed: method StubAssetReader.readAsString(AssetId id, {Encoding encoding = …}): Future<String>
  • removed: method StubAssetWriter.writeAsBytes(_, __): Future
  • removed: method StubAssetWriter.writeAsString(_, __, {Encoding encoding = …}): Future
  • removed: method WrittenAssetReader.canRead(AssetId id): Future<bool>
  • removed: method WrittenAssetReader.findAssets(Glob glob, {String? package}): Stream<AssetId>
  • removed: method WrittenAssetReader.readAsBytes(AssetId id): Future<List<int>>
  • removed: method WrittenAssetReader.readAsString(AssetId id, {Encoding encoding = …}): Future<String>
  • changed: class PackageAssetReader extends AssetReader implements MultiPackageAssetReader → class PackageAssetReader
  • changed: ctor PackageAssetReader(this._packageConfig, [this._rootPackage]) → ctor PackageAssetReader(this.packageConfig, [this._rootPackage])
  • changed: ctor PackageAssetReader.forPackageRoot(String packageRoot, [String? rootPackage]) → ctor PackageAssetReader.forPackageRoot( String packageRoot, [ String? rootPackage, ])
  • changed: ctor PackageAssetReader.forPackages(Map<String, String> packageToPath, [String? rootPackage]) → ctor PackageAssetReader.forPackages( Map<String, String> packageToPath, [ String? rootPackage, ])
  • changed: ctor TestBuilder({ Map<String, List<String>>? buildExtensions, BuildBehavior? build, BuildBehavior? extraWork, }) → ctor TestBuilder({ Map<String, List<String>>? buildExtensions, BuildBehavior? build, BuildBehavior? extraWork, this.name = …, })
  • changed: function addAssets(Map<AssetId, dynamic> assets, InMemoryAssetWriter writer): void → function addAssets(Map<AssetId, dynamic> assets, TestReaderWriter writer): void
  • changed: function appendExtension(String postFix, {String from = …, int numCopies = …}): Map<String, List<String>> → function appendExtension( String postFix, { String from = …, int numCopies = …, }): Map<String, List<String>>
  • changed: function checkOutputs( Map<String, Object>? outputs, Iterable<AssetId> actualAssets, RecordingAssetWriter writer, {AssetId Function(AssetId id) mapAssetIds = …}): void → function checkOutputs( Map<String, Object>? outputs, Iterable<AssetId> actualAssets, TestReaderWriter writer, { AssetId Function(AssetId id) mapAssetIds = …, }): void
  • changed: function resolveAsset<T>( AssetId inputId, FutureOr<T> Function(Resolver resolver) action, { PackageConfig? packageConfig, Future<void>? tearDown, Resolvers? resolvers, }): Future<T> → function resolveAsset<T>( AssetId inputId, FutureOr<T> Function(Resolver resolver) action, { PackageConfig? packageConfig, Set<AssetId>? nonInputsToReadFromFilesystem, bool? readAllSourcesFromFilesystem, Future<void>? tearDown, Resolvers? resolvers, }): Future<T>
  • changed: function resolveSource<T>( String inputSource, FutureOr<T> Function(Resolver resolver) action, { AssetId? inputId, PackageConfig? packageConfig, Future<void>? tearDown, Resolvers? resolvers, }): Future<T> → function resolveSource<T>( String inputSource, FutureOr<T> Function(Resolver resolver) action, { AssetId? inputId, PackageConfig? packageConfig, Set<AssetId>? nonInputsToReadFromFilesystem, bool? readAllSourcesFromFilesystem, Resolvers? resolvers, }): Future<T>
  • changed: function resolveSources<T>( Map<String, String> inputs, FutureOr<T> Function(Resolver resolver) action, { PackageConfig? packageConfig, String? resolverFor, String? rootPackage, Future<void>? tearDown, Resolvers? resolvers, }): Future<T> → function resolveSources<T>( Map<String, String> inputs, FutureOr<T> Function(Resolver resolver) action, { PackageConfig? packageConfig, Set<AssetId>? nonInputsToReadFromFilesystem, bool? readAllSourcesFromFilesystem, String? resolverFor, String? rootPackage, FutureOr<void> Function(TestReaderWriter)? assetReaderChecks, Future<void>? tearDown, Resolvers? resolvers, }): Future<T>
  • changed: function testBuilder( Builder builder, Map<String, Object> sourceAssets, {Set<String>? generateFor, bool Function(String assetId)? isInput, String? rootPackage, MultiPackageAssetReader? reader, RecordingAssetWriter? writer, Map<String, Object>? outputs, void Function(LogRecord log)? onLog, void Function(AssetId, Iterable<AssetId>)? reportUnusedAssetsForInput, PackageConfig? packageConfig}): Future → function testBuilder( Builder builder, Map<String, Object> sourceAssets, { Set<String>? generateFor, bool Function(String assetId)? isInput, String? rootPackage, Map<String, Object>? outputs, void Function(LogRecord log)? onLog, void Function(AssetId, Iterable<AssetId>)? reportUnusedAssetsForInput, PackageConfig? packageConfig, Resolvers? resolvers, TestReaderWriter? readerWriter, bool verbose =…
  • changed: static method PackageAssetReader.currentIsolate( {String? rootPackage}): Future<PackageAssetReader> → static method PackageAssetReader.currentIsolate({ String? rootPackage, }): Future<PackageAssetReader>
  • changed: typedef BuildBehavior = FutureOr Function( BuildStep buildStep, Map<String, List<String>> buildExtensions) → typedef BuildBehavior = FutureOr Function( BuildStep buildStep, Map<String, List<String>> buildExtensions, )
  • added: class ReaderWriterTesting: abstract interface
  • added: class TestBuilderResult
  • added: class TestReaderWriter: abstract interface implements AssetReader, AssetWriter
  • added: ctor TestBuilderResult({required this.buildResult, required this.readerWriter})
  • added: ctor TestReaderWriter({String? rootPackage, bool flattenOutput = …})
  • added: field PackageAssetReader.packageConfig: final PackageConfig
  • added: field TestBuilder.name: final String
  • added: field TestBuilderResult.buildResult: final BuildResult
  • added: field TestBuilderResult.readerWriter: final TestReaderWriter
  • added: function testBuilderFactories( Iterable<BuilderFactory> builderFactories, Map<String, Object> sourceAssets, { Iterable<PostProcessBuilderFactory> postProcessBuilderFactories = …, Set<String>? generateFor, bool Function(String assetId)? isInput, String? rootPackage, Map<String, Object>? outputs, void Function(LogRecord log)? onLog, void Function(AssetId, Iterable<AssetId>)? reportUnusedAssetsForIn…
  • added: function testBuilders( Iterable<Builder> builders, Map<String, Object> sourceAssets, { Iterable<PostProcessBuilder> postProcessBuilders = …, Set<String>? generateFor, bool Function(String assetId)? isInput, String? rootPackage, Map<String, Object>? outputs, void Function(LogRecord log)? onLog, void Function(AssetId, Iterable<AssetId>)? reportUnusedAssetsForInput, PackageConfig? packageConfig, Res…
  • added: get ReaderWriterTesting.assets: Iterable<AssetId>
  • added: get ReaderWriterTesting.assetsRead: Iterable<AssetId>
  • added: get ReaderWriterTesting.assetsWritten: Iterable<AssetId>
  • added: get ReaderWriterTesting.inputsTracked: Iterable<AssetId>
  • added: get ReaderWriterTesting.resolverEntrypointsTracked: Iterable<AssetId>
  • added: get TestBuilderResult.errors: BuiltList<String>
  • added: get TestBuilderResult.outputs: BuiltList<AssetId>
  • added: get TestBuilderResult.succeeded: bool
  • added: get TestReaderWriter.testing: ReaderWriterTesting
  • added: method ReaderWriterTesting.delete(AssetId id): void
  • added: method ReaderWriterTesting.exists(AssetId id): bool
  • added: method ReaderWriterTesting.inputsTrackedFor({ AssetId? primaryInput, String? builderLabel, }): Iterable<AssetId>
  • added: method ReaderWriterTesting.loadIsolateSources(): Future<void>
  • added: method ReaderWriterTesting.readBytes(AssetId id): Uint8List
  • added: method ReaderWriterTesting.readString(AssetId id): String
  • added: method ReaderWriterTesting.resolverEntrypointsTrackedFor({ AssetId? primaryInput, String? builderLabel, }): Iterable<AssetId>
  • added: method ReaderWriterTesting.writeBytes(AssetId id, List<int> contents): void
  • added: method ReaderWriterTesting.writeString(AssetId id, String contents): void
  • added: method TestBuilder.toString(): String
  • changed: function debugIndexBuilder(_): DebugIndexBuilder → function debugIndexBuilder(BuilderOptions _): DebugIndexBuilder
  • changed: function debugTestBuilder(_): DebugTestBuilder → function debugTestBuilder(BuilderOptions _): DebugTestBuilder
  • changed: function testBootstrapBuilder(_): TestBootstrapBuilder → function testBootstrapBuilder(BuilderOptions _): TestBootstrapBuilder