summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAnastasia Klimchuk <aklm@chromium.org>2022-08-30 12:45:56 +1000
committerAnastasia Klimchuk <aklm@chromium.org>2022-09-04 22:47:52 +0000
commit5fbe87ce504be99a12c196415e3da5e04605d56a (patch)
treecd8ac9ff358e2dbc00f4fbe2b9c8c8722e5cbcf2 /tests
parent549b3998e8a6f0c0b053792d67503ea3fb31b18d (diff)
downloadflashrom-5fbe87ce504be99a12c196415e3da5e04605d56a.tar.gz
flashrom-5fbe87ce504be99a12c196415e3da5e04605d56a.tar.bz2
flashrom-5fbe87ce504be99a12c196415e3da5e04605d56a.zip
tests/lifecycle: Run shutdown for init error paths
`run_init_error_path` tests the scenario when init function of a programmer fails. Init can fail at different phases and depending on a specific test scenario it could be before or after shutdown function has been registered. If shutdown function has already been registered, it needs to run because it cleans up the resources allocated during init. This patch prevents memory leaks. BUG=b:181803212 TEST=ninja test Change-Id: I604edff18e35b7c044b73d3a8adfa8c800eddfd2 Signed-off-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/67198 Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Reviewed-by: Felix Singer <felixsinger@posteo.net> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/lifecycle.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/lifecycle.c b/tests/lifecycle.c
index 11884f88e..568b1790f 100644
--- a/tests/lifecycle.c
+++ b/tests/lifecycle.c
@@ -87,6 +87,17 @@ void run_init_error_path(void **state, const struct io_mock *io, const struct pr
assert_int_equal(error_code, flashrom_programmer_init(&flashprog, prog->name, param_dup));
printf("... init failed with error code %i as expected\n", error_code);
+ /*
+ * `flashrom_programmer_shutdown` runs only registered shutdown functions, which means
+ * if nothing has been registered then nothing runs.
+ * Since this is testing error path on initialisation and error can happen at different
+ * phases of init, we don't know whether shutdown function has already been registered
+ * or not yet. Running `flashrom_programmer_shutdown` covers both situations.
+ */
+ printf("Running programmer shutdown in case anything got registered...\n");
+ assert_int_equal(0, flashrom_programmer_shutdown(flashprog));
+ printf("... completed\n");
+
free(param_dup);
io_mock_register(NULL);