17class nix_api_store_test :
public nix_api_util_context
22 nix_libstore_init(ctx);
26 ~nix_api_store_test()
override
28 nix_store_free(store);
30 for (
auto &
path : fs::recursive_directory_iterator(nixDir)) {
31 fs::permissions(
path, fs::perms::owner_all);
33 fs::remove_all(nixDir);
38 std::string nixStoreDir;
41 void init_local_store()
45 auto tmpl = nix::defaultTempDir() +
"/tests_nix-store.";
46 for (
size_t i = 0;
true; ++
i) {
47 nixDir = tmpl + std::string {
i };
48 if (fs::create_directory(nixDir))
break;
53 auto tmpl = nix::absPath(std::filesystem::path(nix::defaultTempDir()) /
"tests_nix-store.XXXXXX",
true);
54 nixDir = mkdtemp((
char *) tmpl.c_str());
57 nixStoreDir = nixDir +
"/my_nix_store";
60 const char * p1[] = {
"store", nixStoreDir.c_str()};
61 const char * p2[] = {
"state", (
new std::string(nixDir +
"/my_state"))->c_str()};
62 const char * p3[] = {
"log", (
new std::string(nixDir +
"/my_log"))->c_str()};
64 const char ** params[] = {p1, p2, p3,
nullptr};
66 store = nix_store_open(ctx,
"local", params);
68 std::string errMsg = nix_err_msg(
nullptr, ctx,
nullptr);
69 ASSERT_NE(store,
nullptr) <<
"Could not open store: " << errMsg;