[U-Boot] [PATCH v3 2/2] test/py: add test for whitelist of variables while importing environment
Simon Glass
sjg at chromium.org
Sat May 26 02:07:43 UTC 2018
Hi,
On 25 May 2018 at 02:38, Quentin Schulz <quentin.schulz at bootlin.com> wrote:
> This tests that the importing of an environment with a specified
> whitelist works as intended.
>
> If there are variables passed as parameter to the env import command,
> those only should be imported in the current environment.
>
> For each variable passed as parameter, if
> - foo is bar in current env and bar2 in exported env, after importing
> exported env, foo shall be bar2,
> - foo does not exist in current env and foo is bar2 in exported env,
> after importing exported env, foo shall be bar2,
> - foo is bar in current env and does not exist in exported env (but is
> passed as parameter), after importing exported env, foo shall be empty,
>
> Any variable not passed as parameter should be left untouched.
>
> Two other tests are made to test that size cannot be '-' if the checksum
> protection is enabled.
>
> Signed-off-by: Quentin Schulz <quentin.schulz at bootlin.com>
> ---
>
> v3:
> - update whitelist test to reflect changes made in patch 1,
> - add two tests for no size parameter passed but checksum protection is
> enabled because I added the possibility to have a sentinel in place of
> size parameter,
> - I intentionally didn't put the Reviewed and Acked-by of Simon and
> Stephen since the code changed since v2,
>
> added in v2
>
> test/py/tests/test_env.py | 50 ++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 50 insertions(+)
Reviewed-by: Simon Glass <sjg at chromium.org>
Some nits below
>
> diff --git a/test/py/tests/test_env.py b/test/py/tests/test_env.py
> index bfb5fc0..b83d2b1 100644
> --- a/test/py/tests/test_env.py
> +++ b/test/py/tests/test_env.py
> @@ -5,6 +5,7 @@
> # Test operation of shell commands relating to environment variables.
>
> import pytest
> +import u_boot_utils
>
> # FIXME: This might be useful for other tests;
> # perhaps refactor it into ConsoleBase or some other state object?
> @@ -239,3 +240,52 @@ def test_env_expansion_spaces(state_test_env):
> unset_var(state_test_env, var_space)
> if var_test:
> unset_var(state_test_env, var_test)
> +
> +def test_env_import_checksum_no_size(state_test_env):
> + """Test that omitted ('-') size parameter with checksum validation fails the
> + env import function.
> + """
> + c = state_test_env.u_boot_console
> + ram_base = u_boot_utils.find_ram_base(state_test_env.u_boot_console)
> + addr = '%08x' % ram_base
> +
> + with c.disable_check('error_notification'):
> + response = c.run_command('env import -c %s -' % addr)
> + assert(response == '## Error: external checksum format must pass size')
> +
> +def test_env_import_whitelist_checksum_no_size(state_test_env):
> + """Test that omitted ('-') size parameter with checksum validation fails the
> + env import function when variables are passed as parameters.
> + """
> + c = state_test_env.u_boot_console
> + ram_base = u_boot_utils.find_ram_base(state_test_env.u_boot_console)
> + addr = '%08x' % ram_base
> +
> + with c.disable_check('error_notification'):
> + response = c.run_command('env import -c %s - foo1 foo2 foo4' % addr)
> + assert(response == '## Error: external checksum format must pass size')
> +
> +def test_env_import_whitelist(state_test_env):
> + """Test importing only a handful of env variables from an environment."""
> + c = state_test_env.u_boot_console
> + ram_base = u_boot_utils.find_ram_base(state_test_env.u_boot_console)
> + addr = '%08x' % ram_base
> +
> + set_var(state_test_env, "foo1", "bar1")
Please use ' for strings rather than ", except for the function/class comments
> + set_var(state_test_env, "foo2", "bar2")
> + set_var(state_test_env, "foo3", "bar3")
> +
> + c.run_command('env export %s' % addr)
> +
> + unset_var(state_test_env, "foo1")
> + set_var(state_test_env, "foo2", "test2")
> + set_var(state_test_env, "foo4", "bar4")
> +
> + #no foo1 in current env, foo2 overridden, foo3 should be of the value
> + #before exporting and foo4 should be deleted
Spaces after each #
> + c.run_command('env import %s - foo1 foo2 foo4' % addr)
> +
> + validate_set(state_test_env, "foo1", "bar1")
> + validate_set(state_test_env, "foo2", "bar2")
> + validate_set(state_test_env, "foo3", "bar3")
> + validate_empty(state_test_env, "foo4")
> --
> git-series 0.9.1
More information about the U-Boot
mailing list