pvmfw_avb: Derive Eq for VerifiedBootData
Derive the trait, which can be used in tests assert_eq! and fill force a
programmer adding a new field to the structure to cover it in tests:
error[E0063]: missing field `X` in initializer of `pvmfw_avb::VerifiedBootData<'_>`
On mismatch, assert_eq prints out the debug representation of the inputs:
STACKTRACE:
---- TEST_NAME stderr ----
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `VerifiedBootData { debug_level: None, kernel_digest: [...], initrd_digest: None, }`,
right: `VerifiedBootData { debug_level: None, kernel_digest: [...], initrd_digest: Some([...]) }`,
packages/modules/Virtualization/pvmfw/avb/tests/api_test.rs:71:5
Note: no functional change intended.
Test: atest libpvmfw_avb.integration_test
Change-Id: Ia9b7046ff24ebffe6d15a6cc936a3ac2e8a5d4b9
diff --git a/pvmfw/avb/tests/api_test.rs b/pvmfw/avb/tests/api_test.rs
index 261d8a8..1d7369d 100644
--- a/pvmfw/avb/tests/api_test.rs
+++ b/pvmfw/avb/tests/api_test.rs
@@ -18,7 +18,7 @@
use anyhow::{anyhow, Result};
use avb_bindgen::{AvbFooter, AvbVBMetaImageHeader};
-use pvmfw_avb::{verify_payload, AvbSlotVerifyError, DebugLevel};
+use pvmfw_avb::{verify_payload, AvbSlotVerifyError, DebugLevel, VerifiedBootData};
use std::{fs, mem::size_of, ptr};
use utils::*;
@@ -60,10 +60,11 @@
)
.map_err(|e| anyhow!("Verification failed. Error: {}", e))?;
- assert_eq!(DebugLevel::None, verified_boot_data.debug_level);
- let digest = hash(&[&hex::decode("1111")?, &fs::read(UNSIGNED_TEST_IMG_PATH)?]);
- assert_eq!(digest, verified_boot_data.kernel_digest);
- assert!(verified_boot_data.initrd_digest.is_none());
+ let kernel_digest = hash(&[&hex::decode("1111")?, &fs::read(UNSIGNED_TEST_IMG_PATH)?]);
+ let expected_boot_data =
+ VerifiedBootData { debug_level: DebugLevel::None, kernel_digest, initrd_digest: None };
+ assert_eq!(expected_boot_data, verified_boot_data);
+
Ok(())
}