feat(nix/yants): improve error message for errornous predicate
while trying to yantsify `mkSecrets` in https://cl.tvl.fyi/c/depot/+/4688, I(zseri) needed to debug a failing evaluation which boiled down to a result.ok containing something which wasn't boolean, but the error message didn't indicate where that value came from. I debugged yants and found that the only place which didn't simply combine boolean values or use functions which always return booleans, I managed to isolate the error to the `pred v` expression. To avoid the necessity to debug yants to find this, I improve the error message for this case to mention that - a restriction predicate is invalid - what's the name of the failing restriction - the unexpected predicate return value Change-Id: I6c570a33ccc5afc445f208e2e8855c49fb37abaf Reviewed-on: https://cl.tvl.fyi/c/depot/+/4698 Tested-by: BuildkiteCI Reviewed-by: zseri <zseri.devel@ytrizja.de> Reviewed-by: tazjin <mail@tazj.in> Autosubmit: zseri <zseri.devel@ytrizja.de>
This commit is contained in:
parent
9c0925b6d2
commit
00adb6e8f3
1 changed files with 9 additions and 4 deletions
|
@ -317,10 +317,15 @@ in lib.fix (self: {
|
|||
in
|
||||
if !(t.checkToBool res)
|
||||
then res
|
||||
else {
|
||||
ok = pred v;
|
||||
else
|
||||
let
|
||||
iok = pred v;
|
||||
in if isBool iok then {
|
||||
ok = iok;
|
||||
err = "${prettyPrint v} does not conform to restriction '${restriction}'";
|
||||
};
|
||||
} else
|
||||
# use throw here to avoid spamming the build log
|
||||
throw "restriction '${restriction}' predicate returned unexpected value '${prettyPrint iok}' instead of boolean";
|
||||
};
|
||||
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue