-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathtest_toolchain_registry.cpp
More file actions
69 lines (57 loc) · 2.44 KB
/
test_toolchain_registry.cpp
File metadata and controls
69 lines (57 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <gtest/gtest.h>
import std;
import mcpp.toolchain.registry;
using namespace mcpp::toolchain;
TEST(ToolchainRegistry, MapsGccSpecToGccPackage) {
auto spec = parse_toolchain_spec("gcc@16.1.0");
ASSERT_TRUE(spec.has_value()) << spec.error();
auto pkg = to_xim_package(*spec);
EXPECT_EQ(pkg.ximName, "gcc");
EXPECT_EQ(pkg.ximVersion, "16.1.0");
EXPECT_EQ(pkg.display_spec(), "gcc@16.1.0");
ASSERT_FALSE(pkg.frontendCandidates.empty());
EXPECT_EQ(pkg.frontendCandidates.front(), "g++");
EXPECT_TRUE(pkg.needsGccPostInstallFixup);
}
TEST(ToolchainRegistry, MapsGccMuslSuffixToMuslGccPackage) {
auto spec = parse_toolchain_spec("gcc@15.1.0-musl");
ASSERT_TRUE(spec.has_value()) << spec.error();
auto pkg = to_xim_package(*spec);
EXPECT_TRUE(spec->isMusl);
EXPECT_EQ(pkg.ximName, "musl-gcc");
EXPECT_EQ(pkg.ximVersion, "15.1.0");
EXPECT_EQ(pkg.display_spec(), "gcc@15.1.0-musl");
ASSERT_FALSE(pkg.frontendCandidates.empty());
EXPECT_EQ(pkg.frontendCandidates.front(), "x86_64-linux-musl-g++");
EXPECT_FALSE(pkg.needsGccPostInstallFixup);
}
TEST(ToolchainRegistry, MapsLlvmAndClangAliasesToLlvmPackage) {
auto llvmSpec = parse_toolchain_spec("llvm", "20.1.7");
auto clangSpec = parse_toolchain_spec("clang@20.1.7");
ASSERT_TRUE(llvmSpec.has_value()) << llvmSpec.error();
ASSERT_TRUE(clangSpec.has_value()) << clangSpec.error();
auto llvmPkg = to_xim_package(*llvmSpec);
auto clangPkg = to_xim_package(*clangSpec);
EXPECT_EQ(llvmPkg.ximName, "llvm");
EXPECT_EQ(clangPkg.ximName, "llvm");
EXPECT_EQ(llvmPkg.ximVersion, "20.1.7");
EXPECT_EQ(clangPkg.ximVersion, "20.1.7");
EXPECT_EQ(llvmPkg.display_spec(), "llvm@20.1.7");
EXPECT_EQ(clangPkg.display_spec(), "clang@20.1.7");
ASSERT_FALSE(clangPkg.frontendCandidates.empty());
#if defined(_WIN32)
EXPECT_EQ(clangPkg.frontendCandidates.front(), "clang++.exe");
#else
EXPECT_EQ(clangPkg.frontendCandidates.front(), "clang++");
#endif
}
TEST(ToolchainRegistry, ResolvesPartialMuslVersionForDisplayAndPackage) {
auto spec = parse_toolchain_spec("gcc", "15-musl");
ASSERT_TRUE(spec.has_value()) << spec.error();
auto resolved = with_resolved_xim_version(*spec, "15.1.0");
auto pkg = to_xim_package(resolved);
EXPECT_EQ(resolved.version, "15.1.0-musl");
EXPECT_EQ(pkg.ximName, "musl-gcc");
EXPECT_EQ(pkg.ximVersion, "15.1.0");
EXPECT_EQ(pkg.display_spec(), "gcc@15.1.0-musl");
}