diff --git a/Cargo.lock b/Cargo.lock
index 8ef451c835..d0e5fcc8d5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -406,6 +406,18 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "console"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
+dependencies = [
+ "encode_unicode",
+ "libc",
+ "once_cell",
+ "windows-sys 0.59.0",
+]
+
[[package]]
name = "content_inspector"
version = "0.2.4"
@@ -599,6 +611,12 @@ version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+[[package]]
+name = "encode_unicode"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
+
[[package]]
name = "enum-map"
version = "2.7.3"
@@ -2262,6 +2280,7 @@ dependencies = [
"serde",
"sha2",
"sharded-slab",
+ "similar-asserts",
"strsim",
"tar",
"tempfile",
@@ -2461,6 +2480,20 @@ name = "similar"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"
+dependencies = [
+ "bstr",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "similar-asserts"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a"
+dependencies = [
+ "console",
+ "similar",
+]
[[package]]
name = "slab"
@@ -3055,6 +3088,12 @@ version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+[[package]]
+name = "unicode-segmentation"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
+
[[package]]
name = "untrusted"
version = "0.9.0"
diff --git a/Cargo.toml b/Cargo.toml
index 31005d5652..46223d4168 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -37,7 +37,7 @@ otel = [
]
# Exports code dependent on private interfaces for the integration test suite
-test = ["dep:walkdir"]
+test = ["dep:similar-asserts", "dep:walkdir"]
# Sorted by alphabetic order
[dependencies]
@@ -77,6 +77,7 @@ semver = "1.0"
serde = { version = "1.0", features = ["derive"] }
sha2 = "0.10"
sharded-slab = "0.1.1"
+similar-asserts = { version = "1.7", optional = true } # test-only
strsim = "0.11"
tar = "0.4.26"
tempfile = "3.8"
diff --git a/src/cli/self_update.rs b/src/cli/self_update.rs
index d01b0295ec..255b1f1054 100644
--- a/src/cli/self_update.rs
+++ b/src/cli/self_update.rs
@@ -1138,7 +1138,7 @@ pub(crate) async fn prepare_update(process: &Process) -> Result