efi_loader: selftest: enable APPEND_WRITE tests
authorAKASHI Takahiro <takahiro.akashi@linaro.org>
Fri, 6 Sep 2019 06:09:53 +0000 (15:09 +0900)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Fri, 20 Sep 2019 18:09:19 +0000 (20:09 +0200)
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>
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_selftest/efi_selftest_variables.c

index 06c1a03..a6b41d1 100644 (file)
@@ -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;