Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d25858c authored by Martin Geisler's avatar Martin Geisler
Browse files

pdl: Generate canonical tests with prettyplease

This removes another dependency on rustfmt.

Tag: #refactor
Bug: 274187738
Test: atest pdl_tests pdl_rust_generator_tests_{le,be} pdl_generated_files_compile
Change-Id: I7eb435fcb7583794f12ab23f4ba48d595ac02524
parent c6eda2c0
Loading
Loading
Loading
Loading
+5 −16
Original line number Diff line number Diff line
@@ -245,6 +245,7 @@ rust_binary_host {
    name: "pdl_generate_tests",
    srcs: ["src/bin/generate-canonical-tests.rs"],
    rustlibs: [
        "libprettyplease",
        "libproc_macro2",
        "libquote",
        "libserde",
@@ -254,32 +255,20 @@ rust_binary_host {
    ],
}

genrule_defaults {
    name: "pdl_rust_generator_src_defaults",
    tools: [
        ":pdl_generate_tests",
        ":rustfmt",
    ],
}

genrule {
    name: "pdl_rust_generator_tests_le_src",
    cmd: "set -o pipefail;" +
        " $(location :pdl_generate_tests) $(in) pdl_le_backend |" +
        " $(location :rustfmt) > $(out)",
    cmd: "$(location :pdl_generate_tests) $(in) pdl_le_backend > $(out)",
    srcs: ["tests/canonical/le_test_vectors.json"],
    out: ["le_canonical.rs"],
    defaults: ["pdl_rust_generator_src_defaults"],
    tools: [":pdl_generate_tests"],
}

genrule {
    name: "pdl_rust_generator_tests_be_src",
    cmd: "set -o pipefail;" +
        " $(location :pdl_generate_tests) $(in) pdl_be_backend |" +
        " $(location :rustfmt) > $(out)",
    cmd: "$(location :pdl_generate_tests) $(in) pdl_be_backend > $(out)",
    srcs: ["tests/canonical/be_test_vectors.json"],
    out: ["be_canonical.rs"],
    defaults: ["pdl_rust_generator_src_defaults"],
    tools: [":pdl_generate_tests"],
}

rust_test_host {
+10 −11
Original line number Diff line number Diff line
@@ -128,17 +128,16 @@ fn generate_unit_tests(input: &str, packet_names: &[&str], module_name: &str) {
    }

    // TODO(mgeisler): make the generated code clean from warnings.
    println!("#![allow(warnings, missing_docs)]");
    println!();
    println!(
        "{}",
        &quote! {
    let code = quote! {
        #![allow(warnings, missing_docs)]

        use #module::Packet;
        use serde_json::json;

        #(#tests)*
        }
    );
    };
    let syntax_tree = syn::parse2::<syn::File>(code).expect("Could not parse {code:#?}");
    println!("{}", prettyplease::unparse(&syntax_tree));
}

fn main() {