fix(3p/nix): Fix parseDrvPathWithOutputs

At some point the behavior of this function got changed as part of our
cleanup - this fixes it to behave the way the rest of the codebase
expects (and how it is documented in the header) and covers it with a
few tests.

Change-Id: Id4c91232968e73489cd866fb4a2a84bcf20d875e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1629
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
Griffin Smith 2020-08-03 19:09:20 -04:00 committed by glittershark
parent 661353f200
commit 31b9578ad0
2 changed files with 33 additions and 3 deletions

View file

@ -408,15 +408,15 @@ Hash hashDerivationModulo(Store& store, Derivation drv) {
return hashString(htSHA256, drv.unparse());
}
// TODO(tazjin): doc comment?
DrvPathWithOutputs parseDrvPathWithOutputs(absl::string_view path) {
auto pos = path.find('!');
if (pos == absl::string_view::npos) {
return DrvPathWithOutputs(path, std::set<std::string>());
}
return DrvPathWithOutputs(path.substr(pos + 1),
absl::StrSplit(path, absl::ByChar(',')));
return DrvPathWithOutputs(
path.substr(0, pos),
absl::StrSplit(path.substr(pos + 1), absl::ByChar(',')));
}
Path makeDrvPathWithOutputs(const Path& drvPath,