MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / BuildTest

Method BuildTest

Tests/Libraries/Build/BuildTest.cpp:130–374  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

128struct SC::BuildTest : public SC::TestCase
129{
130 BuildTest(SC::TestReport& report) : TestCase(report, "BuildTest")
131 {
132 String buildDir;
133 {
134 String targetDirectory = report.applicationRootDirectory.view();
135 SC_TRUST_RESULT(Path::append(targetDirectory, {"../..", "_Tests"}, Path::AsNative));
136 SmallString<128> runDirectory;
137 SC_TRUST_RESULT(StringBuilder::format(runDirectory, "run-{}-{}", Time::Realtime::now().milliseconds,
138 reinterpret_cast<size_t>(this)));
139 SC_TRUST_RESULT(Path::append(targetDirectory, {runDirectory.view()}, Path::AsNative));
140 // Normalizing is not strictly necessary but it helps when debugging the test
141 SC_TRUST_RESULT(Path::normalize(buildDir, targetDirectory.view(), Path::AsNative));
142 }
143 Build::Action action;
144 action.action = Build::Action::Configure;
145
146 Build::Directories& directories = action.parameters.directories;
147 SC_TRUST_RESULT(Path::join(directories.projectsDirectory, {buildDir.view(), "_Projects"}));
148 SC_TRUST_RESULT(Path::join(directories.outputsDirectory, {buildDir.view(), "_Outputs"}));
149 SC_TRUST_RESULT(Path::join(directories.intermediatesDirectory, {buildDir.view(), "_Intermediates"}));
150 SC_TRUST_RESULT(Path::join(directories.buildCacheDirectory, {buildDir.view(), "_BuildCache"}));
151 SC_TRUST_RESULT(Path::join(directories.packagesCacheDirectory, {buildDir.view(), "_PackagesCache"}));
152 SC_TRUST_RESULT(Path::join(directories.packagesInstallDirectory, {buildDir.view(), "_Packages"}));
153
154 directories.libraryDirectory = report.libraryRootDirectory.view();
155 directories.projectDirectory = report.libraryRootDirectory.view();
156
157 if (test_section("Native backend support matrix"))
158 {
159 Span<const Build::SupportMatrixEntry> matrix = Build::getNativeBackendSupportMatrix();
160 SC_TEST_EXPECT(matrix.sizeInElements() >= 14);
161 SC_TEST_EXPECT(Build::SupportStatus::toString(Build::SupportStatus::Supported) == "supported");
162 SC_TEST_EXPECT(Build::SupportStatus::toString(Build::SupportStatus::NotYet) == "not-yet");
163 SC_TEST_EXPECT(Build::SupportTier::toString(Build::SupportTier::Tier2) == "tier2");
164
165 size_t buildSupportedRows = 0;
166 for (const Build::SupportMatrixEntry& entry : matrix)
167 {
168 SC_TEST_EXPECT(entry.hostMachine.environment == Build::TargetEnvironment::Native);
169 SC_TEST_EXPECT(entry.targetMachine.environment != Build::TargetEnvironment::Native);
170 SC_TEST_EXPECT(not entry.validation.isEmpty());
171 if (entry.buildSupport == Build::SupportStatus::Supported)
172 {
173 buildSupportedRows += 1;
174 }
175 }
176 SC_TEST_EXPECT(buildSupportedRows == matrix.sizeInElements());
177 SC_TEST_EXPECT(supportMatrixContains(matrix, Build::Platform::Apple, Build::TargetEnvironment::WindowsGNU,
178 Build::Architecture::Intel64, Build::SupportStatus::Supported,
179 Build::SupportStatus::Supported, Build::SupportTier::Tier1,
180 Build::RunnerSpec::Wine));
181 SC_TEST_EXPECT(supportMatrixContains(matrix, Build::Platform::Apple, Build::TargetEnvironment::WindowsGNU,
182 Build::Architecture::Arm64, Build::SupportStatus::Supported,
183 Build::SupportStatus::NotYet, Build::SupportTier::Tier1,
184 Build::RunnerSpec::Wine));
185 SC_TEST_EXPECT(supportMatrixContains(matrix, Build::Platform::Apple, Build::TargetEnvironment::LinuxGlibc,
186 Build::Architecture::Arm64, Build::SupportStatus::Supported,
187 Build::SupportStatus::NotYet, Build::SupportTier::Tier1,

Callers

nothing calls this directly

Calls 15

normalizeFunction · 0.85
supportMatrixContainsFunction · 0.85
supportMatrixHostNameFunction · 0.85
prepareBuildCLIActionFunction · 0.85
existsAndIsFileMethod · 0.80
appendFunction · 0.50
formatFunction · 0.50
joinFunction · 0.50

Tested by

no test coverage detected