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.
In plain terms
- 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.
Must act 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.
What you must change
Breaking10
Removes enableLowResourceMode parameters because low resource mode no longer exists.
enableLowResourceModetestBuilder no longer accepts reader and writer and instead returns a TestBuilderResult with the TestReaderWriter used.testBuilderTestBuilderResultTestReaderWriterresolveSources no longer automatically reads non-input files from the filesystem; specify them in nonInputsToReadFromFilesystem.resolveSourcesnonInputsToReadFromFilesystemRemoves
MultiAssetReader; load the source into one TestReaderWriter instead.MultiAssetReaderTestReaderWriterRemoves
StubAssetReader; use TestReaderWriter instead.StubAssetReaderTestReaderWriterRemoves the
tearDown parameter to resolveSources for keeping resolvers across multiple tests.resolveSourcestearDownTestReaderWriter.assetsRead now reflects only what was actually read; use inputsTracked and resolverEntrypointsTracked for build tracking.TestReaderWriter.assetsReadTestReaderWriter.inputsTrackedTestReaderWriter.resolverEntrypointsTrackedRefactors BuildCacheReader to BuildCacheAssetPathProvider.
BuildCacheReaderBuildCacheAssetPathProviderRefactors FileBasedAssetReader and FileBasedAssetWriter to ReaderWriter.
FileBasedAssetReaderFileBasedAssetWriterReaderWriterTests must use the new
TestReaderWriter instead of InMemoryAssetReader and InMemoryAssetWriter.TestReaderWriterInMemoryAssetReaderInMemoryAssetWriterPlatform2
Requires Dart 3.11.0.
Requires Dart 3.8.0.
API changes
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