Skip to content

Commit

Permalink
patterns test improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
morgante committed Mar 23, 2024
1 parent 5ae9bfc commit 6389baa
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 18 deletions.
2 changes: 1 addition & 1 deletion crates/cli/src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ pub async fn run_command() -> Result<()> {
Commands::Parse(arg) => run_parse(arg, app.format_flags, None).await,
Commands::Patterns(arg) => match arg.patterns_commands {
PatternCommands::List(arg) => run_patterns_list(arg, app.format_flags).await,
PatternCommands::Test(arg) => run_patterns_test(arg).await,
PatternCommands::Test(arg) => run_patterns_test(arg, app.format_flags).await,
PatternCommands::Edit(arg) => run_patterns_edit(arg).await,
PatternCommands::Describe(arg) => run_patterns_describe(arg).await,
},
Expand Down
62 changes: 46 additions & 16 deletions crates/cli/src/commands/patterns_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ use marzano_gritmodule::testing::{
use marzano_language::target_language::PatternLanguage;
use rayon::iter::{IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator};

use crate::flags::{GlobalFormatFlags, OutputFormat};
use crate::resolver::{get_grit_files_from_cwd, resolve_from_cwd, GritModuleResolver, Source};
use crate::result_formatting::FormattedResult;
use crate::updater::Updater;
Expand All @@ -29,6 +30,7 @@ pub async fn get_marzano_pattern_test_results(
patterns: Vec<GritPatternTestInfo>,
libs: &PatternsDirectory,
args: PatternsTestArgs,
output: OutputFormat,
) -> Result<()> {
let cwd = std::env::current_dir()?;
let resolver = GritModuleResolver::new(cwd.to_str().unwrap());
Expand Down Expand Up @@ -177,25 +179,39 @@ pub async fn get_marzano_pattern_test_results(
let final_results = final_results.into_read_only();
log_test_results(&final_results, args.verbose)?;
let total = final_results.values().flatten().count();
if final_results
.values()
.any(|v| v.iter().any(|r| !r.result.is_pass()))
{
bail!(
"{} out of {} samples failed.",
final_results
match output {
OutputFormat::Standard => {
if final_results
.values()
.flatten()
.filter(|r| !r.result.is_pass())
.count(),
total
)
};
info!("✓ All {} samples passed.", total);
.any(|v| v.iter().any(|r| !r.result.is_pass()))
{
bail!(
"{} out of {} samples failed.",
final_results
.values()
.flatten()
.filter(|r| !r.result.is_pass())
.count(),
total
)
};
info!("✓ All {} samples passed.", total);
}
OutputFormat::Json => {
println!("total: {}, JSON {:?}", total, &final_results);
}
_ => {
bail!("Output format not supported for this command");
}
}

Ok(())
}

pub(crate) async fn run_patterns_test(arg: PatternsTestArgs) -> Result<()> {
pub(crate) async fn run_patterns_test(
arg: PatternsTestArgs,
flags: GlobalFormatFlags,
) -> Result<()> {
let (mut patterns, _) = resolve_from_cwd(&Source::Local).await?;
let libs = get_grit_files_from_cwd().await?;

Expand Down Expand Up @@ -226,7 +242,21 @@ pub(crate) async fn run_patterns_test(arg: PatternsTestArgs) -> Result<()> {
bail!("No testable patterns found. To test a pattern, make sure it is defined in .grit/grit.yaml or a .md file in your .grit/patterns directory.");
}
info!("Found {} testable patterns.", testable_patterns.len(),);
get_marzano_pattern_test_results(testable_patterns, &libs, arg).await
get_marzano_pattern_test_results(testable_patterns, &libs, arg, flags.into()).await
}

#[derive(Debug)]
enum FailureKind {
Compilation,
SamplesFailed,
}

#[derive(Debug)]
struct TestReport {
success: bool,
message: String,
failure_kind: FailureKind,
report: ReadOnlyView<String, Vec<WrappedResult>>,
}

#[derive(Debug)]
Expand Down
4 changes: 3 additions & 1 deletion crates/cli/src/commands/plumbing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ use crate::resolver::{get_grit_files_from, resolve_from, Source};
use crate::utils::is_pattern_name;
use futures::future::join_all;

use super::super::analytics::{track_event, AnalyticsArgs};
use super::super::analytics::track_event;
use super::super::analytics::AnalyticsArgs;
use super::apply_pattern::{run_apply_pattern, ApplyPatternArgs};
use super::check::{run_check, CheckArg};
use super::init::{init_config_from_cwd, init_global_grit_modules};
Expand Down Expand Up @@ -268,6 +269,7 @@ pub(crate) async fn run_plumbing(
filter: None,
exclude: vec![],
},
parent.into(),
)
.await
}
Expand Down

0 comments on commit 6389baa

Please sign in to comment.