Skip to content

Simplify test readers and writers #3865

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions _test_common/lib/common.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ import 'dart:convert';
import 'package:build/build.dart';
import 'package:crypto/crypto.dart';

export 'package:build_test/build_test.dart'
hide InMemoryAssetReader, InMemoryAssetWriter;
export 'package:build_test/build_test.dart';

export 'assets.dart';
export 'builders.dart';
Expand Down
6 changes: 3 additions & 3 deletions _test_common/lib/test_phases.dart
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ Future<TestBuildersResult> testBuilders(
if (checkBuildStatus) {
checkBuild(result,
outputs: outputs,
writer: readerWriter,
readerWriter: readerWriter,
status: status,
rootPackage: packageGraph.root.name,
expectedGeneratedDir: expectedGeneratedDir);
Expand All @@ -161,7 +161,7 @@ Future<TestBuildersResult> testBuilders(
/// validates the success and outputs of the build.
void checkBuild(BuildResult result,
{Map<String, Object>? outputs,
required InMemoryAssetWriter writer,
required InMemoryAssetReaderWriter readerWriter,
BuildStatus status = BuildStatus.success,
String rootPackage = 'a',
String expectedGeneratedDir = 'generated'}) {
Expand All @@ -186,7 +186,7 @@ void checkBuild(BuildResult result,
: id;

if (status == BuildStatus.success) {
checkOutputs(unhiddenOutputs, result.outputs, writer,
checkOutputs(unhiddenOutputs, result.outputs, readerWriter,
mapAssetIds: (id) => mapHidden(id, expectedGeneratedDir));
}
}
Expand Down
17 changes: 8 additions & 9 deletions build/test/builder/build_step_impl_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,10 @@ void main() {
});

group('with in memory file system', () {
late InMemoryAssetWriter writer;
late InMemoryAssetReader reader;
late InMemoryAssetReaderWriter readerWriter;

setUp(() {
writer = reader = InMemoryAssetReaderWriter();
readerWriter = InMemoryAssetReaderWriter();
});

test('tracks outputs created by a builder', () async {
Expand All @@ -87,13 +86,13 @@ void main() {
var inputs = {
primary: 'foo',
};
addAssets(inputs, writer);
addAssets(inputs, readerWriter);
var outputId = AssetId.parse('$primary.copy');
var buildStep = BuildStepImpl(
primary,
[outputId],
reader,
writer,
readerWriter,
readerWriter,
AnalyzerResolvers.custom(),
resourceManager,
_unsupported,
Expand All @@ -103,7 +102,7 @@ void main() {
await buildStep.complete();

// One output.
expect(writer.assets[outputId], decodedMatches('foo'));
expect(readerWriter.assets[outputId], decodedMatches('foo'));
});

group('resolve', () {
Expand All @@ -118,10 +117,10 @@ void main() {
library b;
''',
};
addAssets(inputs, writer);
addAssets(inputs, readerWriter);

var primary = makeAssetId('a|web/a.dart');
var buildStep = BuildStepImpl(primary, [], reader, writer,
var buildStep = BuildStepImpl(primary, [], readerWriter, readerWriter,
AnalyzerResolvers.custom(), resourceManager, _unsupported);
var resolver = buildStep.resolver;

Expand Down
19 changes: 9 additions & 10 deletions build/test/generate/run_builder_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import 'package:package_config/package_config_types.dart';
import 'package:test/test.dart';

void main() {
late InMemoryAssetWriter writer;
late InMemoryAssetReader reader;
late InMemoryAssetReaderWriter readerWriter;
final primary = makeAssetId('a|web/primary.txt');
final inputs = {
primary: 'foo',
Expand All @@ -29,16 +28,16 @@ void main() {
});
builder = TestBuilder(
extraWork: (buildStep, __) => buildStep.fetchResource(resource));
writer = reader = InMemoryAssetReaderWriter();
addAssets(inputs, writer);
readerWriter = InMemoryAssetReaderWriter();
addAssets(inputs, readerWriter);
});

group('Given a ResourceManager', () {
late TrackingResourceManager resourceManager;

setUp(() async {
resourceManager = TrackingResourceManager();
await runBuilder(builder, inputs.keys, reader, writer, null,
await runBuilder(builder, inputs.keys, readerWriter, readerWriter, null,
resourceManager: resourceManager);
});

Expand All @@ -62,7 +61,7 @@ void main() {

group('With a default ResourceManager', () {
setUp(() async {
await runBuilder(builder, inputs.keys, reader, writer, null);
await runBuilder(builder, inputs.keys, readerWriter, readerWriter, null);
});

test('disposes the default resource manager', () async {
Expand All @@ -72,7 +71,7 @@ void main() {

group('can resolve package config', () {
setUp(() {
writer.assets[makeAssetId('build|lib/foo.txt')] = [1, 2, 3];
readerWriter.assets[makeAssetId('build|lib/foo.txt')] = [1, 2, 3];

builder = TestBuilder(extraWork: (buildStep, __) async {
final config = await buildStep.packageConfig;
Expand All @@ -91,15 +90,15 @@ void main() {
});

test('from default', () async {
await runBuilder(builder, inputs.keys, reader, writer, null);
await runBuilder(builder, inputs.keys, readerWriter, readerWriter, null);
});

test('when provided', () async {
await runBuilder(
builder,
inputs.keys,
reader,
writer,
readerWriter,
readerWriter,
null,
packageConfig: PackageConfig([
Package(
Expand Down
2 changes: 1 addition & 1 deletion build_modules/test/decoding_cache_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ void main() {
final id = AssetId('foo', 'lib/foo');
final reader = InMemoryAssetReaderWriter()
..filesystem.writeAsStringSync(id, 'foo');
await cache.write(id, InMemoryAssetWriter(), 'bar');
await cache.write(id, InMemoryAssetReaderWriter(), 'bar');
expect(await cache.find(id, reader), 'bar');
expect(reader.inputTracker.assetsRead, contains(id),
reason: 'Should call canRead');
Expand Down
6 changes: 3 additions & 3 deletions build_modules/test/meta_module_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ import 'package:test/test.dart';
import 'matchers.dart';

void main() {
late InMemoryAssetReader reader;
late InMemoryAssetReaderWriter reader;
final defaultPlatform = DartPlatform.register('test', ['async']);

List<AssetId> makeAssets(Map<String, String> assetDescriptors) {
reader = InMemoryAssetReader();
reader = InMemoryAssetReaderWriter();
var assets = <AssetId>{};
assetDescriptors.forEach((serializedId, content) {
var id = AssetId.parse(serializedId);
Expand All @@ -30,7 +30,7 @@ void main() {
}

Future<MetaModule> metaModuleFromSources(
InMemoryAssetReader reader, List<AssetId> sources,
InMemoryAssetReaderWriter reader, List<AssetId> sources,
{DartPlatform? platform}) async {
platform ??= defaultPlatform;
final libraries = (await Future.wait(sources
Expand Down
6 changes: 3 additions & 3 deletions build_resolvers/test/resolver_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ void runTests(ResolversFactory resolversFactory) {
}, (resolver) async {
await resolver.libraryFor(entryPoint);
}, assetReaderChecks: (reader) {
expect(reader.inputTracker!.assetsRead, {
expect(reader.inputTracker.assetsRead, {
AssetId('a', 'web/main.dart'),
AssetId('a', 'web/main.dart.transitive_digest'),
AssetId('a', 'web/a.dart'),
Expand Down Expand Up @@ -181,7 +181,7 @@ void runTests(ResolversFactory resolversFactory) {
await resolveSources(sources, (resolver) async {
await resolver.libraryFor(entryPoint);
}, assetReaderChecks: (reader) {
expect(reader.inputTracker!.assetsRead, {
expect(reader.inputTracker.assetsRead, {
AssetId('a', 'web/main.dart'),
AssetId('a', 'web/main.dart.transitive_digest'),
AssetId('a', 'web/a.dart'),
Expand All @@ -194,7 +194,7 @@ void runTests(ResolversFactory resolversFactory) {
await resolveSources(sources, (resolver) async {
await resolver.libraryFor(entryPoint);
}, assetReaderChecks: (reader) {
expect(reader.inputTracker!.assetsRead, {
expect(reader.inputTracker.assetsRead, {
AssetId('a', 'web/main.dart'),
AssetId('a', 'web/main.dart.transitive_digest'),
AssetId('a', 'web/a.dart'),
Expand Down
8 changes: 4 additions & 4 deletions build_runner/test/generate/serve_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@ void main() {
var results = StreamQueue(handler.buildResults);
var result = await results.next;
checkBuild(result,
outputs: {'a|web/a.txt.copy': 'a'}, writer: readerWriter);
outputs: {'a|web/a.txt.copy': 'a'}, readerWriter: readerWriter);

await readerWriter.writeAsString(makeAssetId('a|web/a.txt'), 'b');

result = await results.next;
checkBuild(result,
outputs: {'a|web/a.txt.copy': 'b'}, writer: readerWriter);
outputs: {'a|web/a.txt.copy': 'b'}, readerWriter: readerWriter);
});

test('blocks serving files until the build is done', () async {
Expand All @@ -83,7 +83,7 @@ void main() {
buildBlocker1.complete();
var result = await results.next;
checkBuild(result,
outputs: {'a|web/a.txt.copy': 'a'}, writer: readerWriter);
outputs: {'a|web/a.txt.copy': 'a'}, readerWriter: readerWriter);

/// Next request completes right away.
var buildBlocker2 = Completer<void>();
Expand All @@ -109,7 +109,7 @@ void main() {
buildBlocker2.complete();
result = await results.next;
checkBuild(result,
outputs: {'a|web/a.txt.copy': 'b'}, writer: readerWriter);
outputs: {'a|web/a.txt.copy': 'b'}, readerWriter: readerWriter);

/// Make sure we actually see the final request finish.
return done.future;
Expand Down
Loading
Loading