blob: 88be30c8ef56865f32a4405f1b8293370963c2cb [file] [log] [blame]
// 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.
@TestOn('linux')
library;
import 'dart:io';
import 'package:native_toolchain_c/src/native_toolchain/clang.dart';
import 'package:native_toolchain_c/src/tool/tool_instance.dart';
import 'package:native_toolchain_c/src/tool/tool_requirement.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:test/test.dart';
import '../helpers.dart';
void main() {
if (!Platform.isLinux) {
// Avoid needing status files on Dart SDK CI.
return;
}
test('clang smoke test', () async {
final requirement =
ToolRequirement(clang, minimumVersion: Version(14, 0, 0, pre: '0'));
final resolved = await clang.defaultResolver!.resolve(logger: logger);
expect(resolved.isNotEmpty, true);
final satisfied = requirement.satisfy(resolved);
expect(satisfied?.length, 1);
});
test('clang versions', () {
final clangInstance = ToolInstance(
tool: clang,
uri: Uri.file('some/path'),
version: Version.parse('14.0.0-1'),
);
final requirement =
ToolRequirement(clang, minimumVersion: Version(14, 0, 0, pre: '0'));
final satisfied = requirement.satisfy([clangInstance]);
expect(satisfied?.length, 1);
});
test('llvm-ar smoke test', () async {
final requirement = ToolRequirement(llvmAr);
final resolved = await llvmAr.defaultResolver!.resolve(logger: logger);
expect(resolved.isNotEmpty, true);
final satisfied = requirement.satisfy(resolved);
expect(satisfied?.length, 1);
});
test('ld test', () async {
final requirement = ToolRequirement(lld);
final resolved = await lld.defaultResolver!.resolve(logger: logger);
expect(resolved.isNotEmpty, true);
final satisfied = requirement.satisfy(resolved);
expect(satisfied?.length, 1);
});
}