feat(tvix/eval): introduce ErrorKind::InvalidHash
The nixhash errors were wrapped in a generic TvixError. Now it has its own TvixError with unique error code. The nixhash error is passed along as a string. The errors looked like: error[E997]: invalid encoded digest length '51' for algo sha256 Now they look like: error[E041]: Invalid hash: invalid encoded digest length '51' for algo sha256 Change-Id: I5c420815538ba4c6567c95f5d44d60c4d48f43fd Reviewed-on: https://cl.tvl.fyi/c/depot/+/12718 Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
aecf0641a4
commit
05cb6e9e35
2 changed files with 6 additions and 2 deletions
|
@ -236,6 +236,9 @@ to a missing value in the attribute set(s) included via `with`."#
|
||||||
#[error("Invalid UTF-8 in string")]
|
#[error("Invalid UTF-8 in string")]
|
||||||
Utf8,
|
Utf8,
|
||||||
|
|
||||||
|
#[error("Invalid hash: {0}")]
|
||||||
|
InvalidHash(String),
|
||||||
|
|
||||||
/// Variant for errors that bubble up to eval from other Tvix
|
/// Variant for errors that bubble up to eval from other Tvix
|
||||||
/// components.
|
/// components.
|
||||||
#[error("{0}")]
|
#[error("{0}")]
|
||||||
|
@ -676,6 +679,7 @@ impl Error {
|
||||||
| ErrorKind::NotImplemented(_)
|
| ErrorKind::NotImplemented(_)
|
||||||
| ErrorKind::WithContext { .. }
|
| ErrorKind::WithContext { .. }
|
||||||
| ErrorKind::UnknownHashType(_)
|
| ErrorKind::UnknownHashType(_)
|
||||||
|
| ErrorKind::InvalidHash(_)
|
||||||
| ErrorKind::CatchableError(_) => return None,
|
| ErrorKind::CatchableError(_) => return None,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -722,6 +726,7 @@ impl Error {
|
||||||
ErrorKind::Utf8 => "E038",
|
ErrorKind::Utf8 => "E038",
|
||||||
ErrorKind::UnknownHashType(_) => "E039",
|
ErrorKind::UnknownHashType(_) => "E039",
|
||||||
ErrorKind::UnexpectedArgumentBuiltin { .. } => "E040",
|
ErrorKind::UnexpectedArgumentBuiltin { .. } => "E040",
|
||||||
|
ErrorKind::InvalidHash(_) => "E041",
|
||||||
|
|
||||||
// Special error code for errors from other Tvix
|
// Special error code for errors from other Tvix
|
||||||
// components. We may want to introduce a code namespacing
|
// components. We may want to introduce a code namespacing
|
||||||
|
|
|
@ -73,8 +73,7 @@ async fn extract_fetch_args(
|
||||||
let sha256 = match sha256_str {
|
let sha256 = match sha256_str {
|
||||||
Some(sha256_str) => {
|
Some(sha256_str) => {
|
||||||
let nixhash = nixhash::from_str(&sha256_str, Some("sha256"))
|
let nixhash = nixhash::from_str(&sha256_str, Some("sha256"))
|
||||||
// TODO: DerivationError::InvalidOutputHash should be moved to ErrorKind::InvalidHash and used here instead
|
.map_err(|e| ErrorKind::InvalidHash(e.to_string()))?;
|
||||||
.map_err(|e| ErrorKind::TvixError(Rc::new(e)))?;
|
|
||||||
|
|
||||||
Some(nixhash.digest_as_bytes().try_into().expect("is sha256"))
|
Some(nixhash.digest_as_bytes().try_into().expect("is sha256"))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue