fix(tvix/castore): use bstr for formatting names in errors

Much friendlier than either Base64 or raw byte slices.

Change-Id: I9b4cdd57c83ddc76c0be8103da4320207657a72b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9622
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
This commit is contained in:
edef 2023-10-10 22:06:45 +00:00
parent baae5ce473
commit 930edb69d7
4 changed files with 10 additions and 4 deletions

1
tvix/Cargo.lock generated
View file

@ -2713,6 +2713,7 @@ version = "0.1.0"
dependencies = [
"async-stream",
"blake3",
"bstr",
"bytes",
"data-encoding",
"futures",

View file

@ -8116,6 +8116,10 @@ rec {
packageId = "blake3";
features = [ "rayon" "std" ];
}
{
name = "bstr";
packageId = "bstr";
}
{
name = "bytes";
packageId = "bytes";

View file

@ -22,6 +22,7 @@ tower = "0.4.13"
tracing = "0.1.37"
url = "2.4.0"
walkdir = "2.4.0"
bstr = "1.6.0"
[dependencies.tonic-reflection]
optional = true

View file

@ -1,6 +1,6 @@
#![allow(clippy::derive_partial_eq_without_eq, non_snake_case)]
// https://github.com/hyperium/tonic/issues/1056
use data_encoding::BASE64;
use bstr::ByteSlice;
use std::{collections::HashSet, iter::Peekable};
use thiserror::Error;
@ -29,13 +29,13 @@ mod tests;
#[derive(Debug, PartialEq, Eq, Error)]
pub enum ValidateDirectoryError {
/// Elements are not in sorted order
#[error("{} is not sorted", std::str::from_utf8(.0).unwrap_or(&BASE64.encode(.0)))]
#[error("{:?} is not sorted", .0.as_bstr())]
WrongSorting(Vec<u8>),
/// Multiple elements with the same name encountered
#[error("{0:?} is a duplicate name")]
#[error("{:?} is a duplicate name", .0.as_bstr())]
DuplicateName(Vec<u8>),
/// Invalid name encountered
#[error("Invalid name in {0:?}")]
#[error("Invalid name in {:?}", .0.as_bstr())]
InvalidName(Vec<u8>),
/// Invalid digest length encountered
#[error("Invalid Digest length: {0}")]