From: Ahmad Fatoum <a.fatoum@pengutronix.de> To: barebox@lists.infradead.org Cc: Ahmad Fatoum <a.fatoum@pengutronix.de> Subject: [PATCH v2 10/13] test: add first sample tests Date: Mon, 31 May 2021 08:55:17 +0200 Message-ID: <20210531065520.12385-11-a.fatoum@pengutronix.de> (raw) In-Reply-To: <20210531065520.12385-1-a.fatoum@pengutronix.de> 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') + + +@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: + 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 == [] -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2021-05-31 6:57 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 ` Ahmad Fatoum [this message] 2021-06-02 11:33 ` [PATCH v2 10/13] test: add first sample tests Rouven Czerwinski 2021-06-02 11:35 ` Ahmad Fatoum 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=20210531065520.12385-11-a.fatoum@pengutronix.de \ --to=a.fatoum@pengutronix.de \ --cc=barebox@lists.infradead.org \ /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
mail archive of the barebox mailing list This inbox may be cloned and mirrored by anyone: git clone --mirror https://lore.barebox.org/barebox/0 barebox/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 barebox barebox/ https://lore.barebox.org/barebox \ barebox@lists.infradead.org barebox@lists.infradead.org public-inbox-index barebox Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git