blob: 810f38d5e4dc1e5b1a9ac679d74665e9cfcc1e30 [file] [log] [blame] [edit]
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:io';
import 'package:hooks/hooks.dart';
import 'package:test/test.dart';
void main() {
late Uri tempUri;
late Uri outDirUri;
late Uri outDirSharedUri;
late String packageName;
late Uri packageRootUri;
setUp(() async {
tempUri = (await Directory.systemTemp.createTemp()).uri;
outDirUri = tempUri.resolve('out/');
await Directory.fromUri(outDirUri).create();
outDirSharedUri = tempUri.resolve('out_shared/');
await Directory.fromUri(outDirSharedUri).create();
packageName = 'my_package';
packageRootUri = tempUri.resolve('$packageName/');
await Directory.fromUri(packageRootUri).create();
});
tearDown(() async {
await Directory.fromUri(tempUri).delete(recursive: true);
});
BuildInput makeBuildInput() {
final inputBuilder = BuildInputBuilder()
..setupShared(
packageName: packageName,
packageRoot: tempUri,
outputFile: tempUri.resolve('output.json'),
outputDirectoryShared: outDirSharedUri,
)
..config.setupBuild(linkingEnabled: false);
return inputBuilder.build();
}
test('linking not enabled', () async {
final input = makeBuildInput();
final outputBuilder = BuildOutputBuilder();
final assetFile = File.fromUri(outDirUri.resolve('foo.dylib'));
await assetFile.writeAsBytes([1, 2, 3]);
outputBuilder.assets.addEncodedAsset(
EncodedAsset('my-asset-type', {}),
routing: const ToLinkHook('bar'),
);
final errors = await ProtocolBase.validateBuildOutput(
input,
outputBuilder.build(),
);
expect(errors, contains(contains('linkingEnabled is false')));
});
test('supported asset type', () async {
final input = makeBuildInput();
final outputBuilder = BuildOutputBuilder();
final assetFile = File.fromUri(outDirUri.resolve('foo.dylib'));
await assetFile.writeAsBytes([1, 2, 3]);
outputBuilder.assets.addEncodedAsset(EncodedAsset('baz', {}));
final errors = await ProtocolBase.validateBuildOutput(
input,
outputBuilder.build(),
);
expect(errors, contains(contains('"baz" is not a supported asset type')));
});
}