• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import re
2
3import pytest
4from hypothesis import given
5from hypothesis import strategies as st
6from lava.utils.lava_farm import LAVA_FARM_RUNNER_PATTERNS, LavaFarm, get_lava_farm
7
8
9@given(
10    runner_tag=st.text(
11        alphabet=st.characters(
12            min_codepoint=1, max_codepoint=127, blacklist_categories=("C",)
13        ),
14        min_size=1,
15    )
16)
17def test_get_lava_farm_invalid_tags(runner_tag):
18    with pytest.MonkeyPatch().context() as mp:
19        mp.setenv("RUNNER_TAG", runner_tag)
20        assert get_lava_farm() == LavaFarm.UNKNOWN
21
22
23def test_get_lava_farm_no_tag(monkeypatch):
24    monkeypatch.delenv("RUNNER_TAG", raising=False)
25    assert get_lava_farm() == LavaFarm.UNKNOWN
26
27
28@given(
29    st.fixed_dictionaries(
30        {k: st.from_regex(v) for k, v in LAVA_FARM_RUNNER_PATTERNS.items()}
31    )
32)
33def test_get_lava_farm_valid_tags(runner_farm_tag: dict):
34    with pytest.MonkeyPatch().context() as mp:
35        for farm, tag in runner_farm_tag.items():
36            try:
37                mp.setenv("RUNNER_TAG", tag)
38            except ValueError:
39                # hypothesis may generate null bytes in the string
40                continue
41            assert get_lava_farm() == farm
42