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