Improve diffing

This commit is contained in:
Mubelotix
2025-08-26 12:08:38 +02:00
parent c839b804fb
commit 1528cfe683
6 changed files with 31 additions and 7 deletions

15
Cargo.lock generated
View File

@ -5682,6 +5682,20 @@ name = "similar"
version = "2.7.0" version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" 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]] [[package]]
name = "simple_asn1" name = "simple_asn1"
@ -7291,6 +7305,7 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"sha2", "sha2",
"similar-asserts",
"sysinfo", "sysinfo",
"time", "time",
"tokio", "tokio",

View File

@ -42,3 +42,4 @@ tracing = "0.1.41"
tracing-subscriber = "0.3.19" tracing-subscriber = "0.3.19"
tracing-trace = { version = "0.1.0", path = "../tracing-trace" } tracing-trace = { version = "0.1.0", path = "../tracing-trace" }
uuid = { version = "1.17.0", features = ["v7", "serde"] } uuid = { version = "1.17.0", features = ["v7", "serde"] }
similar-asserts = "1.7.0"

View File

@ -7,6 +7,7 @@ use anyhow::{bail, Context as _};
use reqwest::StatusCode; use reqwest::StatusCode;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use serde_json::Value; use serde_json::Value;
use similar_asserts::SimpleDiff;
use crate::common::assets::{fetch_asset, Asset}; use crate::common::assets::{fetch_asset, Asset};
use crate::common::client::{Client, Method}; use crate::common::client::{Client, Method};
@ -92,8 +93,8 @@ async fn run_batch(
let mut tasks = Vec::with_capacity(batch.len()); let mut tasks = Vec::with_capacity(batch.len());
for batch in batch { for batch in batch {
let client2 = Arc::clone(&client); let client2 = Arc::clone(client);
let assets2 = Arc::clone(&assets); let assets2 = Arc::clone(assets);
tasks.push(tokio::spawn(async move { tasks.push(tokio::spawn(async move {
run(&client2, &batch, &assets2, asset_folder, return_response).await run(&client2, &batch, &assets2, asset_folder, return_response).await
})); }));
@ -112,7 +113,7 @@ async fn run_batch(
match sync { match sync {
SyncMode::DontWait => {} SyncMode::DontWait => {}
SyncMode::WaitForResponse => {} SyncMode::WaitForResponse => {}
SyncMode::WaitForTask => wait_for_tasks(&client).await?, SyncMode::WaitForTask => wait_for_tasks(client).await?,
} }
Ok(outputs) Ok(outputs)
@ -226,7 +227,12 @@ pub async fn run(
.context("could not deserialize response as JSON") .context("could not deserialize response as JSON")
.context("parsing response when checking expected response")?; .context("parsing response when checking expected response")?;
if &response != expected_response { if &response != expected_response {
bail!("unexpected response: got '{response}', expected '{expected_response}'"); let expected_pretty = serde_json::to_string_pretty(expected_response)
.context("serializing expected response as pretty JSON")?;
let response_pretty = serde_json::to_string_pretty(&response)
.context("serializing response as pretty JSON")?;
let diff = SimpleDiff::from_str(&expected_pretty, &response_pretty, "expected", "got");
bail!("unexpected response:\n{diff}");
} }
} }

View File

@ -43,7 +43,8 @@ impl VersionOrLatest {
pub fn binary_path(&self, asset_folder: &str) -> anyhow::Result<Option<PathBuf>> { pub fn binary_path(&self, asset_folder: &str) -> anyhow::Result<Option<PathBuf>> {
match self { match self {
VersionOrLatest::Version(version) => { VersionOrLatest::Version(version) => {
let mut asset_folder: PathBuf = asset_folder.parse().context("parsing asset folder")?; let mut asset_folder: PathBuf =
asset_folder.parse().context("parsing asset folder")?;
let arch = get_arch()?; let arch = get_arch()?;
let local_filename = format!("meilisearch-{version}-{arch}"); let local_filename = format!("meilisearch-{version}-{arch}");
asset_folder.push(local_filename); asset_folder.push(local_filename);

View File

@ -124,7 +124,8 @@ impl TestWorkload {
&[String::from("--experimental-dumpless-upgrade")], &[String::from("--experimental-dumpless-upgrade")],
&self.name, &self.name,
binary_path.as_deref(), binary_path.as_deref(),
).await?; )
.await?;
tracing::info!("Upgraded to {version}"); tracing::info!("Upgraded to {version}");
} }
} }