Table variables now returns empty dictionaries for unexisting row. fixed #55

master
Иванов Денис 3 years ago
parent ad5562793e
commit 6f932eab2f

@ -347,6 +347,7 @@ class Table:
if index < len(self._rows):
return self._rows[index]
else:
return {key: None for key in self.columns}
raise VariableError("'{index}' index value is out of range"
.format(index=index))
else:
@ -818,7 +819,7 @@ class NamespaceNode:
elif name in self._variables:
variable = self._variables[name]
if variable.variable_type is TableType:
return variable.get_value().get_table()
return variable.get_value()
return variable.get_value()
else:
if self.get_package_name() == "custom":

@ -30,9 +30,11 @@ dictNameSystem = {'CDS': 'server',
'CMC': 'desktop',
'CSS': 'server'}
def dict_value(d, keyname, fallback_value):
return d.value.get(keyname.value, fallback_value.value)
def detect_other_shortname(systemroot):
"""Detect other system. Now only Gentoo."""
gentoo_file = os.path.join(systemroot.value, "etc/gentoo-release")
@ -40,6 +42,7 @@ def detect_other_shortname(systemroot):
return "Gentoo"
return "Linux"
def get_version_from_gentoo_files(systemroot, profilefile):
"""Get version from gentoo files"""
systemroot = systemroot.value
@ -53,15 +56,18 @@ def get_version_from_gentoo_files(systemroot, profilefile):
if vers:
return vers[-1]
def get_version_from_uname():
"""Get version from uname"""
re_ver = re.search("^(\d+\.)*\d", platform.release(), re.S)
if re_ver:
return re_ver.group()
def get_linux_version(systemroot, make_profile):
return "21"
def import_variables():
with Namespace("arch"):
Variable("machine", type=StringType,

@ -1008,12 +1008,14 @@ class TestParameters:
{'dev': '/dev/sdb3', 'mount': '/tmp'}]
PARAMS['test'].set(['/dev/sdb2', '/var'])
assert datavars.os.dev_table == [{'dev': '/dev/sdb1', 'mount': '/'},
assert datavars.os.dev_table.get_table() == [
{'dev': '/dev/sdb1', 'mount': '/'},
{'dev': '/dev/sdb2', 'mount': '/var'},
{'dev': '/dev/sdb3', 'mount': '/tmp'}]
PARAMS['test'].set(['/dev/sdb4', '/home'])
assert datavars.os.dev_table == [{'dev': '/dev/sdb1', 'mount': '/'},
assert datavars.os.dev_table.get_table() == [
{'dev': '/dev/sdb1', 'mount': '/'},
{'dev': '/dev/sdb2', 'mount': '/var'},
{'dev': '/dev/sdb3', 'mount': '/tmp'},
{'dev': '/dev/sdb4', 'mount': '/home'}

@ -701,6 +701,8 @@ class TestDatavars:
source=Dependence('namespace_1.var_1',
depend=depend_function))
datavars.namespace_1.var_1[0]
print(datavars.namespace_1.var_1[0])
assert datavars.namespace_1.var_2 == 'value_2'
def test_if_variable_of_TableType_is_created_using_dependence_that_creates_table__the_created_variable_has_generated_table_as_its_value(self):
@ -731,7 +733,7 @@ class TestDatavars:
Variable('repositories', type=TableType,
source=Dependence('.config', depend=config_source))
assert datavars.os.repositories == value
assert datavars.os.repositories.get_table() == value
except ImportError:
# Если тестируем на другой системе модуль portage будет не найден.
assert True
@ -1039,7 +1041,7 @@ name = name_2
value = value_2
"""
namespace_filler.fill(datavars, first_ini_text)
assert datavars.custom.test ==\
assert datavars.custom.test.get_table() ==\
[{'name': 'name_0', 'value': 'value_0'},
{'name': 'name_1', 'value': 'value_1'},
{'name': 'name_2', 'value': 'value_2'}]
@ -1112,9 +1114,9 @@ value = weird_value
namespace_filler.fill(datavars, first_ini_text)
assert datavars.custom.test ==\
assert datavars.custom.test.get_table() ==\
[{'name': 'name_0', 'value': 'value_0'}]
assert datavars.os.test ==\
assert datavars.os.test.get_table() ==\
[{'name': 'strange_name', 'value': 'weird_value'}]
def test_if_calculate_ini_file_is_used_for_modifying_of_the_table_from_calculate_ini_file__the_NamespaceIniFiller_object_modifies_the_table(self):
@ -1134,7 +1136,7 @@ value = value_1
"""
namespace_filler.fill(datavars, first_ini_text)
assert datavars.custom.test ==\
assert datavars.custom.test.get_table() ==\
[{'name': 'name_0', 'value': 'value_0'},
{'name': 'name_1', 'value': 'value_1'}]
@ -1145,7 +1147,7 @@ value = another_value
"""
namespace_filler.fill(datavars, second_ini_text)
assert datavars.custom.test ==\
assert datavars.custom.test.get_table() ==\
[{'name': 'name_0', 'value': 'value_0'},
{'name': 'other_name', 'value': 'another_value'}]
@ -1173,7 +1175,7 @@ value = another_value
"""
namespace_filler.fill(datavars, first_ini_text)
assert datavars.namespace_1.test ==\
assert datavars.namespace_1.test.get_table() ==\
[{'name': 'new_name', 'value': 'other_value'},
{'name': 'common_name', 'value': 'another_value'},
{'name': 'name_3', 'value': 'value_3'}]
@ -1211,12 +1213,13 @@ value = another_value
assert datavars.level.use_local_simple == "Using simple value"
assert datavars.level.use_full_simple == "Using simple value"
assert datavars.level.device_child == "hdd"
assert datavars.level.device == [{"dev": "/dev/sda",
"type": "hdd",
"name": "Samsung SSD"},
{"dev": "/dev/sdb",
"type": "flash",
"name": "Transcend 64GB"}]
assert datavars.level.device.get_table() == [
{"dev": "/dev/sda",
"type": "hdd",
"name": "Samsung SSD"},
{"dev": "/dev/sdb",
"type": "flash",
"name": "Transcend 64GB"}]
def test_if_a_Datavars_object_is_created_with_path_to_the_variables_with_Dependencies_and_then_the_variables_are_changed_using_calculate_ini_files_and_the_datavars_object_used_to_get_access_to_the_some_variables_from__the_datavars_object_dynamically_loads_variables_and_retruns_necessary_variables(self):
datavars = Datavars(
@ -1270,7 +1273,7 @@ value = another_value
assert datavars.os.hashvar.value1 == 'new1'
assert datavars.os.hashvar.value2 == 'new2'
assert datavars.os.tablevar == [
assert datavars.os.tablevar.get_table() == [
{'dev': '/dev/sda1', 'mount': 'swap'},
{'dev': '/dev/sda2', 'mount': '/'},
{'dev': '/dev/sda5', 'mount': '/var/calculate'}]
@ -1288,7 +1291,7 @@ value = another_value
assert datavars.os.hashvar.value1 == 'new1'
assert datavars.os.hashvar.value2 == 'new2'
assert datavars.os.tablevar == [
assert datavars.os.tablevar.get_table() == [
{'dev': '/dev/sda1', 'mount': 'swap'},
{'dev': '/dev/sda2', 'mount': '/'},
{'dev': '/dev/sda5', 'mount': '/var/calculate'}]
@ -1635,3 +1638,17 @@ os.linux.test_3 = {{ os.linux.test_3 }}
shutil.rmtree(os.path.join(TESTFILES_PATH, 'ini_vars'))
assert not os.path.exists(os.path.join(TESTFILES_PATH, 'ini_vars'))
def test_getting_value_of_the_unexisting_row(self):
Namespace.reset()
datavars = Namespace.datavars
with Namespace('namespace_1'):
Variable('var_1', type=TableType, source=[{'name': 'name_1',
'value': 'value_1'},
{'name': 'name_2',
'value': 'value_2'},
{'name': 'name_3',
'value': 'value_3'}])
assert datavars.namespace_1.var_1[3]['value'] is None

Loading…
Cancel
Save