56 lines
1.8 KiB
Dart
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');
|
|
});
|
|
}
|