[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