diff mbox series

[U-Boot,v2,2/2] efi_loader: selftest: enable APPEND_WRITE tests

Message ID 20190906060953.31481-3-takahiro.akashi@linaro.org
State Accepted
Commit 5a24239c951e8dc3177b63881631868b8d487920
Delegated to: Heinrich Schuchardt
Headers show
Series efi_loader: support APPEND_WRITE | expand

Commit Message

AKASHI Takahiro Sept. 6, 2019, 6:09 a.m. UTC
Now that APPEND_WRITE is supported,
the result check for the only existing test case should be changed to
'todo' to 'error', while two more test cases are added.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
---
 lib/efi_selftest/efi_selftest_variables.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/lib/efi_selftest/efi_selftest_variables.c b/lib/efi_selftest/efi_selftest_variables.c
index 06c1a032dd04..a6b41d1f008d 100644
--- a/lib/efi_selftest/efi_selftest_variables.c
+++ b/lib/efi_selftest/efi_selftest_variables.c
@@ -21,6 +21,9 @@  static const efi_guid_t guid_vendor0 =
 static const efi_guid_t guid_vendor1 =
 	EFI_GUID(0xff629290, 0x1fc1, 0xd73f,
 		 0x8f, 0xb1, 0x32, 0xf9, 0x0c, 0xa0, 0x42, 0xea);
+static const efi_guid_t guid_global =
+	EFI_GUID(0x8be4df61, 0x93ca, 0x11d2,
+		 0xaa, 0x0d, 0x00, 0xe0, 0x98, 0x03, 0x2b, 0x8c);
 
 /*
  * Setup unit test.
@@ -116,7 +119,7 @@  static int execute(void)
 				    EFI_VARIABLE_APPEND_WRITE,
 				    7, v + 8);
 	if (ret != EFI_SUCCESS) {
-		efi_st_todo("SetVariable(APPEND_WRITE) failed\n");
+		efi_st_error("SetVariable(APPEND_WRITE) failed\n");
 	} else {
 		len = EFI_ST_MAX_DATA_SIZE;
 		ret = runtime->get_variable(L"efi_st_var1", &guid_vendor1,
@@ -131,6 +134,21 @@  static int execute(void)
 		if (memcmp(data, v, len))
 			efi_st_todo("GetVariable returned wrong value\n");
 	}
+	/* Append variable 2 */
+	ret = runtime->set_variable(L"efi_none", &guid_vendor1,
+				    EFI_VARIABLE_BOOTSERVICE_ACCESS |
+				    EFI_VARIABLE_APPEND_WRITE,
+				    15, v);
+	if (ret != EFI_NOT_FOUND)
+		efi_st_error("SetVariable(APPEND_WRITE) with size 0 to non-existent variable returns wrong code\n");
+	/* Append variable 3 */
+	ret = runtime->set_variable(L"PlatformLangCodes", &guid_global,
+				    EFI_VARIABLE_BOOTSERVICE_ACCESS |
+				    EFI_VARIABLE_RUNTIME_ACCESS |
+				    EFI_VARIABLE_APPEND_WRITE,
+				    15, v);
+	if (ret != EFI_WRITE_PROTECTED)
+		efi_st_todo("SetVariable(APPEND_WRITE) to read-only variable returns wrong code\n");
 	/* Enumerate variables */
 	boottime->set_mem(&guid, 16, 0);
 	*varname = 0;