diff --git a/test_programs/execution_success/brillig_array_eq/Prover.toml b/test_programs/execution_success/brillig_array_eq/Prover.toml deleted file mode 100644 index ecfed7de213..00000000000 --- a/test_programs/execution_success/brillig_array_eq/Prover.toml +++ /dev/null @@ -1,2 +0,0 @@ -a = [77,75,108,209,54,16,50,202,155,210,174,185,217,0,170,77,69,217,234,216,10,201,66,51,116,196,81,167,37,77,7,102] -b = [77,75,108,209,54,16,50,202,155,210,174,185,217,0,170,77,69,217,234,216,10,201,66,51,116,196,81,167,37,77,7,102] diff --git a/test_programs/execution_success/brillig_array_eq/src/main.nr b/test_programs/execution_success/brillig_array_eq/src/main.nr deleted file mode 100644 index 90f631dbed8..00000000000 --- a/test_programs/execution_success/brillig_array_eq/src/main.nr +++ /dev/null @@ -1,4 +0,0 @@ -// Simple example of checking where two arrays are equal -unconstrained fn main(a: [Field; 32], b: [Field; 32]) { - assert(a == b); -} diff --git a/test_programs/execution_success/brillig_bit_shifts_runtime/Nargo.toml b/test_programs/execution_success/brillig_bit_shifts_runtime/Nargo.toml deleted file mode 100644 index ed8200d8a95..00000000000 --- a/test_programs/execution_success/brillig_bit_shifts_runtime/Nargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "brillig_bit_shifts_runtime" -type = "bin" -authors = [""] - -[dependencies] diff --git a/test_programs/execution_success/brillig_bit_shifts_runtime/Prover.toml b/test_programs/execution_success/brillig_bit_shifts_runtime/Prover.toml deleted file mode 100644 index 98d8630792e..00000000000 --- a/test_programs/execution_success/brillig_bit_shifts_runtime/Prover.toml +++ /dev/null @@ -1,2 +0,0 @@ -x = 64 -y = 1 \ No newline at end of file diff --git a/test_programs/execution_success/brillig_bit_shifts_runtime/src/main.nr b/test_programs/execution_success/brillig_bit_shifts_runtime/src/main.nr deleted file mode 100644 index cdeaad7514c..00000000000 --- a/test_programs/execution_success/brillig_bit_shifts_runtime/src/main.nr +++ /dev/null @@ -1,20 +0,0 @@ -unconstrained fn main(x: u64, y: u8) { - // runtime shifts on compile-time known values - assert(64 as u32 << y == 128); - assert(64 as u32 >> y == 32); - // runtime shifts on runtime values - assert(x << y == 128); - assert(x >> y == 32); - - // Bit-shift with signed integers - let mut a :i8 = y as i8; - let mut b: i8 = x as i8; - assert(b << 1 == -128); - assert(b >> 2 == 16); - assert(b >> y == 32); - a = -a; - assert(a << 7 == -128); - assert(a << y == -2); - - assert(x >> (x as u8) == 0); -} diff --git a/test_programs/execution_success/brillig_embedded_curve/Nargo.toml b/test_programs/execution_success/brillig_embedded_curve/Nargo.toml deleted file mode 100644 index b92e11d6383..00000000000 --- a/test_programs/execution_success/brillig_embedded_curve/Nargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "brillig_embedded_curve" -type = "bin" -authors = [""] - -[dependencies] diff --git a/test_programs/execution_success/brillig_embedded_curve/Prover.toml b/test_programs/execution_success/brillig_embedded_curve/Prover.toml deleted file mode 100644 index 7113b9cd038..00000000000 --- a/test_programs/execution_success/brillig_embedded_curve/Prover.toml +++ /dev/null @@ -1,3 +0,0 @@ -priv_key = "1" -pub_x = "0x0000000000000000000000000000000000000000000000000000000000000001" -pub_y = "0x0000000000000002cf135e7506a45d632d270d45f1181294833fc48d823f272c" \ No newline at end of file diff --git a/test_programs/execution_success/brillig_embedded_curve/src/main.nr b/test_programs/execution_success/brillig_embedded_curve/src/main.nr deleted file mode 100644 index 89a699448dc..00000000000 --- a/test_programs/execution_success/brillig_embedded_curve/src/main.nr +++ /dev/null @@ -1,24 +0,0 @@ -use dep::std; - -unconstrained fn main(priv_key: Field, pub_x: pub Field, pub_y: pub Field) { - let g1_y = 17631683881184975370165255887551781615748388533673675138860; - let g1 = std::embedded_curve_ops::EmbeddedCurvePoint { x: 1, y: g1_y, is_infinite: false }; - let scalar = std::embedded_curve_ops::EmbeddedCurveScalar { lo: priv_key, hi: 0 }; - // Test that multi_scalar_mul correctly derives the public key - let res = std::embedded_curve_ops::multi_scalar_mul([g1], [scalar]); - assert(res[0] == pub_x); - assert(res[1] == pub_y); - - // Test that double function calling embedded_curve_add works as expected - let pub_point = std::embedded_curve_ops::EmbeddedCurvePoint { x: pub_x, y: pub_y, is_infinite: false }; - let res = pub_point.double(); - let double = g1.add(g1); - - assert(double.x == res.x); - - // Test calling multi_scalar_mul with multiple points and scalars - let res = std::embedded_curve_ops::multi_scalar_mul([g1, g1], [scalar, scalar]); - - // The results should be double the g1 point because the scalars are 1 and we pass in g1 twice - assert(double.x == res[0]); -} diff --git a/test_programs/execution_success/brillig_schnorr/Prover.toml b/test_programs/execution_success/brillig_schnorr/Prover.toml deleted file mode 100644 index 2faf2018e07..00000000000 --- a/test_programs/execution_success/brillig_schnorr/Prover.toml +++ /dev/null @@ -1,70 +0,0 @@ -message = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] -message_field = "0x010203040506070809" -pub_key_x = "0x04b260954662e97f00cab9adb773a259097f7a274b83b113532bce27fa3fb96a" -pub_key_y = "0x2fd51571db6c08666b0edfbfbc57d432068bccd0110a39b166ab243da0037197" -signature = [ - 1, - 13, - 119, - 112, - 212, - 39, - 233, - 41, - 84, - 235, - 255, - 93, - 245, - 172, - 186, - 83, - 157, - 253, - 76, - 77, - 33, - 128, - 178, - 15, - 214, - 67, - 105, - 107, - 177, - 234, - 77, - 48, - 27, - 237, - 155, - 84, - 39, - 84, - 247, - 27, - 22, - 8, - 176, - 230, - 24, - 115, - 145, - 220, - 254, - 122, - 135, - 179, - 171, - 4, - 214, - 202, - 64, - 199, - 19, - 84, - 239, - 138, - 124, - 12, -] diff --git a/test_programs/execution_success/brillig_schnorr/src/main.nr b/test_programs/execution_success/brillig_schnorr/src/main.nr deleted file mode 100644 index 03c635b4f6f..00000000000 --- a/test_programs/execution_success/brillig_schnorr/src/main.nr +++ /dev/null @@ -1,25 +0,0 @@ -use dep::std; -// Note: If main has any unsized types, then the verifier will never be able -// to figure out the circuit instance -unconstrained fn main( - message: [u8; 10], - message_field: Field, - pub_key_x: Field, - pub_key_y: Field, - signature: [u8; 64] -) { - // Regression for issue #2421 - // We want to make sure that we can accurately verify a signature whose message is a slice vs. an array - let message_field_bytes = message_field.to_be_bytes(10); - for i in 0..10 { - assert(message[i] == message_field_bytes[i]); - } - // Is there ever a situation where someone would want - // to ensure that a signature was invalid? - // Check that passing a slice as the message is valid - let valid_signature = std::schnorr::verify_signature_slice(pub_key_x, pub_key_y, signature, message_field_bytes); - assert(valid_signature); - // Check that passing an array as the message is valid - let valid_signature = std::schnorr::verify_signature(pub_key_x, pub_key_y, signature, message); - assert(valid_signature); -} diff --git a/test_programs/execution_success/brillig_signed_cmp/Nargo.toml b/test_programs/execution_success/brillig_signed_cmp/Nargo.toml deleted file mode 100644 index 3f485df4a82..00000000000 --- a/test_programs/execution_success/brillig_signed_cmp/Nargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "brillig_signed_cmp" -type = "bin" -authors = [""] - -[dependencies] diff --git a/test_programs/execution_success/brillig_to_be_bytes/Nargo.toml b/test_programs/execution_success/brillig_to_be_bytes/Nargo.toml deleted file mode 100644 index df6c818c90f..00000000000 --- a/test_programs/execution_success/brillig_to_be_bytes/Nargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "brillig_to_be_bytes" -type = "bin" -authors = [""] - -[dependencies] diff --git a/test_programs/execution_success/brillig_to_be_bytes/Prover.toml b/test_programs/execution_success/brillig_to_be_bytes/Prover.toml deleted file mode 100644 index 07fe857ac7c..00000000000 --- a/test_programs/execution_success/brillig_to_be_bytes/Prover.toml +++ /dev/null @@ -1 +0,0 @@ -x = "2040124" diff --git a/test_programs/execution_success/brillig_to_be_bytes/src/main.nr b/test_programs/execution_success/brillig_to_be_bytes/src/main.nr deleted file mode 100644 index 9d78411f060..00000000000 --- a/test_programs/execution_success/brillig_to_be_bytes/src/main.nr +++ /dev/null @@ -1,12 +0,0 @@ -unconstrained fn main(x: Field) -> pub [u8; 31] { - // The result of this byte array will be big-endian - let byte_array = x.to_be_bytes(31); - let mut bytes = [0; 31]; - for i in 0..31 { - bytes[i] = byte_array[i]; - } - assert(bytes[30] == 60); - assert(bytes[29] == 33); - assert(bytes[28] == 31); - bytes -} diff --git a/test_programs/execution_success/brillig_to_bytes_integration/Nargo.toml b/test_programs/execution_success/brillig_to_bytes_integration/Nargo.toml deleted file mode 100644 index 991f3d1e46c..00000000000 --- a/test_programs/execution_success/brillig_to_bytes_integration/Nargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "brillig_to_bytes_integration" -type = "bin" -authors = [""] - -[dependencies] diff --git a/test_programs/execution_success/brillig_to_bytes_integration/Prover.toml b/test_programs/execution_success/brillig_to_bytes_integration/Prover.toml deleted file mode 100644 index 23f7acea449..00000000000 --- a/test_programs/execution_success/brillig_to_bytes_integration/Prover.toml +++ /dev/null @@ -1,2 +0,0 @@ -x = "2040124" -_y = "0x2000000000000000000000000000000000000000000000000000000000000000" diff --git a/test_programs/execution_success/brillig_to_bytes_integration/src/main.nr b/test_programs/execution_success/brillig_to_bytes_integration/src/main.nr deleted file mode 100644 index e8e5b9db9ca..00000000000 --- a/test_programs/execution_success/brillig_to_bytes_integration/src/main.nr +++ /dev/null @@ -1,27 +0,0 @@ -use dep::std; - -unconstrained fn main(x: Field, _y: Field) { - // The result of this byte array will be big-endian - let y: Field = 2040124; - let be_byte_array = y.to_be_bytes(31); - // The result of this byte array will be little-endian - let le_byte_array = x.to_le_bytes(31); - - assert(le_byte_array[0] == 60); - assert(le_byte_array[0] == be_byte_array[30]); - assert(le_byte_array[1] == be_byte_array[29]); - assert(le_byte_array[2] == be_byte_array[28]); - - let z = 0 - 1; - let p_bytes = std::field::modulus_le_bytes(); - let z_bytes = z.to_le_bytes(32); - assert(p_bytes[10] == z_bytes[10]); - assert(p_bytes[0] == z_bytes[0] as u8 + 1 as u8); - - let p_bits = std::field::modulus_le_bits(); - let z_bits = z.to_le_bits(std::field::modulus_num_bits() as u32); - assert(z_bits[0] == 0); - assert(p_bits[100] == z_bits[100]); - - _y.to_le_bits(std::field::modulus_num_bits() as u32); -} diff --git a/test_programs/execution_success/brillig_to_le_bytes/Nargo.toml b/test_programs/execution_success/brillig_to_le_bytes/Nargo.toml deleted file mode 100644 index c2ce8ad01b5..00000000000 --- a/test_programs/execution_success/brillig_to_le_bytes/Nargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "brillig_to_le_bytes" -type = "bin" -authors = [""] - -[dependencies] diff --git a/test_programs/execution_success/brillig_to_le_bytes/Prover.toml b/test_programs/execution_success/brillig_to_le_bytes/Prover.toml deleted file mode 100644 index 07fe857ac7c..00000000000 --- a/test_programs/execution_success/brillig_to_le_bytes/Prover.toml +++ /dev/null @@ -1 +0,0 @@ -x = "2040124" diff --git a/test_programs/execution_success/brillig_to_le_bytes/src/main.nr b/test_programs/execution_success/brillig_to_le_bytes/src/main.nr deleted file mode 100644 index 77d292cf01b..00000000000 --- a/test_programs/execution_success/brillig_to_le_bytes/src/main.nr +++ /dev/null @@ -1,10 +0,0 @@ -unconstrained fn main(x: Field) -> pub [u8; 31] { - // The result of this byte array will be little-endian - let byte_array = x.to_le_bytes(31); - assert(byte_array.len() == 31); - let mut bytes = [0; 31]; - for i in 0..31 { - bytes[i] = byte_array[i]; - } - bytes -} diff --git a/test_programs/execution_success/brillig_top_level/Nargo.toml b/test_programs/execution_success/brillig_top_level/Nargo.toml deleted file mode 100644 index f74a2a82964..00000000000 --- a/test_programs/execution_success/brillig_top_level/Nargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "brillig_top_level" -type = "bin" -authors = [""] - -[dependencies] diff --git a/test_programs/execution_success/brillig_top_level/Prover.toml b/test_programs/execution_success/brillig_top_level/Prover.toml deleted file mode 100644 index a0150a0e562..00000000000 --- a/test_programs/execution_success/brillig_top_level/Prover.toml +++ /dev/null @@ -1,2 +0,0 @@ -x = "1" -array = ["4", "5", "6"] \ No newline at end of file diff --git a/test_programs/execution_success/brillig_top_level/src/main.nr b/test_programs/execution_success/brillig_top_level/src/main.nr deleted file mode 100644 index 6dfd98b2c3e..00000000000 --- a/test_programs/execution_success/brillig_top_level/src/main.nr +++ /dev/null @@ -1,6 +0,0 @@ -// Tests a very simple program. -// -// The feature being tested is brillig as the entry point. -unconstrained fn main(array: [Field; 3], x: pub Field) -> pub [Field; 2] { - [array[x], array[x + 1]] -} diff --git a/test_programs/execution_success/brillig_to_bits/Nargo.toml b/test_programs/execution_success/empty/Nargo.toml similarity index 67% rename from test_programs/execution_success/brillig_to_bits/Nargo.toml rename to test_programs/execution_success/empty/Nargo.toml index a18b769550d..168911f2b2b 100644 --- a/test_programs/execution_success/brillig_to_bits/Nargo.toml +++ b/test_programs/execution_success/empty/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "brillig_to_bits" +name = "empty" type = "bin" authors = [""] [dependencies] diff --git a/test_programs/execution_success/empty/src/main.nr b/test_programs/execution_success/empty/src/main.nr new file mode 100644 index 00000000000..f328e4d9d04 --- /dev/null +++ b/test_programs/execution_success/empty/src/main.nr @@ -0,0 +1 @@ +fn main() {} diff --git a/test_programs/execution_success/brillig_schnorr/Nargo.toml b/test_programs/execution_success/signed_cmp/Nargo.toml similarity index 68% rename from test_programs/execution_success/brillig_schnorr/Nargo.toml rename to test_programs/execution_success/signed_cmp/Nargo.toml index 1b598abbf74..642a0924678 100644 --- a/test_programs/execution_success/brillig_schnorr/Nargo.toml +++ b/test_programs/execution_success/signed_cmp/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "brillig_schnorr" +name = "signed_cmp" type = "bin" authors = [""] diff --git a/test_programs/execution_success/brillig_signed_cmp/Prover.toml b/test_programs/execution_success/signed_cmp/Prover.toml similarity index 100% rename from test_programs/execution_success/brillig_signed_cmp/Prover.toml rename to test_programs/execution_success/signed_cmp/Prover.toml diff --git a/test_programs/execution_success/brillig_signed_cmp/src/main.nr b/test_programs/execution_success/signed_cmp/src/main.nr similarity index 84% rename from test_programs/execution_success/brillig_signed_cmp/src/main.nr rename to test_programs/execution_success/signed_cmp/src/main.nr index 3e3ea0f4b0f..85746ada8f4 100644 --- a/test_programs/execution_success/brillig_signed_cmp/src/main.nr +++ b/test_programs/execution_success/signed_cmp/src/main.nr @@ -1,4 +1,4 @@ -unconstrained fn main(minus_one: i8) { +fn main(minus_one: i8) { assert(minus_one < 0); assert(0 < minus_one as u8); assert(0 > minus_one); diff --git a/test_programs/execution_success/brillig_array_eq/Nargo.toml b/test_programs/execution_success/signed_div/Nargo.toml similarity index 67% rename from test_programs/execution_success/brillig_array_eq/Nargo.toml rename to test_programs/execution_success/signed_div/Nargo.toml index 62ce392f96b..5ce137d8c0c 100644 --- a/test_programs/execution_success/brillig_array_eq/Nargo.toml +++ b/test_programs/execution_success/signed_div/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "brillig_array_eq" +name = "signed_div" type = "bin" authors = [""] diff --git a/test_programs/execution_success/brillig_signed_div/Prover.toml b/test_programs/execution_success/signed_div/Prover.toml similarity index 100% rename from test_programs/execution_success/brillig_signed_div/Prover.toml rename to test_programs/execution_success/signed_div/Prover.toml diff --git a/test_programs/execution_success/brillig_signed_div/src/main.nr b/test_programs/execution_success/signed_div/src/main.nr similarity index 100% rename from test_programs/execution_success/brillig_signed_div/src/main.nr rename to test_programs/execution_success/signed_div/src/main.nr diff --git a/test_programs/execution_success/brillig_wrapping/Nargo.toml b/test_programs/execution_success/to_bits/Nargo.toml similarity index 66% rename from test_programs/execution_success/brillig_wrapping/Nargo.toml rename to test_programs/execution_success/to_bits/Nargo.toml index a52246ba908..ef47f3b4ba1 100644 --- a/test_programs/execution_success/brillig_wrapping/Nargo.toml +++ b/test_programs/execution_success/to_bits/Nargo.toml @@ -1,6 +1,5 @@ [package] -name = "brillig_wrapping" +name = "to_bits" type = "bin" authors = [""] - [dependencies] diff --git a/test_programs/execution_success/brillig_to_bits/src/main.nr b/test_programs/execution_success/to_bits/src/main.nr similarity index 94% rename from test_programs/execution_success/brillig_to_bits/src/main.nr rename to test_programs/execution_success/to_bits/src/main.nr index 7ff3d2467b5..18f65f0bd66 100644 --- a/test_programs/execution_success/brillig_to_bits/src/main.nr +++ b/test_programs/execution_success/to_bits/src/main.nr @@ -1,6 +1,6 @@ use dep::std; -unconstrained fn main() { +fn main() { let field = 1000; let be_bits = field.to_be_bits(16); let le_bits = field.to_le_bits(16); diff --git a/test_programs/execution_success/unconstrained_empty/Nargo.toml b/test_programs/execution_success/unconstrained_empty/Nargo.toml deleted file mode 100644 index 48d0f5938d8..00000000000 --- a/test_programs/execution_success/unconstrained_empty/Nargo.toml +++ /dev/null @@ -1,5 +0,0 @@ -[package] -name = "unconstrained_empty" -type = "bin" -authors = [""] -[dependencies] diff --git a/test_programs/execution_success/unconstrained_empty/src/main.nr b/test_programs/execution_success/unconstrained_empty/src/main.nr deleted file mode 100644 index 5e5fb297236..00000000000 --- a/test_programs/execution_success/unconstrained_empty/src/main.nr +++ /dev/null @@ -1 +0,0 @@ -unconstrained fn main() {} diff --git a/test_programs/execution_success/brillig_signed_div/Nargo.toml b/test_programs/execution_success/wrapping_operations/Nargo.toml similarity index 65% rename from test_programs/execution_success/brillig_signed_div/Nargo.toml rename to test_programs/execution_success/wrapping_operations/Nargo.toml index 4bb9c5ecc1c..3a28b3461ec 100644 --- a/test_programs/execution_success/brillig_signed_div/Nargo.toml +++ b/test_programs/execution_success/wrapping_operations/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "brillig_signed_div" +name = "wrapping_operations" type = "bin" authors = [""] diff --git a/test_programs/execution_success/brillig_wrapping/Prover.toml b/test_programs/execution_success/wrapping_operations/Prover.toml similarity index 100% rename from test_programs/execution_success/brillig_wrapping/Prover.toml rename to test_programs/execution_success/wrapping_operations/Prover.toml diff --git a/test_programs/execution_success/brillig_wrapping/src/main.nr b/test_programs/execution_success/wrapping_operations/src/main.nr similarity index 79% rename from test_programs/execution_success/brillig_wrapping/src/main.nr rename to test_programs/execution_success/wrapping_operations/src/main.nr index 4153a466057..85fd65b193c 100644 --- a/test_programs/execution_success/brillig_wrapping/src/main.nr +++ b/test_programs/execution_success/wrapping_operations/src/main.nr @@ -1,6 +1,6 @@ use dep::std; -unconstrained fn main(x: u8, y: u8) { +fn main(x: u8, y: u8) { assert(std::wrapping_sub(x, 1) == y); assert(std::wrapping_add(y, 1) == x); assert(std::wrapping_mul(y, y) == 1); diff --git a/tooling/nargo_cli/build.rs b/tooling/nargo_cli/build.rs index 74042cf4e40..53c3966cb4c 100644 --- a/tooling/nargo_cli/build.rs +++ b/tooling/nargo_cli/build.rs @@ -38,6 +38,26 @@ fn main() { generate_compile_failure_tests(&mut test_file, &test_dir); } +/// Some tests are explicitly ignored in brillig due to them failing. +/// These should be fixed and removed from this list. +const IGNORED_BRILLIG_TESTS: [&str; 11] = [ + // Takes a very long time to execute as large loops do not get simplified. + &"regression_4709", + // bit sizes for bigint operation doesn't match up. + &"bigint", + // ICE due to looking for function which doesn't exist. + &"fold_after_inlined_calls", + &"fold_basic", + &"fold_basic_nested_call", + &"fold_call_witness_condition", + &"fold_complex_outputs", + &"fold_distinct_return", + &"fold_fibonacci", + &"fold_numeric_generic_poseidon", + // Expected to fail as test asserts on which runtime it is in. + &"is_unconstrained", +]; + fn generate_execution_success_tests(test_file: &mut File, test_data_dir: &Path) { let test_sub_dir = "execution_success"; let test_data_dir = test_data_dir.join(test_sub_dir); @@ -55,6 +75,9 @@ fn generate_execution_success_tests(test_file: &mut File, test_data_dir: &Path) }; let test_dir = &test_dir.path(); + let brillig_ignored = + if IGNORED_BRILLIG_TESTS.contains(&test_name.as_str()) { "\n#[ignore]" } else { "" }; + write!( test_file, r#" @@ -66,6 +89,17 @@ fn execution_success_{test_name}() {{ cmd.arg("--program-dir").arg(test_program_dir); cmd.arg("execute").arg("--force"); + cmd.assert().success(); +}} + +#[test]{brillig_ignored} +fn execution_success_{test_name}_brillig() {{ + let test_program_dir = PathBuf::from("{test_dir}"); + + let mut cmd = Command::cargo_bin("nargo").unwrap(); + cmd.arg("--program-dir").arg(test_program_dir); + cmd.arg("execute").arg("--force").arg("--force-brillig"); + cmd.assert().success(); }} "#,