File size: 2,170 Bytes
e16c7ac
fefb9a6
e16c7ac
 
fefb9a6
e16c7ac
 
 
fefb9a6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e16c7ac
 
fefb9a6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# The magnet/ package tests live in tests/ and need the heavy PyTorch / PyTorch Geometric stack
# (see magnet/requirements.txt), which the default dataset-reader test environment does not
# install. When torch is absent, skip collecting tests/ entirely so the lightweight CI stays green.
# They run locally once the torch stack from magnet/requirements.txt is present.
#
# This is needed (not just the importorskip guards inside the test files) because tests/test_api.py
# and tests/test_magnet.py import torch (and magnet, which imports torch) at module scope, before
# any in-test skip can run.
import os
import sys

# The analysis code lives in analysis/code/ (importable modules) and analysis/code/shared/ (the
# shared utilities). Put both on sys.path so tests anywhere resolve bare imports like `import
# delta22` and `from stats import rmse`, no matter which folder the test file itself sits in.
_HERE = os.path.dirname(os.path.abspath(__file__))
for _p in (os.path.join(_HERE, "analysis", "code"),
           os.path.join(_HERE, "analysis", "code", "shared")):
    if _p not in sys.path:
        sys.path.insert(0, _p)

collect_ignore = []
collect_ignore_glob = []
try:
    import torch  # noqa: F401
except ImportError:
    collect_ignore = ["magnet", "tests"]
    collect_ignore_glob = ["magnet/*", "tests/*"]


# The reproduce tests (test_reproduce.py) execute every notebook and take minutes; they are opt-in so
# a plain `pytest` stays fast. Run them with `pytest --run-notebooks` (or `pytest -m reproduce`).
def pytest_addoption(parser):
    parser.addoption("--run-notebooks", action="store_true", default=False,
                     help="run the reproduce tests that execute every analysis notebook")


def pytest_configure(config):
    config.addinivalue_line("markers", "reproduce: executes a full analysis notebook (slow, opt-in)")


def pytest_collection_modifyitems(config, items):
    import pytest
    if config.getoption("--run-notebooks"):
        return
    skip = pytest.mark.skip(reason="notebook reproduce test; pass --run-notebooks to run")
    for item in items:
        if "reproduce" in item.keywords:
            item.add_marker(skip)