Skip to content

Commit

Permalink
Add on-missing-from-report
Browse files Browse the repository at this point in the history
Signed-off-by: sagudev <[email protected]>
  • Loading branch information
sagudev committed Aug 4, 2024
1 parent 76b84db commit c4a0362
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 9 deletions.
28 changes: 28 additions & 0 deletions moz-webgpu-cts/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ enum Subcommand {
/// The heuristic for resolving differences between current metadata and processed reports.
#[clap(value_enum, long, default_value_t = UpdateExpectedPreset::ResetContradictory)]
preset: UpdateExpectedPreset,
/// The heuristic for handling metadata that is not present in processed reports.
#[clap(value_enum, long, default_value_t = MissingFromReport::Delete)]
on_missing_from_report: MissingFromReport,
/// `implementation-status`es that changes should be applied to. If not specified, defaults
/// to `implementing`.
#[clap(value_enum, long)]
Expand Down Expand Up @@ -282,6 +285,26 @@ impl From<UpdateExpectedPreset> for process_reports::ReportProcessingPreset {
}
}

#[derive(Clone, Copy, Debug, ValueEnum)]
enum MissingFromReport {
Delete,
DeleteAndInfo,
DeleteAndWarn,
Keep,
}

impl From<MissingFromReport> for process_reports::MissingFromReport {
fn from(value: MissingFromReport) -> Self {
use process_reports::Log;
match value {
MissingFromReport::Delete => Self::Delete(Log::Silent),
MissingFromReport::DeleteAndInfo => Self::Delete(Log::Info),
MissingFromReport::DeleteAndWarn => Self::Delete(Log::Warn),
MissingFromReport::Keep => Self::Keep(Log::Info),
}
}
}

#[derive(Clone, Copy, Debug, Default, ValueEnum)]
enum OnZeroItem {
Show,
Expand Down Expand Up @@ -324,6 +347,7 @@ fn run(cli: Cli) -> ExitCode {
&checkout,
exec_report_spec,
process_reports::ReportProcessingPreset::MigrateTestStructure,
process_reports::MissingFromReport::Delete(process_reports::Log::Warn),
&mut should_update_expected::NeverUpdateExpected,
) {
Ok(()) => ExitCode::SUCCESS,
Expand All @@ -332,6 +356,7 @@ fn run(cli: Cli) -> ExitCode {
Subcommand::UpdateExpected {
exec_report_spec,
preset,
on_missing_from_report,
implementation_status,
} => {
let allowed_implementation_statuses = if implementation_status.is_empty() {
Expand All @@ -344,6 +369,7 @@ fn run(cli: Cli) -> ExitCode {
&checkout,
exec_report_spec,
preset.into(),
on_missing_from_report.into(),
&mut should_update_expected::ImplementationStatusFilter {
allowed: allowed_implementation_statuses,
},
Expand Down Expand Up @@ -1354,6 +1380,7 @@ fn process_reports(
checkout: &Path,
exec_report_spec: ExecReportSpec,
preset: process_reports::ReportProcessingPreset,
on_missing_from_report: process_reports::MissingFromReport,
should_update_expected: &mut dyn ShouldUpdateExpected,
) -> Result<(), AlreadyReportedToCommandline> {
let exec_report_paths = exec_report_spec.paths()?;
Expand All @@ -1366,6 +1393,7 @@ fn process_reports(
checkout,
exec_report_paths,
preset,
on_missing_from_report,
should_update_expected,
meta_files_by_path,
})?;
Expand Down
40 changes: 31 additions & 9 deletions moz-webgpu-cts/src/process_reports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ pub(crate) struct ProcessReportsArgs<'a> {
pub checkout: &'a Path,
pub exec_report_paths: Vec<PathBuf>,
pub preset: ReportProcessingPreset,
pub on_missing_from_report: MissingFromReport,
pub should_update_expected: &'a mut dyn should_update_expected::ShouldUpdateExpected,
pub meta_files_by_path: IndexMap<Arc<PathBuf>, File>,
}
Expand All @@ -68,6 +69,31 @@ pub(crate) enum ReportProcessingPreset {
MigrateTestStructure,
}

#[derive(Clone, Copy, Debug)]
#[allow(clippy::enum_variant_names)]
pub(crate) enum MissingFromReport {
Delete(Log),
Keep(Log),
}

#[derive(Clone, Copy, Debug)]
#[allow(clippy::enum_variant_names)]
pub(crate) enum Log {
Silent,
Info,
Warn,
}

impl Log {
fn log<A: AsRef<str>>(&self, msg: A) {
match self {
Log::Silent => {}
Log::Info => log::info!("{}", msg.as_ref()),
Log::Warn => log::warn!("{}", msg.as_ref()),
}
}
}

#[derive(Debug, Default)]
struct EntryByCtsPath<'a> {
metadata_path: Option<TestEntryPath<'a>>,
Expand Down Expand Up @@ -160,6 +186,7 @@ pub(crate) fn process_reports(
checkout,
exec_report_paths,
preset,
on_missing_from_report,
should_update_expected,
meta_files_by_path,
} = args;
Expand Down Expand Up @@ -520,17 +547,12 @@ pub(crate) fn process_reports(
test_entry_path,
subtest_name,
);
match preset {
ReportProcessingPreset::MergeOutcomes => log::warn!("{msg}"),
ReportProcessingPreset::ResetAllOutcomes
| ReportProcessingPreset::ResetContradictoryOutcomes => {
log::warn!("removing metadata after {msg}");
return None;
}
ReportProcessingPreset::MigrateTestStructure => {
log::info!("removing metadata after {msg}");
match on_missing_from_report {
MissingFromReport::Delete(log) => {
log.log(format!("removing metadata after {msg}"));
return None;
}
MissingFromReport::Keep(log) => log.log(msg.to_string()),
}
}

Expand Down

0 comments on commit c4a0362

Please sign in to comment.