Skip to content

Commit f0dc3e9

Browse files
authored
[native_assets_builder] Fix multiple invocations of the build runner (#103)
Closes #102.
1 parent 2598ac6 commit f0dc3e9

File tree

5 files changed

+74
-9
lines changed

5 files changed

+74
-9
lines changed

pkgs/native_assets_builder/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
([#98](https://github.com/dart-lang/native/issues/98)).
55
- Check asset ids on having having a package uri with the owning package
66
([#96](https://github.com/dart-lang/native/issues/96)).
7+
- `NativeAssetsBuildRunner` can now support multiple calls
8+
([#102](https://github.com/dart-lang/native/issues/102)).
79

810
## 0.1.0
911

pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class NativeAssetsBuildRunner {
4545
int? targetAndroidNdkApi,
4646
required bool includeParentEnvironment,
4747
}) async {
48-
assert(_metadata.isEmpty);
48+
_metadata.clear();
4949
final packageLayout =
5050
await PackageLayout.fromRootPackageRoot(workingDirectory);
5151
final packagesWithNativeAssets =
@@ -98,7 +98,6 @@ class NativeAssetsBuildRunner {
9898
required Uri workingDirectory,
9999
required bool includeParentEnvironment,
100100
}) async {
101-
assert(_metadata.isEmpty);
102101
final packageLayout =
103102
await PackageLayout.fromRootPackageRoot(workingDirectory);
104103
final packagesWithNativeAssets =
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
import 'package:native_assets_builder/src/build_runner/build_runner.dart';
6+
import 'package:native_assets_cli/native_assets_cli.dart';
7+
import 'package:test/test.dart';
8+
9+
import '../helpers.dart';
10+
import 'helpers.dart';
11+
12+
const Timeout longTimeout = Timeout(Duration(minutes: 5));
13+
14+
void main() async {
15+
test('multiple dryRun and build invocations', timeout: longTimeout, () async {
16+
await inTempDir((tempUri) async {
17+
await copyTestProjects(targetUri: tempUri);
18+
final packageUri = tempUri.resolve('package_reading_metadata/');
19+
20+
// First, run `pub get`, we need pub to resolve our dependencies.
21+
await runPubGet(
22+
workingDirectory: packageUri,
23+
logger: logger,
24+
);
25+
26+
final buildRunner = NativeAssetsBuildRunner(
27+
logger: logger,
28+
dartExecutable: dartExecutable,
29+
);
30+
31+
await buildRunner.dryRun(
32+
targetOs: Target.current.os,
33+
linkModePreference: LinkModePreference.dynamic,
34+
workingDirectory: packageUri,
35+
includeParentEnvironment: true,
36+
);
37+
await buildRunner.dryRun(
38+
targetOs: Target.current.os,
39+
linkModePreference: LinkModePreference.dynamic,
40+
workingDirectory: packageUri,
41+
includeParentEnvironment: true,
42+
);
43+
await buildRunner.build(
44+
buildMode: BuildMode.release,
45+
linkModePreference: LinkModePreference.dynamic,
46+
target: Target.current,
47+
workingDirectory: packageUri,
48+
includeParentEnvironment: true,
49+
);
50+
await buildRunner.build(
51+
buildMode: BuildMode.release,
52+
linkModePreference: LinkModePreference.dynamic,
53+
target: Target.current,
54+
workingDirectory: packageUri,
55+
includeParentEnvironment: true,
56+
);
57+
});
58+
});
59+
}

pkgs/native_assets_builder/test/data/package_reading_metadata/build.dart

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@ import 'package:native_assets_cli/native_assets_cli.dart';
88
void main(List<String> args) async {
99
final config = await Config.fromArgs(args: args);
1010
final buildConfig = BuildConfig.fromConfig(config);
11-
final metadata =
12-
buildConfig.dependencyMetadata!['package_with_metadata']!.metadata;
13-
final someValue = metadata['some_key'];
14-
assert(someValue != null);
15-
final someInt = metadata['some_int'];
16-
assert(someInt != null);
17-
print(metadata);
11+
if (!buildConfig.dryRun) {
12+
final metadata =
13+
buildConfig.dependencyMetadata!['package_with_metadata']!.metadata;
14+
final someValue = metadata['some_key'];
15+
assert(someValue != null);
16+
final someInt = metadata['some_int'];
17+
assert(someInt != null);
18+
print(metadata);
19+
} else {
20+
print('meta data not available in dry run');
21+
}
1822
}

pkgs/native_assets_cli/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## 0.1.1-wip
22

33
- Added topics.
4+
- Fixed metadata example.
45

56
## 0.1.0
67

0 commit comments

Comments
 (0)