1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-09 03:56:01 +01:00

Update dummy store JSON format to include derivations

This commit is contained in:
John Ericson 2025-10-13 16:00:27 -04:00
parent f446cb290c
commit acd9dbfc55
5 changed files with 41 additions and 0 deletions

View file

@ -1,5 +1,6 @@
{ {
"build-trace": {}, "build-trace": {},
"contents": {}, "contents": {},
"derivations": {},
"store-dir": "/nix/store" "store-dir": "/nix/store"
} }

View file

@ -0,0 +1,18 @@
{
"build-trace": {},
"contents": {},
"derivations": {
"rlqjbbb65ggcx9hy577hvnn929wz1aj0-foo.drv": {
"args": [],
"builder": "",
"env": {},
"inputDrvs": {},
"inputSrcs": [],
"name": "foo",
"outputs": {},
"system": "",
"version": 4
}
},
"store-dir": "/nix/store"
}

View file

@ -30,5 +30,6 @@
} }
} }
}, },
"derivations": {},
"store-dir": "/nix/store" "store-dir": "/nix/store"
} }

View file

@ -115,6 +115,16 @@ INSTANTIATE_TEST_SUITE_P(DummyStoreJSON, DummyStoreJsonTest, [] {
HashAlgorithm::SHA256); HashAlgorithm::SHA256);
return store; return store;
}(), }(),
},
std::pair{
"one-derivation",
[&] {
auto store = writeCfg->openDummyStore();
Derivation drv;
drv.name = "foo";
store->writeDerivation(drv);
return store;
}(),
}); });
}()); }());

View file

@ -422,6 +422,8 @@ ref<DummyStore> adl_serializer<ref<DummyStore>>::from_json(const json & json)
}(); }();
for (auto & [k, v] : getObject(valueAt(obj, "contents"))) for (auto & [k, v] : getObject(valueAt(obj, "contents")))
res->contents.insert({StorePath{k}, v}); res->contents.insert({StorePath{k}, v});
for (auto & [k, v] : getObject(valueAt(obj, "derivations")))
res->derivations.insert({StorePath{k}, v});
for (auto & [k0, v] : getObject(valueAt(obj, "build-trace"))) { for (auto & [k0, v] : getObject(valueAt(obj, "build-trace"))) {
for (auto & [k1, v2] : getObject(v)) { for (auto & [k1, v2] : getObject(v)) {
auto vref = make_ref<UnkeyedRealisation>(v2); auto vref = make_ref<UnkeyedRealisation>(v2);
@ -449,6 +451,15 @@ void adl_serializer<ref<DummyStore>>::to_json(json & json, const ref<DummyStore>
}); });
return obj; return obj;
}()}, }()},
{"derivations",
[&] {
auto obj = json::object();
val->derivations.cvisit_all([&](const auto & kv) {
auto & [k, v] = kv;
obj[k.to_string()] = v;
});
return obj;
}()},
{"build-trace", {"build-trace",
[&] { [&] {
auto obj = json::object(); auto obj = json::object();