File: conftest.py

package info (click to toggle)
loki-ecmwf 0.3.4-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 6,200 kB
  • sloc: python: 72,475; f90: 2,105; sh: 271; makefile: 49; ansic: 47
file content (53 lines) | stat: -rw-r--r-- 2,007 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# (C) Copyright 2018- ECMWF.
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation
# nor does it submit to any jurisdiction.

"""
Local pytest plugin to add bespoke pytest extensions for Loki

See the pytest documentation for more details:
https://docs.pytest.org/en/stable/how-to/writing_plugins.html#local-conftest-plugins
"""

import os

from loki.config import config as loki_config


XFAIL_DERIVED_TYPE_JIT_TESTS = os.environ.get('XFAIL_DERIVED_TYPE_JIT_TESTS', '1') == '1'
"""
Flag to mark tests that use JIT compilation for derived type argument procedures
as expected to fail with :any:`pytest.mark.xfail`

The derived type wrapping support provided by f90wrap has stopped working in the
Loki JIT backend that is used for tests. Because this is not a crucial feature, we
are temporarily allowing these tests to fail to fix this separately in the future.

By setting the environment variable ``XFAIL_DERIVED_TYPE_JIT_TESTS`` to ``0``, tests
will no longer be marked as xfail.
"""


def pytest_addoption(parser, pluginmanager):  # pylint: disable=unused-argument
    """
    Add options to the pytest CLI

    Additional options can be specified via ``parser.addoption`` using the same signature as
    :any:`argparse.ArgumentParser.add_argument`.

    For Loki, we add ``--loki-log-level`` to overwrite the log level in :any:`loki.logging`.
    """
    parser.addoption('--loki-log-level', dest='LOKI_LOG_LEVEL', default='INFO',
                     help='Change the Loki log level (ERROR, WARNING, INFO, PERF, DETAIL, DEBUG)')


def pytest_configure(config):
    """
    Apply configuration changes

    This function is invoked after all command line options have been processed
    """
    loki_config['log-level'] = config.option.LOKI_LOG_LEVEL