aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/tests/conftest.py
blob: 20724aa6be36064506367866b44ae298471391de (plain) (blame)
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
"""Shared fixtures and helpers for node tests."""

import sys
from pathlib import Path

import pytest
from meshbay_node.roots import RootSet

# ffmpeg / ffprobe run via asyncio.create_subprocess_exec, which needs the
# ProactorEventLoop — but the repo-root conftest forces the SelectorEventLoop
# on win32 so aiortc's ICE stack works there (see devel/windows-devel.md §5).
# The two are mutually exclusive on one Windows asyncio loop; until the media
# path gets a thread-based subprocess runner, these tests can't run on win32.
needs_subprocess = pytest.mark.skipif(
    sys.platform == "win32",
    reason="ffmpeg subprocess needs ProactorEventLoop; win32 conftest forces "
           "SelectorEventLoop for aiortc",
)

# Windows-only gaps still to close (see devel/windows-devel.md §5/§6).
win32_todo = pytest.mark.skipif(
    sys.platform == "win32",
    reason="Windows behaviour not implemented yet (W3 / platform specifics)",
)


def one_root(path: Path, *, name: str = "", kind: str = "generic") -> RootSet:
    """
    A RootSet with a single root over `path`, receiving uploads.

    The equivalent of the old `shared_dir`. Note what it implies for assertions:
    a file directly in `path` now has `entry.path == <basename of path>`, not
    `""` — every index path carries its root name, in a group with one root as
    much as in a group with five.
    """
    return RootSet.build([{"path": str(path), "name": name, "kind": kind,
                           "upload": True}])