Work around the absence of a spare slot when there is only
one configuration slot
Signed-off-by: Earl Chew <[email protected]>
---
tools/tests/test_ebgenv_api.c | 23 +++++++++++++++--------
tools/tests/test_ebgenv_api_internal.c | 2 +-
2 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/tools/tests/test_ebgenv_api.c b/tools/tests/test_ebgenv_api.c
index 8efa9d3..a248989 100644
--- a/tools/tests/test_ebgenv_api.c
+++ b/tools/tests/test_ebgenv_api.c
@@ -91,6 +91,7 @@ START_TEST(ebgenv_api_ebg_env_create_new)
char buffer[10];
char *kernelfile = "kernel123";
char *kernelparams = "param456";
+ int watchdogtimeout = 44;
memset(&e, 0, sizeof(e));
memset(envdata, 0, sizeof(envdata));
@@ -110,13 +111,19 @@ START_TEST(ebgenv_api_ebg_env_create_new)
* environment is created. The new environment must overwrite the
* oldest environment and revision and ustate must be set correctly.
*/
- envdata[ENV_NUM_CONFIG_PARTS-1].watchdog_timeout_sec = 44;
- (void)str8to16(bufferw, kernelfile);
- memcpy(envdata[ENV_NUM_CONFIG_PARTS-1].kernelfile, bufferw,
- strlen(kernelfile) * 2 + 2);
- (void)str8to16(bufferw, kernelparams);
- memcpy(envdata[ENV_NUM_CONFIG_PARTS-1].kernelparams, bufferw,
- strlen(kernelparams) * 2 + 2);
+ if (ENV_NUM_CONFIG_PARTS > 1) {
+ envdata[ENV_NUM_CONFIG_PARTS-1].watchdog_timeout_sec =
watchdogtimeout;
+ (void)str8to16(bufferw, kernelfile);
+ memcpy(envdata[ENV_NUM_CONFIG_PARTS-1].kernelfile, bufferw,
+ strlen(kernelfile) * 2 + 2);
+ (void)str8to16(bufferw, kernelparams);
+ memcpy(envdata[ENV_NUM_CONFIG_PARTS-1].kernelparams, bufferw,
+ strlen(kernelparams) * 2 + 2);
+ } else {
+ kernelfile = "";
+ kernelparams = "";
+ watchdogtimeout = 0;
+ }
errno = 0;
bgenv_init_fake.return_val = true;
@@ -132,7 +139,7 @@ START_TEST(ebgenv_api_ebg_env_create_new)
((BGENV *)e.bgenv)->data->revision, ENV_NUM_CONFIG_PARTS+1);
ck_assert_int_eq(((BGENV *)e.bgenv)->data->ustate, USTATE_OK);
- ck_assert_int_eq(((BGENV *)e.bgenv)->data->watchdog_timeout_sec, 44);
+ ck_assert_int_eq(((BGENV *)e.bgenv)->data->watchdog_timeout_sec,
watchdogtimeout);
(void)str16to8(buffer, ((BGENV *)e.bgenv)->data->kernelfile);
ck_assert_int_eq(strcmp(buffer, kernelfile), 0);
(void)str16to8(buffer, ((BGENV *)e.bgenv)->data->kernelparams);
diff --git a/tools/tests/test_ebgenv_api_internal.c
b/tools/tests/test_ebgenv_api_internal.c
index 1ed1d99..6a3d816 100644
--- a/tools/tests/test_ebgenv_api_internal.c
+++ b/tools/tests/test_ebgenv_api_internal.c
@@ -248,7 +248,7 @@ START_TEST(ebgenv_api_internal_bgenv_create_new)
ck_assert(handle != NULL);
ck_assert(handle->data == &envdata[max-1]);
ck_assert(envdata[max-1].revision == max+1);
- ck_assert(envdata[max-1].watchdog_timeout_sec == 30);
+ ck_assert(envdata[max-1].watchdog_timeout_sec == (max == 1 ? 0 : 30));
free(handle);
}