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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
from collections import OrderedDict
import pytest
from labgrid.config import Config
from labgrid.exceptions import InvalidConfigError
def test_get_target_option(tmpdir):
p = tmpdir.join("config.yaml")
p.write(
"""
targets:
main:
options:
str: test
list: [1, 2, 3]
dict:
a: 1
b: 2
bool: False
int: 0x20
float: 3.14
none: null
"""
)
c = Config(str(p))
assert c.get_target_option("main", "str") == "test"
assert c.get_target_option("main", "list") == [1, 2, 3]
assert c.get_target_option("main", "dict") == OrderedDict([('a', 1), ('b', 2)])
assert c.get_target_option("main", "bool") is False
assert c.get_target_option("main", "int") == 0x20
assert c.get_target_option("main", "float") == 3.14
assert c.get_target_option("main", "none") is None
with pytest.raises(KeyError) as err:
c.get_target_option("main", "blah")
assert "No option" in str(err)
with pytest.raises(KeyError) as err:
c.get_target_option("nonexist", "str")
assert "No target" in str(err)
def test_set_target_option(tmpdir):
p = tmpdir.join("config.yaml")
p.write(
"""
targets:
main:
"""
)
c = Config(str(p))
with pytest.raises(KeyError) as err:
c.get_target_option("main", "spam")
assert "No option" in str(err)
c.set_target_option("main", "spam", "eggs")
assert c.get_target_option("main", "spam") == "eggs"
obj = object()
c.set_target_option("main", "obj", obj)
assert c.get_target_option("main", "obj") is obj
def test_template(tmpdir):
p = tmpdir.join("config.yaml")
p.write(
"""
dict:
list:
- a
- b
- !template $BASE
string: !template ${BASE}/suffix
"""
)
c = Config(str(p))
assert 'a' in c.data['dict']['list']
assert c.data['dict']['list'][2] == str(tmpdir)
assert c.data['dict']['string'] == str(tmpdir)+'/suffix'
def test_template_bad_placeholder(tmpdir):
p = tmpdir.join("config.yaml")
p.write(
"""
string: !template $
"""
)
with pytest.raises(InvalidConfigError) as excinfo:
Config(str(p))
assert "is invalid" in excinfo.value.msg
assert "template string" in excinfo.value.msg
def test_template_bad_key(tmpdir):
p = tmpdir.join("config.yaml")
p.write(
"""
string: !template ${INVALID}
"""
)
with pytest.raises(InvalidConfigError) as excinfo:
Config(str(p))
assert "unknown variable" in excinfo.value.msg
def test_tool(tmpdir):
t = tmpdir.join("testtool")
t.write("content")
p = tmpdir.join("config.yaml")
p.write(
"""
tools:
testtool: {}
""".format(t)
)
c = Config(str(p))
assert c.get_tool("testtool") == t
def test_tool_no_explicit_tool(tmpdir):
t = tmpdir.join("testtool")
t.write("content")
p = tmpdir.join("config.yaml")
p.write(
"""
dict: {}
"""
)
c = Config(str(p))
assert c.get_tool("testtool") == "testtool"
|