Skip to content

Commit 84020e6

Browse files
authored
Improve build_test testBuilders package setup. (#4069)
1 parent 8762e09 commit 84020e6

File tree

5 files changed

+59
-5
lines changed

5 files changed

+59
-5
lines changed

build_test/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 3.1.2
2+
3+
- Fixes when passing a `readerWriter` to `testBuilders`: don't count initial
4+
assets as outputs; do set up packages for initial assets; only apply builders
5+
to packages mentioned in `sourceAssets`.
6+
17
## 3.1.1
28

39
- Bug fix: stop parsing `testBuilder` asset paths as globs.

build_test/lib/src/in_memory_reader_writer.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,8 @@ class _ReaderWriterTestingImpl implements ReaderWriterTesting {
191191
Glob('**'),
192192
package: package.name,
193193
)) {
194-
await _readerWriter.writeAsBytes(id, await reader.readAsBytes(id));
194+
// Write via `testing` so it's not tracked as a builder output.
195+
_readerWriter.testing.writeBytes(id, await reader.readAsBytes(id));
195196
}
196197
}
197198
}

build_test/lib/src/test_builder.dart

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,16 @@ Future<TestBuilderResult> testBuilders(
237237
for (var descriptor in sourceAssets.keys) makeAssetId(descriptor),
238238
};
239239

240-
var allPackages = {for (var id in inputIds) id.package};
240+
// Differentiate input packages and all packages. Builders run on input
241+
// packages; they can read/resolve all packages. Additional packages are
242+
// supplied by passing a `readerWriter`.
243+
var inputPackages = {for (var id in inputIds) id.package};
244+
final allPackages = inputPackages.toSet();
245+
if (readerWriter != null) {
246+
for (final asset in readerWriter.testing.assets) {
247+
allPackages.add(asset.package);
248+
}
249+
}
241250
rootPackage ??= allPackages.first;
242251

243252
readerWriter ??= TestReaderWriter(rootPackage: rootPackage);
@@ -302,7 +311,7 @@ Future<TestBuilderResult> testBuilders(
302311
// picking up `lib/**` but not all files in the package root.
303312
testingBuilderConfig
304313
? {
305-
for (final package in allPackages)
314+
for (final package in inputPackages)
306315
package: BuildConfig.fromMap(package, [], {
307316
'targets': {
308317
package: {
@@ -334,7 +343,7 @@ Future<TestBuilderResult> testBuilders(
334343
apply(
335344
builderName(builder),
336345
[(_) => builder],
337-
(package) => package.name != r'$sdk',
346+
(p) => inputPackages.contains(p.name),
338347
isOptional: optionalBuilders.contains(builder),
339348
hideOutput: !visibleOutputBuilders.contains(builder),
340349
),

build_test/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: build_test
22
description: Utilities for writing unit tests of Builders.
3-
version: 3.1.1
3+
version: 3.1.2
44
repository: https://github.com/dart-lang/build/tree/master/build_test
55
resolution: workspace
66

build_test/test/test_builder_test.dart

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'dart:async';
77
import 'package:build/build.dart';
88
import 'package:build_test/build_test.dart';
99
import 'package:glob/glob.dart';
10+
import 'package:logging/logging.dart';
1011
import 'package:package_config/package_config.dart';
1112
import 'package:test/test.dart';
1213

@@ -368,6 +369,43 @@ Future<void> main() async {
368369
outputs: {'a|[.out': 'input'},
369370
);
370371
});
372+
373+
test('resolve isolate source', () async {
374+
final readerWriter = TestReaderWriter(rootPackage: 'a');
375+
await readerWriter.testing.loadIsolateSources();
376+
final logs = <String>[];
377+
await testBuilders(
378+
[
379+
TestBuilder(
380+
build: (buildStep, _) async {
381+
await buildStep.resolver.libraryFor(
382+
AssetId('glob', 'lib/glob.dart'),
383+
);
384+
await buildStep.writeAsString(
385+
buildStep.inputId.changeExtension('.g.dart'),
386+
'',
387+
);
388+
},
389+
buildExtensions: {
390+
'.dart': ['.g.dart'],
391+
},
392+
),
393+
],
394+
{
395+
'test_package|lib/a.dart': '''
396+
import 'package:glob/glob.dart';
397+
''',
398+
},
399+
readerWriter: readerWriter,
400+
onLog: (record) {
401+
if (record.level == Level.SEVERE) {
402+
logs.add(record.toString());
403+
}
404+
},
405+
outputs: {'test_package|lib/a.g.dart': ''},
406+
);
407+
expect(logs, isEmpty);
408+
});
371409
}
372410

373411
/// Concatenates the contents of multiple text files into a single output.

0 commit comments

Comments
 (0)