tools/testing/selftests/hid/tests/conftest.py

Source file repositories/reference/linux-study-clean/tools/testing/selftests/hid/tests/conftest.py

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/hid/tests/conftest.py
Extension
.py
Size
2830 bytes
Lines
96
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: tools
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

#!/bin/env python3
# SPDX-License-Identifier: GPL-2.0
# -*- coding: utf-8 -*-
#
# Copyright (c) 2017 Benjamin Tissoires <benjamin.tissoires@gmail.com>
# Copyright (c) 2017 Red Hat, Inc.

from packaging.version import Version
import platform
import pytest
import re
import resource
import subprocess
from .base import HIDTestUdevRule
from pathlib import Path


@pytest.fixture(autouse=True)
def hidtools_version_check():
    HIDTOOLS_VERSION = "0.12"
    try:
        import hidtools

        version = hidtools.__version__  # type: ignore
        if Version(version) < Version(HIDTOOLS_VERSION):
            pytest.skip(reason=f"have hidtools {version}, require >={HIDTOOLS_VERSION}")
    except Exception:
        pytest.skip(reason=f"hidtools >={HIDTOOLS_VERSION} required")


# See the comment in HIDTestUdevRule, this doesn't set up but it will clean
# up once the last test exited.
@pytest.fixture(autouse=True, scope="session")
def udev_rules_session_setup():
    with HIDTestUdevRule.instance():
        yield


@pytest.fixture(autouse=True, scope="session")
def setup_rlimit():
    resource.setrlimit(resource.RLIMIT_CORE, (0, 0))


@pytest.fixture(autouse=True, scope="session")
def start_udevd(pytestconfig):
    if pytestconfig.getoption("udevd"):
        import subprocess

        with subprocess.Popen("/usr/lib/systemd/systemd-udevd") as proc:
            yield
            proc.kill()
    else:
        yield


def pytest_configure(config):
    config.addinivalue_line(
        "markers",
        "skip_if_uhdev(condition, message): mark test to skip if the condition on the uhdev device is met",
    )


# Generate the list of modules and modaliases
# for the tests that need to be parametrized with those
def pytest_generate_tests(metafunc):
    if "usbVidPid" in metafunc.fixturenames:
        modules = (
            Path("/lib/modules/")
            / platform.uname().release
            / "kernel"

Annotation

Implementation Notes