blob: 23c662d247764eae2b433f451bb58a27f115b857 [file] [log] [blame] [edit]
// Copyright (c) 2023, 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:file_testing/file_testing.dart';
import 'package:native_assets_cli/native_assets_cli.dart';
import 'package:native_assets_cli/src/api/build_config.dart';
import 'package:test/test.dart';
void main() async {
late Uri tempUri;
late Uri outDirUri;
late String packageName;
late Uri packageRootUri;
late Uri fakeClang;
late Uri fakeLd;
late Uri fakeAr;
late Uri fakeCl;
late Uri fakeVcVars;
late Uri buildConfigUri;
late BuildConfig config1;
setUp(() async {
tempUri = (await Directory.systemTemp.createTemp()).uri;
outDirUri = tempUri.resolve('out1/');
await Directory.fromUri(outDirUri).create();
packageName = 'my_package';
packageRootUri = tempUri.resolve('$packageName/');
await Directory.fromUri(packageRootUri).create();
fakeClang = tempUri.resolve('fake_clang');
await File.fromUri(fakeClang).create();
fakeLd = tempUri.resolve('fake_ld');
await File.fromUri(fakeLd).create();
fakeAr = tempUri.resolve('fake_ar');
await File.fromUri(fakeAr).create();
fakeCl = tempUri.resolve('cl.exe');
await File.fromUri(fakeCl).create();
fakeVcVars = tempUri.resolve('vcvarsall.bat');
await File.fromUri(fakeVcVars).create();
config1 = BuildConfig.build(
outputDirectory: outDirUri,
packageName: packageName,
packageRoot: tempUri,
targetArchitecture: Architecture.arm64,
targetOS: OS.iOS,
targetIOSSdk: IOSSdk.iPhoneOS,
cCompiler: CCompilerConfig(
compiler: fakeClang,
linker: fakeLd,
archiver: fakeAr,
),
buildMode: BuildMode.release,
linkModePreference: LinkModePreference.preferDynamic,
);
final configJson = (config1 as BuildConfigImpl).toJsonString();
buildConfigUri = tempUri.resolve('build_config.json');
await File.fromUri(buildConfigUri).writeAsString(configJson);
});
test('build method', () async {
await build(['--config', buildConfigUri.toFilePath()],
(config, output) async {
output.addDependency(packageRootUri.resolve('foo'));
});
final buildOutputUri =
outDirUri.resolve((config1 as BuildConfigImpl).outputName);
expect(File.fromUri(buildOutputUri), exists);
});
}