Skip to content

Commit

Permalink
[native_*] Unify CCompilerConfig handling in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dcharkes committed Sep 6, 2024
1 parent 7d82e8e commit 72553db
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 78 deletions.
25 changes: 18 additions & 7 deletions pkgs/native_assets_builder/test/helpers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -128,38 +128,49 @@ String unparseKey(String key) => key.replaceAll('.', '__').toUpperCase();
/// Archiver provided by the environment.
///
/// Provided on Dart CI.
final Uri? ar = Platform
final Uri? _ar = Platform
.environment[unparseKey(internal.CCompilerConfigImpl.arConfigKeyFull)]
?.asFileUri();

/// Compiler provided by the environment.
///
/// Provided on Dart CI.
final Uri? cc = Platform
final Uri? _cc = Platform
.environment[unparseKey(internal.CCompilerConfigImpl.ccConfigKeyFull)]
?.asFileUri();

/// Linker provided by the environment.
///
/// Provided on Dart CI.
final Uri? ld = Platform
final Uri? _ld = Platform
.environment[unparseKey(internal.CCompilerConfigImpl.ldConfigKeyFull)]
?.asFileUri();

/// Path to script that sets environment variables for [cc], [ld], and [ar].
/// Path to script that sets environment variables for [_cc], [_ld], and [_ar].
///
/// Provided on Dart CI.
final Uri? envScript = Platform.environment[
final Uri? _envScript = Platform.environment[
unparseKey(internal.CCompilerConfigImpl.envScriptConfigKeyFull)]
?.asFileUri();

/// Arguments for [envScript] provided by environment.
/// Arguments for [_envScript] provided by environment.
///
/// Provided on Dart CI.
final List<String>? envScriptArgs = Platform.environment[
final List<String>? _envScriptArgs = Platform.environment[
unparseKey(internal.CCompilerConfigImpl.envScriptArgsConfigKeyFull)]
?.split(' ');

/// Configuration for the native toolchain.
///
/// Provided on Dart CI.
final cCompiler = internal.CCompilerConfigImpl(
compiler: _cc,
archiver: _ar,
linker: _ld,
envScript: _envScript,
envScriptArgs: _envScriptArgs,
);

extension on String {
Uri asFileUri() => Uri.file(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,7 @@ void main() async {
linkingEnabled: false,
targetArchitecture: dryRun ? null : ArchitectureImpl.current,
buildMode: dryRun ? null : BuildModeImpl.debug,
cCompiler: dryRun
? null
: CCompilerConfigImpl(
compiler: cc,
envScript: envScript,
envScriptArgs: envScriptArgs,
),
cCompiler: dryRun ? null : cCompiler,
);

final buildConfigUri = testTempUri.resolve('build_config.json');
Expand Down
39 changes: 20 additions & 19 deletions pkgs/native_assets_cli/test/example/local_asset_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
})
library;

import 'dart:convert';
import 'dart:io';

import 'package:native_assets_cli/native_assets_cli_internal.dart';
Expand Down Expand Up @@ -35,29 +36,29 @@ void main() async {
final testPackageUri = packageUri.resolve('example/build/$name/');
final dartUri = Uri.file(Platform.resolvedExecutable);

final config = BuildConfigImpl(
outputDirectory: tempUri,
packageName: name,
packageRoot: testPackageUri,
targetOS: OSImpl.current,
version: HookConfigImpl.latestVersion,
linkModePreference: LinkModePreferenceImpl.dynamic,
dryRun: dryRun,
linkingEnabled: false,
targetArchitecture: dryRun ? null : ArchitectureImpl.current,
buildMode: dryRun ? null : BuildModeImpl.debug,
cCompiler: dryRun ? null : cCompiler,
);

final buildConfigUri = testTempUri.resolve('build_config.json');
await File.fromUri(buildConfigUri)
.writeAsString(jsonEncode(config.toJson()));

final processResult = await Process.run(
dartUri.toFilePath(),
[
'hook/build.dart',
'-Dout_dir=${tempUri.toFilePath()}',
'-Dpackage_name=$name',
'-Dpackage_root=${testPackageUri.toFilePath()}',
'-Dtarget_os=${OSImpl.current}',
'-Dversion=${HookConfigImpl.latestVersion}',
'-Dlinking_enabled=0',
'-Dlink_mode_preference=dynamic',
'-Ddry_run=$dryRun',
if (!dryRun) ...[
'-Dtarget_architecture=${ArchitectureImpl.current}',
'-Dbuild_mode=debug',
if (cc != null) '-Dcc=${cc!.toFilePath()}',
if (envScript != null)
'-D${CCompilerConfigImpl.envScriptConfigKeyFull}='
'${envScript!.toFilePath()}',
if (envScriptArgs != null)
'-D${CCompilerConfigImpl.envScriptArgsConfigKeyFull}='
'${envScriptArgs!.join(' ')}',
],
'--config=${buildConfigUri.toFilePath()}',
],
workingDirectory: testPackageUri.toFilePath(),
);
Expand Down
39 changes: 20 additions & 19 deletions pkgs/native_assets_cli/test/example/native_add_library_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
})
library;

import 'dart:convert';
import 'dart:io';

import 'package:native_assets_cli/native_assets_cli_internal.dart';
Expand Down Expand Up @@ -35,29 +36,29 @@ void main() async {
final testPackageUri = packageUri.resolve('example/build/$name/');
final dartUri = Uri.file(Platform.resolvedExecutable);

final config = BuildConfigImpl(
outputDirectory: tempUri,
packageName: name,
packageRoot: testPackageUri,
targetOS: OSImpl.current,
version: HookConfigImpl.latestVersion,
linkModePreference: LinkModePreferenceImpl.dynamic,
dryRun: dryRun,
linkingEnabled: false,
targetArchitecture: dryRun ? null : ArchitectureImpl.current,
buildMode: dryRun ? null : BuildModeImpl.debug,
cCompiler: dryRun ? null : cCompiler,
);

final buildConfigUri = testTempUri.resolve('build_config.json');
await File.fromUri(buildConfigUri)
.writeAsString(jsonEncode(config.toJson()));

final processResult = await Process.run(
dartUri.toFilePath(),
[
'hook/build.dart',
'-Dout_dir=${tempUri.toFilePath()}',
'-Dpackage_name=$name',
'-Dpackage_root=${testPackageUri.toFilePath()}',
'-Dtarget_os=${OSImpl.current}',
'-Dversion=${HookConfigImpl.latestVersion}',
'-Dlinking_enabled=0',
'-Dlink_mode_preference=dynamic',
'-Ddry_run=$dryRun',
if (!dryRun) ...[
'-Dtarget_architecture=${ArchitectureImpl.current}',
'-Dbuild_mode=debug',
if (cc != null) '-Dcc=${cc!.toFilePath()}',
if (envScript != null)
'-D${CCompilerConfigImpl.envScriptConfigKeyFull}='
'${envScript!.toFilePath()}',
if (envScriptArgs != null)
'-D${CCompilerConfigImpl.envScriptArgsConfigKeyFull}='
'${envScriptArgs!.join(' ')}',
],
'--config=${buildConfigUri.toFilePath()}',
],
workingDirectory: testPackageUri.toFilePath(),
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
@TestOn('!windows')
library;

import 'dart:convert';
import 'dart:io';

import 'package:native_assets_cli/native_assets_cli_internal.dart';
Expand Down Expand Up @@ -44,29 +45,29 @@ void main() async {
final testPackageUri = packageUri.resolve('example/build/$name/');
final dartUri = Uri.file(Platform.resolvedExecutable);

final config = BuildConfigImpl(
outputDirectory: tempUri,
packageName: name,
packageRoot: testPackageUri,
targetOS: OSImpl.current,
version: HookConfigImpl.latestVersion,
linkModePreference: LinkModePreferenceImpl.dynamic,
dryRun: dryRun,
linkingEnabled: false,
targetArchitecture: dryRun ? null : ArchitectureImpl.current,
buildMode: dryRun ? null : BuildModeImpl.debug,
cCompiler: dryRun ? null : cCompiler,
);

final buildConfigUri = testTempUri.resolve('build_config.json');
File.fromUri(buildConfigUri)
.writeAsStringSync(jsonEncode(config.toJson()));

final processResult = await Process.run(
dartUri.toFilePath(),
[
'hook/build.dart',
'-Dout_dir=${tempUri.toFilePath()}',
'-Dpackage_name=$name',
'-Dpackage_root=${testPackageUri.toFilePath()}',
'-Dtarget_os=${OSImpl.current}',
'-Dversion=${HookConfigImpl.latestVersion}',
'-Dlinking_enabled=0',
'-Dlink_mode_preference=dynamic',
'-Ddry_run=$dryRun',
if (!dryRun) ...[
'-Dtarget_architecture=${ArchitectureImpl.current}',
'-Dbuild_mode=debug',
if (cc != null) '-Dcc=${cc!.toFilePath()}',
if (envScript != null)
'-D${CCompilerConfigImpl.envScriptConfigKeyFull}='
'${envScript!.toFilePath()}',
if (envScriptArgs != null)
'-D${CCompilerConfigImpl.envScriptArgsConfigKeyFull}='
'${envScriptArgs!.join(' ')}',
],
'--config=${buildConfigUri.toFilePath()}',
],
workingDirectory: testPackageUri.toFilePath(),
);
Expand Down
25 changes: 18 additions & 7 deletions pkgs/native_assets_cli/test/helpers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -87,38 +87,49 @@ String unparseKey(String key) => key.replaceAll('.', '__').toUpperCase();
/// Archiver provided by the environment.
///
/// Provided on Dart CI.
final Uri? ar = Platform
final Uri? _ar = Platform
.environment[unparseKey(internal.CCompilerConfigImpl.arConfigKeyFull)]
?.asFileUri();

/// Compiler provided by the environment.
///
/// Provided on Dart CI.
final Uri? cc = Platform
final Uri? _cc = Platform
.environment[unparseKey(internal.CCompilerConfigImpl.ccConfigKeyFull)]
?.asFileUri();

/// Linker provided by the environment.
///
/// Provided on Dart CI.
final Uri? ld = Platform
final Uri? _ld = Platform
.environment[unparseKey(internal.CCompilerConfigImpl.ldConfigKeyFull)]
?.asFileUri();

/// Path to script that sets environment variables for [cc], [ld], and [ar].
/// Path to script that sets environment variables for [_cc], [_ld], and [_ar].
///
/// Provided on Dart CI.
final Uri? envScript = Platform.environment[
final Uri? _envScript = Platform.environment[
unparseKey(internal.CCompilerConfigImpl.envScriptConfigKeyFull)]
?.asFileUri();

/// Arguments for [envScript] provided by environment.
/// Arguments for [_envScript] provided by environment.
///
/// Provided on Dart CI.
final List<String>? envScriptArgs = Platform.environment[
final List<String>? _envScriptArgs = Platform.environment[
unparseKey(internal.CCompilerConfigImpl.envScriptArgsConfigKeyFull)]
?.split(' ');

/// Configuration for the native toolchain.
///
/// Provided on Dart CI.
final cCompiler = internal.CCompilerConfigImpl(
compiler: _cc,
archiver: _ar,
linker: _ld,
envScript: _envScript,
envScriptArgs: _envScriptArgs,
);

extension on String {
Uri asFileUri() => Uri.file(this);
}
Expand Down

0 comments on commit 72553db

Please sign in to comment.