Re: [PATCH v2 10/13] test: add first sample tests

2021-06-03 Thread Ahmad Fatoum
Hello Jan,

On 03.06.21 17:14, Jan Lübbe wrote:
> On Wed, 2021-06-02 at 13:35 +0200, Ahmad Fatoum wrote:
 +def get_config(command):
 +    """Returns the enabled config options of barebox, either from
 +    a running instance if supported or by looking into .config
 +    in the build directory.
 +    Args:
 +    command (BareboxDriver): An instance of the BareboxDriver
 +    Returns:
 +    list: list of the enabled config options
 +    """
 +    assert isinstance(command, BareboxDriver)
 +
 +    out, err, returncode = command.run("cat /env/data/config")
 +    if returncode != 0:
 +    try:
 +    with open(os.environ['LG_BUILDDIR'] + "/.config") as f:
>>>
>>> Please don't use the LG_ namespace currently used by labgrid, this
>>> variable is introduced by your wrapper script, something like
>>> BB_LG_BUILDDIR indicates that this is only used in the barebox test
>>> scripts.
>>
>> Labgrid filters out anything that doesn't start with LG_ AFAIK.
> 
> No. The filter is only for the environment templating. We don't touch the
> os.environ dictionary.

I am using LG_BUILDDIR out of the YAML config as well.

> 
> Regards,
> Jan
> 

-- 
Pengutronix e.K.   | |
Steuerwalder Str. 21   | http://www.pengutronix.de/  |
31137 Hildesheim, Germany  | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |

___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


Re: [PATCH v2 10/13] test: add first sample tests

2021-06-03 Thread Jan Lübbe
On Wed, 2021-06-02 at 13:35 +0200, Ahmad Fatoum wrote:
> > > +def get_config(command):
> > > +    """Returns the enabled config options of barebox, either from
> > > +    a running instance if supported or by looking into .config
> > > +    in the build directory.
> > > +    Args:
> > > +    command (BareboxDriver): An instance of the BareboxDriver
> > > +    Returns:
> > > +    list: list of the enabled config options
> > > +    """
> > > +    assert isinstance(command, BareboxDriver)
> > > +
> > > +    out, err, returncode = command.run("cat /env/data/config")
> > > +    if returncode != 0:
> > > +    try:
> > > +    with open(os.environ['LG_BUILDDIR'] + "/.config") as f:
> > 
> > Please don't use the LG_ namespace currently used by labgrid, this
> > variable is introduced by your wrapper script, something like
> > BB_LG_BUILDDIR indicates that this is only used in the barebox test
> > scripts.
> 
> Labgrid filters out anything that doesn't start with LG_ AFAIK.

No. The filter is only for the environment templating. We don't touch the
os.environ dictionary.

Regards,
Jan
-- 
Pengutronix e.K.   | |
Steuerwalder Str. 21   | http://www.pengutronix.de/  |
31137 Hildesheim, Germany  | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |


___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


Re: [PATCH v2 10/13] test: add first sample tests

2021-06-02 Thread Ahmad Fatoum
Hi,

On 02.06.21 13:33, Rouven Czerwinski wrote:
> Hi Ahmad,
> 
> On Mon, 2021-05-31 at 08:55 +0200, Ahmad Fatoum wrote:
>> The test can be run manually with e.g.
>>
>>   labgrid-pytest --lg-env test/arm/qemu_virt64_defconfig.yaml test/py
>>
>> Signed-off-by: Ahmad Fatoum 
>> ---
>>  test/.gitignore   |  1 +
>>  test/__init__.py  |  0
>>  test/conftest.py  | 34 ++
>>  test/py/__init__.py   |  0
>>  test/py/helper.py | 38 ++
>>  test/py/test_shell.py | 37 +
>>  6 files changed, 110 insertions(+)
>>  create mode 100644 test/.gitignore
>>  create mode 100644 test/__init__.py
>>  create mode 100644 test/conftest.py
>>  create mode 100644 test/py/__init__.py
>>  create mode 100644 test/py/helper.py
>>  create mode 100644 test/py/test_shell.py
>>
>> diff --git a/test/.gitignore b/test/.gitignore
>> new file mode 100644
>> index ..bee8a64b79a9
>> --- /dev/null
>> +++ b/test/.gitignore
>> @@ -0,0 +1 @@
>> +__pycache__
>> diff --git a/test/__init__.py b/test/__init__.py
>> new file mode 100644
>> index ..e69de29bb2d1
>> diff --git a/test/conftest.py b/test/conftest.py
>> new file mode 100644
>> index ..5acc1a99e18e
>> --- /dev/null
>> +++ b/test/conftest.py
>> @@ -0,0 +1,34 @@
>> +import pytest
>> +import os
>> +from .py import helper
>> +
>> +
>> +@pytest.fixture(scope='function')
>> +def barebox(strategy, target):
>> +strategy.transition('barebox')
>> +return target.get_driver('BareboxDriver')
>> +
>> +
>> +@pytest.fixture(scope='function')
>> +def shell(strategy, target):
>> +strategy.transition('shell')
>> +return target.get_driver('ShellDriver')
> 
> This fixture is not used anywhere, remove it.

See previous mail.

>> +
>> +
>> +@pytest.fixture(scope="session")
>> +def barebox_config(strategy, target):
>> +strategy.transition('barebox')
>> +command = target.get_driver("BareboxDriver")
>> +return helper.get_config(command)
>> +
>> +def pytest_configure(config):
>> +if 'LG_BUILDDIR' not in os.environ:
>> +if 'KBUILD_OUTPUT' in os.environ:
>> +os.environ['LG_BUILDDIR'] = os.environ['KBUILD_OUTPUT']
>> +elif os.path.isdir('build'):
>> +os.environ['LG_BUILDDIR'] = os.path.realpath('build')
>> +else:
>> +os.environ['LG_BUILDDIR'] = os.getcwd()
>> +
>> +if os.environ['LG_BUILDDIR'] is not None:
>> +os.environ['LG_BUILDDIR'] = 
>> os.path.realpath(os.environ['LG_BUILDDIR'])
>> diff --git a/test/py/__init__.py b/test/py/__init__.py
>> new file mode 100644
>> index ..e69de29bb2d1
>> diff --git a/test/py/helper.py b/test/py/helper.py
>> new file mode 100644
>> index ..4a68e83669ba
>> --- /dev/null
>> +++ b/test/py/helper.py
>> @@ -0,0 +1,38 @@
>> +from labgrid.driver import BareboxDriver
>> +import pytest
>> +import os
>> +from itertools import filterfalse
>> +
>> +
>> +def get_config(command):
>> +"""Returns the enabled config options of barebox, either from
>> +a running instance if supported or by looking into .config
>> +in the build directory.
>> +Args:
>> +command (BareboxDriver): An instance of the BareboxDriver
>> +Returns:
>> +list: list of the enabled config options
>> +"""
>> +assert isinstance(command, BareboxDriver)
>> +
>> +out, err, returncode = command.run("cat /env/data/config")
>> +if returncode != 0:
>> +try:
>> +with open(os.environ['LG_BUILDDIR'] + "/.config") as f:
> 
> Please don't use the LG_ namespace currently used by labgrid, this
> variable is introduced by your wrapper script, something like
> BB_LG_BUILDDIR indicates that this is only used in the barebox test
> scripts.

Labgrid filters out anything that doesn't start with LG_ AFAIK.

> 
>> +out = f.read().splitlines()
>> +except OSError:
>> +return set()
>> +
>> +options = set()
>> +for line in out:
>> +if line and line.startswith("CONFIG_"):
>> +options.add(line.split('=')[0])
>> +return options
>> +
>> +
>> +def skip_disabled(config, *options):
>> +if bool(config):
>> +undefined = list(filterfalse(config.__contains__, options))
>> +
>> +if bool(undefined):
>> +pytest.skip("skipping test due to disabled " + 
>> (",".join(undefined)) + " dependency")
>> diff --git a/test/py/test_shell.py b/test/py/test_shell.py
>> new file mode 100644
>> index ..0d2dfe38c5dd
>> --- /dev/null
>> +++ b/test/py/test_shell.py
>> @@ -0,0 +1,37 @@
>> +import pytest
>> +from .helper import *
>> +
>> +
>> +def test_barebox_true(barebox, barebox_config):
>> +skip_disabled(barebox_config, "CONFIG_CMD_TRUE")
>> +
>> +_, _, returncode = barebox.run('true')
>> +assert returncode == 0
>> +
>> +
>> +def test_barebox_false(barebox, barebox_config):
>> +skip_disabled(barebox_config, 

Re: [PATCH v2 10/13] test: add first sample tests

2021-06-02 Thread Rouven Czerwinski
Hi Ahmad,

On Mon, 2021-05-31 at 08:55 +0200, Ahmad Fatoum wrote:
> The test can be run manually with e.g.
> 
>   labgrid-pytest --lg-env test/arm/qemu_virt64_defconfig.yaml test/py
> 
> Signed-off-by: Ahmad Fatoum 
> ---
>  test/.gitignore   |  1 +
>  test/__init__.py  |  0
>  test/conftest.py  | 34 ++
>  test/py/__init__.py   |  0
>  test/py/helper.py | 38 ++
>  test/py/test_shell.py | 37 +
>  6 files changed, 110 insertions(+)
>  create mode 100644 test/.gitignore
>  create mode 100644 test/__init__.py
>  create mode 100644 test/conftest.py
>  create mode 100644 test/py/__init__.py
>  create mode 100644 test/py/helper.py
>  create mode 100644 test/py/test_shell.py
> 
> diff --git a/test/.gitignore b/test/.gitignore
> new file mode 100644
> index ..bee8a64b79a9
> --- /dev/null
> +++ b/test/.gitignore
> @@ -0,0 +1 @@
> +__pycache__
> diff --git a/test/__init__.py b/test/__init__.py
> new file mode 100644
> index ..e69de29bb2d1
> diff --git a/test/conftest.py b/test/conftest.py
> new file mode 100644
> index ..5acc1a99e18e
> --- /dev/null
> +++ b/test/conftest.py
> @@ -0,0 +1,34 @@
> +import pytest
> +import os
> +from .py import helper
> +
> +
> +@pytest.fixture(scope='function')
> +def barebox(strategy, target):
> +strategy.transition('barebox')
> +return target.get_driver('BareboxDriver')
> +
> +
> +@pytest.fixture(scope='function')
> +def shell(strategy, target):
> +strategy.transition('shell')
> +return target.get_driver('ShellDriver')

This fixture is not used anywhere, remove it.

> +
> +
> +@pytest.fixture(scope="session")
> +def barebox_config(strategy, target):
> +strategy.transition('barebox')
> +command = target.get_driver("BareboxDriver")
> +return helper.get_config(command)
> +
> +def pytest_configure(config):
> +if 'LG_BUILDDIR' not in os.environ:
> +if 'KBUILD_OUTPUT' in os.environ:
> +os.environ['LG_BUILDDIR'] = os.environ['KBUILD_OUTPUT']
> +elif os.path.isdir('build'):
> +os.environ['LG_BUILDDIR'] = os.path.realpath('build')
> +else:
> +os.environ['LG_BUILDDIR'] = os.getcwd()
> +
> +if os.environ['LG_BUILDDIR'] is not None:
> +os.environ['LG_BUILDDIR'] = 
> os.path.realpath(os.environ['LG_BUILDDIR'])
> diff --git a/test/py/__init__.py b/test/py/__init__.py
> new file mode 100644
> index ..e69de29bb2d1
> diff --git a/test/py/helper.py b/test/py/helper.py
> new file mode 100644
> index ..4a68e83669ba
> --- /dev/null
> +++ b/test/py/helper.py
> @@ -0,0 +1,38 @@
> +from labgrid.driver import BareboxDriver
> +import pytest
> +import os
> +from itertools import filterfalse
> +
> +
> +def get_config(command):
> +"""Returns the enabled config options of barebox, either from
> +a running instance if supported or by looking into .config
> +in the build directory.
> +Args:
> +command (BareboxDriver): An instance of the BareboxDriver
> +Returns:
> +list: list of the enabled config options
> +"""
> +assert isinstance(command, BareboxDriver)
> +
> +out, err, returncode = command.run("cat /env/data/config")
> +if returncode != 0:
> +try:
> +with open(os.environ['LG_BUILDDIR'] + "/.config") as f:

Please don't use the LG_ namespace currently used by labgrid, this
variable is introduced by your wrapper script, something like
BB_LG_BUILDDIR indicates that this is only used in the barebox test
scripts.

> +out = f.read().splitlines()
> +except OSError:
> +return set()
> +
> +options = set()
> +for line in out:
> +if line and line.startswith("CONFIG_"):
> +options.add(line.split('=')[0])
> +return options
> +
> +
> +def skip_disabled(config, *options):
> +if bool(config):
> +undefined = list(filterfalse(config.__contains__, options))
> +
> +if bool(undefined):
> +pytest.skip("skipping test due to disabled " + 
> (",".join(undefined)) + " dependency")
> diff --git a/test/py/test_shell.py b/test/py/test_shell.py
> new file mode 100644
> index ..0d2dfe38c5dd
> --- /dev/null
> +++ b/test/py/test_shell.py
> @@ -0,0 +1,37 @@
> +import pytest
> +from .helper import *
> +
> +
> +def test_barebox_true(barebox, barebox_config):
> +skip_disabled(barebox_config, "CONFIG_CMD_TRUE")
> +
> +_, _, returncode = barebox.run('true')
> +assert returncode == 0
> +
> +
> +def test_barebox_false(barebox, barebox_config):
> +skip_disabled(barebox_config, "CONFIG_CMD_FALSE")
> +
> +_, _, returncode = barebox.run('false')
> +assert returncode == 1
> +
> +def test_barebox_md5sum(barebox, barebox_config):
> +skip_disabled(barebox_config, "CONFIG_CMD_MD5SUM", "CONFIG_CMD_ECHO")
> +
> +barebox.run_check("echo -o md5 test")
> +out =