From 7e78992c763157aaee7838a41bce49d6083a5deb Mon Sep 17 00:00:00 2001 From: "Michael J. Klein" Date: Tue, 9 Apr 2024 15:19:42 -0400 Subject: [PATCH 1/3] wip testing that nargo fmt is idempotent: added format_idempotent_{name} tests to build.rs --- tooling/nargo_fmt/build.rs | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/tooling/nargo_fmt/build.rs b/tooling/nargo_fmt/build.rs index 6f41768c1dc..376b3d56cab 100644 --- a/tooling/nargo_fmt/build.rs +++ b/tooling/nargo_fmt/build.rs @@ -52,23 +52,39 @@ fn generate_formatter_tests(test_file: &mut File, test_data_dir: &Path) { write!( test_file, r##" -#[test] -fn format_{test_name}() {{ - let input = r#"{input_source}"#; - let expected_output = r#"{output_source}"#; + #[test] + fn format_{test_name}() {{ + let input = r#"{input_source}"#; + let expected_output = r#"{output_source}"#; - let (parsed_module, _errors) = noirc_frontend::parse_program(input); + let (parsed_module, _errors) = noirc_frontend::parse_program(input); - let config = nargo_fmt::Config::of("{config}").unwrap(); - let fmt_text = nargo_fmt::format(input, parsed_module, &config); + let config = nargo_fmt::Config::of("{config}").unwrap(); + let fmt_text = nargo_fmt::format(input, parsed_module, &config); - if std::env::var("UPDATE_EXPECT").is_ok() {{ - std::fs::write("{output_source_path}", fmt_text.clone()).unwrap(); + if std::env::var("UPDATE_EXPECT").is_ok() {{ + std::fs::write("{output_source_path}", fmt_text.clone()).unwrap(); + }} + + similar_asserts::assert_eq!(fmt_text, expected_output); }} - similar_asserts::assert_eq!(fmt_text, expected_output); -}} + #[test] + fn format_idempotent_{test_name}() {{ + let expected_output = r#"{output_source}"#; + + let (parsed_module, _errors) = noirc_frontend::parse_program(expected_output); + + let config = nargo_fmt::Config::of("{config}").unwrap(); + let fmt_text = nargo_fmt::format(expected_output, parsed_module, &config); + + if std::env::var("UPDATE_EXPECT").is_ok() {{ + std::fs::write("{output_source_path}", fmt_text.clone()).unwrap(); + }} + + similar_asserts::assert_eq!(fmt_text, expected_output); + }} "## ) .expect("Could not write templated test file."); From 1dadd87682d5e948d991fe6ad831f30b3ff51adf Mon Sep 17 00:00:00 2001 From: Michael J Klein Date: Wed, 10 Apr 2024 12:13:29 -0400 Subject: [PATCH 2/3] Update tooling/nargo_fmt/build.rs Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com> --- tooling/nargo_fmt/build.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/tooling/nargo_fmt/build.rs b/tooling/nargo_fmt/build.rs index 376b3d56cab..00ef2779da8 100644 --- a/tooling/nargo_fmt/build.rs +++ b/tooling/nargo_fmt/build.rs @@ -79,9 +79,6 @@ fn generate_formatter_tests(test_file: &mut File, test_data_dir: &Path) { let config = nargo_fmt::Config::of("{config}").unwrap(); let fmt_text = nargo_fmt::format(expected_output, parsed_module, &config); - if std::env::var("UPDATE_EXPECT").is_ok() {{ - std::fs::write("{output_source_path}", fmt_text.clone()).unwrap(); - }} similar_asserts::assert_eq!(fmt_text, expected_output); }} From 0677e96ce8e184f3fbeb35d2088da2e8da483a7f Mon Sep 17 00:00:00 2001 From: "Michael J. Klein" Date: Wed, 10 Apr 2024 21:56:17 -0400 Subject: [PATCH 3/3] skip failing idempotence tests --- tooling/nargo_fmt/build.rs | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/tooling/nargo_fmt/build.rs b/tooling/nargo_fmt/build.rs index 00ef2779da8..7d5f07c43bf 100644 --- a/tooling/nargo_fmt/build.rs +++ b/tooling/nargo_fmt/build.rs @@ -49,6 +49,13 @@ fn generate_formatter_tests(test_file: &mut File, test_data_dir: &Path) { let output_source_path = outputs_dir.join(file_name).display().to_string(); let output_source = std::fs::read_to_string(output_source_path.clone()).unwrap(); + let skip_idempotent_test = + // TODO(https://github.com/noir-lang/noir/issues/4766): spurious trailing space + test_name == "array" || + // TODO(https://github.com/noir-lang/noir/issues/4767): pre-comment space + // TODO(https://github.com/noir-lang/noir/issues/4768): spurious newline + test_name == "tuple"; + write!( test_file, r##" @@ -69,21 +76,28 @@ fn generate_formatter_tests(test_file: &mut File, test_data_dir: &Path) { similar_asserts::assert_eq!(fmt_text, expected_output); }} + "## + ) + .expect("Could not write templated test file."); - #[test] - fn format_idempotent_{test_name}() {{ - let expected_output = r#"{output_source}"#; - - let (parsed_module, _errors) = noirc_frontend::parse_program(expected_output); + if !skip_idempotent_test { + write!( + test_file, + r##" + #[test] + fn format_idempotent_{test_name}() {{ + let expected_output = r#"{output_source}"#; - let config = nargo_fmt::Config::of("{config}").unwrap(); - let fmt_text = nargo_fmt::format(expected_output, parsed_module, &config); + let (parsed_module, _errors) = noirc_frontend::parse_program(expected_output); + let config = nargo_fmt::Config::of("{config}").unwrap(); + let fmt_text = nargo_fmt::format(expected_output, parsed_module, &config); - similar_asserts::assert_eq!(fmt_text, expected_output); - }} - "## - ) - .expect("Could not write templated test file."); + similar_asserts::assert_eq!(fmt_text, expected_output); + }} + "## + ) + .expect("Could not write templated test file."); + } } }