From be448d78bd83a755fdcab96849971ecdf4eebce0 Mon Sep 17 00:00:00 2001 From: Omar Abdulla Date: Tue, 20 Jan 2026 09:34:24 +0300 Subject: [PATCH] Update the report processor --- .../actions/run-differential-tests/action.yml | 4 +-- Cargo.lock | 1 + crates/report-processor/Cargo.toml | 1 + crates/report-processor/src/main.rs | 36 ++++++++++++++++--- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/.github/actions/run-differential-tests/action.yml b/.github/actions/run-differential-tests/action.yml index 2683623..587f40b 100644 --- a/.github/actions/run-differential-tests/action.yml +++ b/.github/actions/run-differential-tests/action.yml @@ -21,7 +21,7 @@ inputs: resolc-version: description: "The version of resolc to install and use in tests." required: false - default: "0.6.0" + default: "0.5.0" type: string use-compilation-caches: description: "Controls if the compilation caches will be used for the test run or not." @@ -130,7 +130,7 @@ runs: "${OMNI_ARGS[@]}" || true - name: Generate the expectation file shell: bash - run: report-processor generate-expectations-file --report-path ./workdir/report.json --output-path ./workdir/expectations.json --remove-prefix ./revive-differential-tests/resolc-compiler-tests + run: report-processor generate-expectations-file --report-path ./workdir/report.json --output-path ./workdir/expectations.json --remove-prefix ./revive-differential-tests/resolc-compiler-tests --include-status failed - name: Upload the Report to the CI uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f with: diff --git a/Cargo.lock b/Cargo.lock index 4cb6a7b..9bfa7ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5886,6 +5886,7 @@ dependencies = [ "revive-dt-report", "serde", "serde_json", + "strum", ] [[package]] diff --git a/crates/report-processor/Cargo.toml b/crates/report-processor/Cargo.toml index ce71d10..f0f5ccd 100644 --- a/crates/report-processor/Cargo.toml +++ b/crates/report-processor/Cargo.toml @@ -18,6 +18,7 @@ revive-dt-common = { workspace = true } anyhow = { workspace = true } clap = { workspace = true } +strum = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } diff --git a/crates/report-processor/src/main.rs b/crates/report-processor/src/main.rs index 2d2b013..82f78ef 100644 --- a/crates/report-processor/src/main.rs +++ b/crates/report-processor/src/main.rs @@ -1,6 +1,6 @@ use std::{ borrow::Cow, - collections::{BTreeMap, BTreeSet}, + collections::{BTreeMap, BTreeSet, HashSet}, fmt::Display, fs::{File, OpenOptions}, ops::{Deref, DerefMut}, @@ -9,11 +9,12 @@ use std::{ }; use anyhow::{Context as _, Error, Result, bail}; -use clap::Parser; +use clap::{Parser, ValueEnum}; use serde::{Deserialize, Serialize, de::DeserializeOwned}; use revive_dt_common::types::{Mode, ParsedTestSpecifier}; use revive_dt_report::{Report, TestCaseStatus}; +use strum::EnumString; fn main() -> Result<()> { let cli = Cli::try_parse().context("Failed to parse the CLI arguments")?; @@ -23,11 +24,14 @@ fn main() -> Result<()> { report_path, output_path: output_file, remove_prefix, + include_status, } => { let remove_prefix = remove_prefix .into_iter() .map(|path| path.canonicalize().context("Failed to canonicalize path")) .collect::>>()?; + let include_status = + include_status.map(|value| value.into_iter().collect::>()); let expectations = report_path .execution_information @@ -73,7 +77,12 @@ fn main() -> Result<()> { Status::from(status), ) }) - .filter(|(_, status)| *status == Status::Failed) + .filter(|(_, status)| { + include_status + .as_ref() + .map(|allowed_status| allowed_status.contains(status)) + .unwrap_or(true) + }) .collect::(); let output_file = OpenOptions::new() @@ -143,6 +152,11 @@ pub enum Cli { /// Prefix paths to remove from the paths in the final expectations file. #[clap(long)] remove_prefix: Vec, + + /// Controls which test case statuses are included in the generated expectations file. If + /// nothing is specified then it will include all of the test case status. + #[clap(long)] + include_status: Option>, }, /// Compares two expectation files to ensure that they match each other. @@ -157,7 +171,21 @@ pub enum Cli { }, } -#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + Serialize, + Deserialize, + ValueEnum, + EnumString, +)] +#[strum(serialize_all = "kebab-case")] pub enum Status { Succeeded, Failed,