From f5c4e185d49c665b29f3f62071d310afcf133363 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sat, 3 Aug 2024 13:26:58 +0200 Subject: [PATCH] Redact compiledCode & hash in generated blueprint tests The point of those tests is to ensure that blueprints are generated properly, irrespective of the generated code. It is annoying to constantly get those test failing every time we introduce an optimization or something that would slightly change the generated UPLC. --- Cargo.lock | 53 +++++++++++++++++++ Cargo.toml | 2 +- crates/aiken-lang/src/gen_uplc/builder.rs | 8 ++- ...int__validator__tests__annotated_data.snap | 4 +- ...blueprint__validator__tests__generics.snap | 4 +- ...lidator__tests__list_2_tuples_as_list.snap | 4 +- ...__validator__tests__list_pairs_as_map.snap | 4 +- ...ueprint__validator__tests__mint_basic.snap | 4 +- ..._validator__tests__mint_parameterized.snap | 4 +- ...eprint__validator__tests__nested_data.snap | 4 +- ...dator__tests__recursive_generic_types.snap | 4 +- ...nt__validator__tests__recursive_types.snap | 4 +- ...t__validator__tests__simplified_hydra.snap | 4 +- ...__blueprint__validator__tests__tuples.snap | 4 +- .../aiken-project/src/blueprint/validator.rs | 8 ++- 15 files changed, 86 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 39dbb7d4..5e54b9da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1415,6 +1415,8 @@ dependencies = [ "console", "lazy_static", "linked-hash-map", + "pest", + "pest_derive", "serde", "similar", ] @@ -2090,6 +2092,51 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pest" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "pest_meta" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + [[package]] name = "petgraph" version = "0.6.4" @@ -3088,6 +3135,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + [[package]] name = "unarray" version = "0.1.4" diff --git a/Cargo.toml b/Cargo.toml index 13864e29..a20b5ec2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,7 @@ x86_64-unknown-linux-gnu = "ubuntu-22.04" [workspace.dependencies] walkdir = "2.3.2" -insta = { version = "1.30.0", features = ["yaml", "json"] } +insta = { version = "1.30.0", features = ["yaml", "json", "redactions"] } miette = { version = "7.2.0", features = ["fancy"] } pallas-addresses = "0.22.0" pallas-codec = { version = "0.22.0", features = ["num-bigint"] } diff --git a/crates/aiken-lang/src/gen_uplc/builder.rs b/crates/aiken-lang/src/gen_uplc/builder.rs index 7c5cb413..de84735f 100644 --- a/crates/aiken-lang/src/gen_uplc/builder.rs +++ b/crates/aiken-lang/src/gen_uplc/builder.rs @@ -365,11 +365,9 @@ pub fn find_introduced_variables(air_tree: &AirTree) -> Vec { .cloned() .chain(snd_name.iter().cloned()) .collect_vec(), - AirTree::PairAccessor { fst, snd, .. } => fst - .iter() - .cloned() - .chain(snd.iter().cloned()) - .collect_vec(), + AirTree::PairAccessor { fst, snd, .. } => { + fst.iter().cloned().chain(snd.iter().cloned()).collect_vec() + } AirTree::PairClause { fst_name, snd_name, .. } => fst_name diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__annotated_data.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__annotated_data.snap index 51ee325c..3877b76f 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__annotated_data.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__annotated_data.snap @@ -16,8 +16,8 @@ description: "Code:\n\npub type Foo {\n foo: Int\n}\n\nvalidator {\n fn an "$ref": "#/definitions/Data" } }, - "compiledCode": "5833010000323222253330044a22930a99802a491856616c696461746f722072657475726e65642066616c736500136565734ae701", - "hash": "52a21f2b4f282074cb6c5aefef20d18c25f3657ca348c73875810c37", + "compiledCode": "", + "hash": "", "definitions": { "Data": { "title": "Data", diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__generics.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__generics.snap index 5ad0817c..55ac598c 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__generics.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__generics.snap @@ -10,8 +10,8 @@ description: "Code:\n\ntype Either {\n Left(left)\n Right(rig "$ref": "#/definitions/test_module~1Either$ByteArray_test_module~1Interval$Int" } }, - "compiledCode": "590156010000323232323232323232232253330054a22930a9980324811856616c696461746f722072657475726e65642066616c73650013656323253330053370e90000008992999805000802899299980598068010a4c00c64a66666601c00200c00c00c00c26eb8004c02c004c020dd50010a99980299b87480080044c94ccc0280040144c94ccc02cc0340084c9263253330083370e90000008992999806800804099299980718080010a4c01264a66666602200201201201226eb4004024c038004c02cdd50010a99980419b874800800454ccc030c02cdd50010a4c00e00e60126ea8004018c94cccccc0380044004018018018018c02c004c020dd500100218031baa001533333300a001100100200200200215330024912a72656465656d65723a204569746865723c4279746541727261792c20496e74657276616c3c496e743e3e00165734ae7155ceaab9e5573eae855d12ba41", - "hash": "d9891fd7080a2e6e3a68d330ef987b6950115bbe0700f1dfeab7af2f", + "compiledCode": "", + "hash": "", "definitions": { "ByteArray": { "dataType": "bytes" diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__list_2_tuples_as_list.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__list_2_tuples_as_list.snap index 7fb19763..ed44c249 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__list_2_tuples_as_list.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__list_2_tuples_as_list.snap @@ -10,8 +10,8 @@ description: "Code:\n\ntype Dict {\n inner: List<(ByteArray, valu "$ref": "#/definitions/test_module~1Dict$test_module~1UUID_Int" } }, - "compiledCode": "59012c010000323232323232323232232253330054a22930a9980324811856616c696461746f722072657475726e65642066616c736500136563253330043370e900018031baa0011325333009001004132533300a300c002132498c8cc004004008894ccc03000452613233003003300f0023232533300e00100913232533301000100b132533301130130021498030c94cccccc0500040300300304dd68008061808800980880119299999980900080500500500509bae001300f001533333301000100800813758002010010601a00200a64a66666601a00200a00a26eb0004014014c028004c01cdd5000801a99999980500088008010010010010a9980124811972656465656d65723a20446963743c555549442c20496e743e00165734ae7155ceaab9e5573eae855d12ba41", - "hash": "41a2fefe69a528618655adf8d9c426133a166851b2acf234ff889400", + "compiledCode": "", + "hash": "", "definitions": { "ByteArray": { "dataType": "bytes" diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__list_pairs_as_map.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__list_pairs_as_map.snap index 1e470b96..ab44d436 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__list_pairs_as_map.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__list_pairs_as_map.snap @@ -10,8 +10,8 @@ description: "Code:\n\ntype Dict {\n inner: List", + "hash": "", "definitions": { "ByteArray": { "dataType": "bytes" diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__mint_basic.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__mint_basic.snap index 49c6b486..92f879a9 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__mint_basic.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__mint_basic.snap @@ -10,8 +10,8 @@ description: "Code:\n\nvalidator {\n fn mint(redeemer: Data, ctx: Data) {\n "$ref": "#/definitions/Data" } }, - "compiledCode": "583301000032322253330034a22930a9980224811856616c696461746f722072657475726e65642066616c736500136565734ae701", - "hash": "9fc33a6ffaa8d1f600c161aa383739d5af37807ed83347cc133521c9", + "compiledCode": "", + "hash": "", "definitions": { "Data": { "title": "Data", diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__mint_parameterized.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__mint_parameterized.snap index 1e977327..125395a1 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__mint_parameterized.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__mint_parameterized.snap @@ -18,8 +18,8 @@ description: "Code:\n\nvalidator(utxo_ref: Int) {\n fn mint(redeemer: Data, ctx } } ], - "compiledCode": "583701000032322322253330054a22930a998032491856616c696461746f722072657475726e65642066616c73650013656375a002ae695ce1", - "hash": "2837caccfd96d636a07e0da584ebbef94069bd7bfa4447096ecd9b80", + "compiledCode": "", + "hash": "", "definitions": { "Data": { "title": "Data", diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__nested_data.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__nested_data.snap index b79d6e15..e97ecaed 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__nested_data.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__nested_data.snap @@ -16,8 +16,8 @@ description: "Code:\n\npub type Foo {\n foo: Data\n}\n\nvalidator {\n fn nes "$ref": "#/definitions/Int" } }, - "compiledCode": "58bc01000032323232323232323232232232253330084a22930a99804a491856616c696461746f722072657475726e65642066616c73650013656533333300d0010040040041375a00200864a66600a66e1d200030073754002264a66601400200a264a666016601a004293003180580098041baa001004533333300b001100100300300300315330034910d72656465656d65723a20496e74001615330024910a646174756d3a20466f6f00165734ae7155ceaab9e5573eae855d12ba41", - "hash": "2f3648f0a3fc92a7a6df9e23c8edf3c81c351e83da214f52f1b66d51", + "compiledCode": "", + "hash": "", "definitions": { "Data": { "title": "Data", diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__recursive_generic_types.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__recursive_generic_types.snap index 734cf731..6b20e160 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__recursive_generic_types.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__recursive_generic_types.snap @@ -16,8 +16,8 @@ description: "Code:\n\npub type LinkedList {\n Cons(a, LinkedList)\n Nil "$ref": "#/definitions/test_module~1LinkedList$Int" } }, - "compiledCode": "5902dc01000032323232323232323232232323232322322533300c4a22930a99806a491856616c696461746f722072657475726e65642066616c73650013656330035333333011001100100800800800800833232232533300c3008001132533301100100c13253330123014002132498cc014004034034c94cccccc0540044004034034034034c048004c03cdd50010a99980618038008992999808800806099192999809800807099299980a180b00109924ca66602800201e26464a66602c002022264a66602e603200426493191980080080111299980c8008a4c264660060066038004646601ea66666603a002200202a02a02a02a02a603400202464a66666603400202402426eb0004048048c05c004c05c008c94cccccc0600040400400400404dd7000980a80080799299999980b80080780789bac00100f00f3014001301400232533333301500100d00d00d1375a00201a6024002601e6ea800802cc034dd5000980080091119299980618040008992999808800806099192999809800807099299980a180b00109924c66601001000201e01e64a66666602e002200201e01e01e01e6028002602800464a66666602a002264a66602660240022a66601e60146022002294454ccc03cc02cc0440045280070071baa00100d00d00d00d3012001300f37540062a666018600e0022a666020601e6ea800c52600b00b300d3754004a66666601e00a200a00e00e00e00e600200244464a666014600c002264a66601e00201226464a666022002016264a66602460280042649319980400400080600619299999980a80088008060060060061809000980900119299999980980080500500509bad00100a3010001300d37540062a666014600a0022a66601c601a6ea800c526008008300b37540046e1d2002370e90000a99801a4811972656465656d65723a204c696e6b65644c6973743c496e743e001615330024910a646174756d3a20466f6f00165734ae7155ceaab9e5573eae855d12ba41", - "hash": "84b32ffc00b858865c8047f8145074fd841a828bfa1cd48c25e204ec", + "compiledCode": "", + "hash": "", "definitions": { "Bool": { "title": "Bool", diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__recursive_types.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__recursive_types.snap index c6d9c9fd..9a931f7f 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__recursive_types.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__recursive_types.snap @@ -10,8 +10,8 @@ description: "Code:\n\npub type Expr {\n Val(Int)\n Sum(Expr, Expr)\n Mul(Exp "$ref": "#/definitions/test_module~1Expr" } }, - "compiledCode": "590182010000323232323232323232232253330054a22930a9980324811856616c696461746f722072657475726e65642066616c73650013656333230010012223253330073370e90000008992999806000803899299980698078010a4c01064a66666602000201001001026eb4004020c034004c028dd50018a99980399b87480080044c94ccc03000401c4c8c94ccc0380040244c94ccc03cc0440084c8c92633300900900200b33300800800300a00a325333333012001100100a00a00a00a300f001300f0023253333330100011001008008008008300d001300a37540062a66600e66e1d2004001132533300c00100713232533300e001009132533300f301100213232498ccc02402400802cccc02002000c028028c94cccccc0480044004028028028028c03c004c03c008c94cccccc0400044004020020020020c034004c028dd500180318041baa002533333300a0011001002002002002002153300249010e72656465656d65723a204578707200165734ae7155ceaab9e5573eae855d12ba41", - "hash": "5e5d31d96828f3f0b12ac296adc263de4ac0964cae3cac0164f525e1", + "compiledCode": "", + "hash": "", "definitions": { "Int": { "dataType": "integer" diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__simplified_hydra.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__simplified_hydra.snap index 915850e4..0fefe40f 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__simplified_hydra.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__simplified_hydra.snap @@ -16,8 +16,8 @@ description: "Code:\n\n/// On-chain state\ntype State {\n /// The contestatio "$ref": "#/definitions/test_module~1Input" } }, - "compiledCode": "5901c60100003232323232323232323223232232253330094a22930a998052491856616c696461746f722072657475726e65642066616c736500136563232533300930050011533300d300c37540042930038a99980499b874800800454ccc034c030dd50010a4c00e2a66601266e1d20040011533300d300c375400429300380398051baa001533333300e0011001005005005005325333006300230083754002264a66601600200c26464a66601a00201026464a66601e002014264a6660206024004264649319198008008029129998098008a4c26466006006602c00464a66666602e00201e01e01e01e26eb8004c0500054ccc030c020c038dd500289929998088008060992999809180a0010a4c01a64a66666602a00201a01a01a26eb4004034c048004c03cdd500280580599299999980980080580580580589bae0013010001301000232533333301100100900913758002012012601c002601c00464a66666601e002200200e00e00e00e601800260126ea80040154cccccc0300084008010010010010dc3a40002a6600692010f72656465656d65723a20496e707574001615330024910c646174756d3a20537461746500165734ae7155ceaab9e5573eae855d12ba41", - "hash": "02a625742f53a006e38b3c9abbcd3c77002815705ad1f6a5a6b02813", + "compiledCode": "", + "hash": "", "definitions": { "ByteArray": { "dataType": "bytes" diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__tuples.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__tuples.snap index 0dd55e60..309e9c7b 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__tuples.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__tuples.snap @@ -16,8 +16,8 @@ description: "Code:\n\nvalidator {\n fn tuples(datum: (Int, ByteArray), redeeme "$ref": "#/definitions/Tuple$Int_Int_Int" } }, - "compiledCode": "590158010000323232323232323223232232322533300a4a22930a99805a491856616c696461746f722072657475726e65642066616c73650013656533300a00100613232533300c00100813232533300e00100a132533300f3011002149802cc94cccccc04800402c02c02c4dd68008059807800980780119299999980800080480480489bad001009300d001300d00232533333300e0010070070071375a00200e6016002a66666601800200a00a26eb00040140154ccc01c0040104c8c94ccc0240040184c94ccc028c03000852600732533333300d0010070070070071375c0026014002601400464a66666601600200a00a00a26eb4004014c0200054cccccc02400400c00c4dd60008018018a99801a4811972656465656d65723a2028496e742c20496e742c20496e74290016153300249117646174756d3a2028496e742c204279746541727261792900165734ae7155cfaba15744ae91", - "hash": "a537eed4619425e300f33b8a9734144c9e8d4ab2177e563e9a2881c3", + "compiledCode": "", + "hash": "", "definitions": { "ByteArray": { "dataType": "bytes" diff --git a/crates/aiken-project/src/blueprint/validator.rs b/crates/aiken-project/src/blueprint/validator.rs index f701d633..292728d5 100644 --- a/crates/aiken-project/src/blueprint/validator.rs +++ b/crates/aiken-project/src/blueprint/validator.rs @@ -307,7 +307,13 @@ mod tests { description => concat!("Code:\n\n", indoc::indoc! { $code }), omit_expression => true }, { - insta::assert_json_snapshot!(validator); + insta::assert_json_snapshot!( + validator, + { + ".compiledCode" => "", + ".hash" => "" + } + ); }), }; };