repo-cloner/tests/lib/test_cloner_config.py

91 lines
2.6 KiB
Python
Raw Normal View History

from repo_cloner.lib.cloner_config import ClonerConfig
import pytest
def test_init():
x = ClonerConfig()
assert x._ClonerConfig__properties == ['cloner_interval', 'cloner_project_name', 'cloner_repo_url',
'cloner_submodule_depth', 'cloner_submodules']
assert isinstance(x._ClonerConfig__values, dict)
assert len(dict(x._ClonerConfig__values)) == 0
def test_try_default():
x = ClonerConfig()
assert 888 == x._ClonerConfig__try_default("cloner_interval", 888)
with pytest.raises(KeyError) as exc:
x._ClonerConfig__try_default("nonexistent_key", 888)
assert exc.exconly() == "KeyError: 'nonexistent_key is not recognized config option'"
x._ClonerConfig__values['cloner_interval'] = 666
assert 666 == x._ClonerConfig__try_default("cloner_interval", 888)
def test_cloner_project_name():
x = ClonerConfig()
assert x.cloner_project_name == ""
x._ClonerConfig__values['cloner_project_name'] = "asdfgh"
assert x.cloner_project_name == "asdfgh"
def test_cloner_repo_url():
x = ClonerConfig()
assert x.cloner_repo_url == ""
x._ClonerConfig__values['cloner_repo_url'] = "asdfgh"
assert x.cloner_repo_url == "asdfgh"
def test_cloner_interval():
x = ClonerConfig()
assert x.cloner_interval == 0
x._ClonerConfig__values['cloner_interval'] = 5
assert x.cloner_interval == 5
def test_cloner_submodules():
x = ClonerConfig()
assert x.cloner_submodules == True
x._ClonerConfig__values['cloner_submodules'] = False
assert not x.cloner_submodules
def test_cloner_submodule_depth():
x = ClonerConfig()
assert x.cloner_submodule_depth == 50000
x._ClonerConfig__values['cloner_submodule_depth'] = -1
assert x.cloner_submodule_depth == -1
def test_set_property():
x = ClonerConfig()
assert x.cloner_interval == 0
x._set_property("cloner_interval", 5)
assert x.cloner_interval == 5
x._set_property("cloner_interval", "7")
assert x.cloner_interval == 7
# invalid type
with pytest.raises(ValueError) as exc:
x._set_property("cloner_interval", "č")
assert exc.exconly() == "ValueError: Invalid value for key cloner_interval: type is <class 'str'> instead of <class 'int'>, conversion failed"
x._set_property("cloner_project_name", "č")
# undefined property
with pytest.raises(KeyError) as exc:
x._set_property("nonexistent_key", 888)
assert exc.exconly() == "KeyError: 'nonexistent_key is not recognized config option'"
# boolean conversion
x._set_property("cloner_submodules", "1")
assert x.cloner_submodules == True
x._set_property("cloner_submodules", "0")
assert x.cloner_submodules == False
# integer conversion
x._set_property("cloner_interval", 60)
assert x.cloner_interval == 60