Files
IKAR/native/komet_tlottie/cargokit/build_tool/test/builder_test.dart
T

56 lines
1.8 KiB
Dart

import 'package:build_tool/src/builder.dart';
import 'package:build_tool/src/cargo.dart';
import 'package:build_tool/src/options.dart';
import 'package:build_tool/src/target.dart';
import 'package:build_tool/src/util.dart';
import 'package:test/test.dart';
void main() {
tearDown(() {
testRunCommandOverride = null;
});
test('cargo build uses rustc from the selected rustup toolchain', () async {
Map<String, String>? cargoEnvironment;
testRunCommandOverride = (args) {
if (args.executable == 'rustup' &&
args.arguments.length == 4 &&
args.arguments[0] == 'which' &&
args.arguments[1] == '--toolchain' &&
args.arguments[2] == 'stable' &&
args.arguments[3] == 'rustc') {
return TestRunCommandResult(stdout: '/rustup/stable/bin/rustc\n');
}
if (args.executable == 'rustup' &&
args.arguments.length >= 4 &&
args.arguments[0] == 'run' &&
args.arguments[1] == 'stable' &&
args.arguments[2] == 'cargo' &&
args.arguments[3] == 'build') {
cargoEnvironment = args.environment;
return TestRunCommandResult();
}
throw StateError(
'Unexpected command: ${args.executable} ${args.arguments}');
};
final builder = RustBuilder(
target: Target.forRustTriple('x86_64-pc-windows-msvc')!,
environment: BuildEnvironment(
configuration: BuildConfiguration.release,
crateOptions: CargokitCrateOptions(),
targetTempDir: '/tmp/fjs-cargokit-test',
manifestDir: '/tmp/fjs-cargokit-manifest',
crateInfo: CrateInfo(packageName: 'fjs'),
isAndroid: false,
),
);
await builder.build();
expect(cargoEnvironment?['RUSTC'], '/rustup/stable/bin/rustc');
});
}