mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: Rouven Czerwinski <r.czerwinski@pengutronix.de>,
	barebox@lists.infradead.org
Subject: Re: [PATCH v2 10/13] test: add first sample tests
Date: Wed, 2 Jun 2021 13:35:19 +0200	[thread overview]
Message-ID: <3be1d6de-ad08-f42b-557d-ebfd11006265@pengutronix.de> (raw)
In-Reply-To: <6c118a9a88836394d4d35741a156f9933e1246d2.camel@pengutronix.de>

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 <a.fatoum@pengutronix.de>
>> ---
>>  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 000000000000..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 000000000000..e69de29bb2d1
>> diff --git a/test/conftest.py b/test/conftest.py
>> new file mode 100644
>> index 000000000000..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 000000000000..e69de29bb2d1
>> diff --git a/test/py/helper.py b/test/py/helper.py
>> new file mode 100644
>> index 000000000000..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 000000000000..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 = barebox.run_check("md5sum md5")
>> +    assert out == ["d8e8fca2dc0f896fd7cb4cb0031ba249  md5"]
>> +
>> +def test_barebox_version(barebox, barebox_config):
>> +    skip_disabled(barebox_config, "CONFIG_CMD_VERSION")
>> +
>> +    stdout, _, returncode = barebox.run('version')
>> +    assert 'barebox' in stdout[1]
>> +    assert returncode == 0
>> +
>> +def test_barebox_no_err(barebox, barebox_config):
>> +    skip_disabled(barebox_config, "CONFIG_CMD_DMESG")
>> +
>> +    # TODO extend by err once all qemu platforms conform
>> +    stdout, _, _ = barebox.run('dmesg -l crit,alert,emerg')
>> +    assert stdout == []
> 
> - rcz
> 
> 
> 

-- 
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-5555 |

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


  reply	other threads:[~2021-06-02 12:04 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-31  6:55 [PATCH v2 00/13] add barebox in-tree testing infrastructure Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 01/13] kbuild: add install target Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 02/13] kbuild: add ARCH={i386, x86_64} as aliases for x86 Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 03/13] kbuild: add ARCH=um alias for sandbox Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 04/13] MIPS: qemu-malta: generate swapped image as part of multi-image build Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 05/13] openrisc: set default KBUILD_IMAGE Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 06/13] Documentation: boards: RISC-V: update TinyEMU support Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 07/13] test: add basic barebox self-test infrastructure Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 08/13] test: self: port Linux printf kselftest Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 09/13] test: add labgrid configs for some emulated targets Ahmad Fatoum
2021-06-02 11:27   ` Rouven Czerwinski
2021-06-02 11:34     ` Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 10/13] test: add first sample tests Ahmad Fatoum
2021-06-02 11:33   ` Rouven Czerwinski
2021-06-02 11:35     ` Ahmad Fatoum [this message]
2021-06-03 15:14       ` Jan Lübbe
2021-06-03 15:31         ` Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 11/13] test: add emulate.pl, a runner for barebox on emulated targets Ahmad Fatoum
2021-05-31  6:55 ` [PATCH v2 12/13] test: self: run selftests as part of the pytest suite Ahmad Fatoum
2021-06-02 11:36   ` Rouven Czerwinski
2021-05-31  6:55 ` [PATCH v2 13/13] test: add bthread test Ahmad Fatoum

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3be1d6de-ad08-f42b-557d-ebfd11006265@pengutronix.de \
    --to=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=r.czerwinski@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox