Crafter.Build/tests/Libraries/Libraries.cpp
Jorijn van der Graaf f90c633898
Some checks failed
CI / build-test-release (push) Failing after 15m1s
fixed tests
2026-04-30 02:35:59 +02:00

63 lines
2 KiB
C++

/*
Crafter® Build
Copyright (C) 2026 Catcrafts®
Catcrafts.net
LGPL-3.0-only.
*/
import std;
import Crafter.Build;
#include "../_shared/TestUtil.h"
namespace fs = std::filesystem;
using namespace TestUtil;
using namespace Crafter;
int main() {
try {
fs::path src = fs::current_path() / "tests" / "Libraries" / "inner";
Configuration cfg = LoadFixture("Libraries", src);
fs::path work = fs::current_path();
auto br = BuildOnce(cfg);
if (!br.result.empty()) {
std::println(std::cerr, "build failed:\n{}", br.result);
return 1;
}
fs::path staticArchive = cfg.dependencies[0]->BinDir() / "libMathLib.a";
fs::path dynamicSO = cfg.dependencies[1]->BinDir() / "libGreetLib.so";
fs::path artifact = cfg.BinDir() / "libs-app";
if (!fs::exists(staticArchive)) {
std::println(std::cerr, "static archive missing at {}", staticArchive.string());
return 1;
}
if (!fs::exists(dynamicSO)) {
std::println(std::cerr, "dynamic .so missing at {}", dynamicSO.string());
return 1;
}
if (!fs::exists(artifact)) {
std::println(std::cerr, "exe missing at {}", artifact.string());
return 1;
}
// Linked against the dynamic .so which lives in greetlib/bin/...; set
// LD_LIBRARY_PATH explicitly for the artifact run.
auto run = RunInDir(work, std::format(
"LD_LIBRARY_PATH='{}' '{}'",
dynamicSO.parent_path().string(), artifact.string()));
if (run.exitCode != 0) {
std::println(std::cerr, "artifact exited nonzero (rc={}):\n{}", run.exitCode, run.output);
return 1;
}
if (run.output != "hi=42\n") {
std::println(std::cerr, "output mismatch:\n expected: \"hi=42\\n\"\n got: {:?}", run.output);
return 1;
}
return 0;
} catch (const std::exception& e) {
std::println(std::cerr, "test exception: {}", e.what());
return 1;
}
}