about summary refs log tree commit diff
path: root/tvix
diff options
context:
space:
mode:
authoredef <edef@edef.eu>2023-10-10T22·06+0000
committeredef <edef@edef.eu>2023-10-10T22·40+0000
commit930edb69d7447f0cbe9149d01dcf9fa8443518c8 (patch)
tree20cf18786b208fb9c701c72b6a61dc7f99969652 /tvix
parentbaae5ce473ed83f35f343656eedb14bb60fbecc7 (diff)
fix(tvix/castore): use bstr for formatting names in errors r/6778
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
Diffstat (limited to 'tvix')
-rw-r--r--tvix/Cargo.lock1
-rw-r--r--tvix/Cargo.nix4
-rw-r--r--tvix/castore/Cargo.toml1
-rw-r--r--tvix/castore/src/proto/mod.rs8
4 files changed, 10 insertions, 4 deletions
diff --git a/tvix/Cargo.lock b/tvix/Cargo.lock
index 23eba30005..2f4baae861 100644
--- a/tvix/Cargo.lock
+++ b/tvix/Cargo.lock
@@ -2713,6 +2713,7 @@ version = "0.1.0"
 dependencies = [
  "async-stream",
  "blake3",
+ "bstr",
  "bytes",
  "data-encoding",
  "futures",
diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix
index 548eef65c1..24387793da 100644
--- a/tvix/Cargo.nix
+++ b/tvix/Cargo.nix
@@ -8117,6 +8117,10 @@ rec {
             features = [ "rayon" "std" ];
           }
           {
+            name = "bstr";
+            packageId = "bstr";
+          }
+          {
             name = "bytes";
             packageId = "bytes";
           }
diff --git a/tvix/castore/Cargo.toml b/tvix/castore/Cargo.toml
index 4dab3bfa44..69da905a87 100644
--- a/tvix/castore/Cargo.toml
+++ b/tvix/castore/Cargo.toml
@@ -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
diff --git a/tvix/castore/src/proto/mod.rs b/tvix/castore/src/proto/mod.rs
index ba3fcbceb1..66ed5b0f1f 100644
--- a/tvix/castore/src/proto/mod.rs
+++ b/tvix/castore/src/proto/mod.rs
@@ -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}")]