Added collision resolution for packages with the same names and categories, but with different versions and slots. fixed #6

master
Иванов Денис 4 years ago
parent 73ce266ed2
commit 5d0862de1a

@ -601,20 +601,23 @@ class ParametersProcessor:
" does not template condition", self.lineno)
def _check_package_group(self, package: dict, group_packages: list):
'''Метод для проверки соответствия описания пакета, заданного словарем,
какому-либо описанию пакета, заданного в переменных groups.'''
for group_package in group_packages:
for parameter in ['category', 'name', 'version', 'slot']:
if package[parameter] is not None:
if (group_package[parameter] is None
or group_package[parameter] != package[parameter]):
return False
continue
if package['use_flags'] is not None:
if group_package['use_flags'] is None:
return False
continue
else:
for use_flag in package['use_flags']:
if use_flag not in group_package['use_flags']:
return False
return True
continue
return True
return False
# Методы для проверки того, являются ли параметры наследуемыми.

@ -379,12 +379,41 @@ class TemplateWrapper:
self.target_package_name = parameter_package
elif file_package != parameter_package and self.template_type != DIR:
raise TemplateCollisionError((
target_name = self._check_packages_slots(parameter_package,
file_package)
if (target_name is not None and self.target_package is not None
and self.target_package.package_name == target_name):
target_name = self.target_package.package_name
if target_name is None or target_name.slot_specified:
raise TemplateCollisionError((
"The template package is {0} while target"
" file package is {1}").format(
parameter_package.atom,
file_package.atom
))
if (self.target_package is None or
self.target_package_name != self.target_package.package_name):
self.target_package = Package(self.target_package_name,
chroot_path=self.chroot_path)
# Теперь перемещаем файл в пакет со старшей версией.
self.source_package = Package(file_package,
chroot_path=self.chroot_path)
removed = self.source_package.remove_file(self.target_path)
for file_path, file_info in removed.items():
if file_info['type'] == 'dir':
self.target_package.add_dir(file_path)
elif file_info['type'] == 'obj':
self.target_package.add_obj(file_path,
file_md5=file_info['md5'],
mtime=file_info['mtime'])
elif file_info['type'] == 'sym':
self.target_package.add_sym(
file_path,
target_path=file_info['target'],
mtime=file_info['mtime'])
self.source_package.write_contents_file()
else:
self.target_package_name = parameter_package
@ -393,6 +422,18 @@ class TemplateWrapper:
self.target_package = Package(self.target_package_name,
chroot_path=self.chroot_path)
def _check_packages_slots(self, lpackage, rpackage):
if lpackage.category != rpackage.category:
return None
if lpackage.name != rpackage.name:
return None
if lpackage.version > rpackage.version:
return lpackage
else:
return rpackage
def _check_user_changes(self) -> None:
'''Метод для проверки наличия пользовательских изменений в
конфигурационных файлах.'''

@ -162,6 +162,10 @@ class Version:
return -1
return 0
@property
def string(self):
return self._string
def __lt__(self, other):
'''Перегрузка x < y.'''
other_version = self._get_version_value(other)
@ -332,39 +336,51 @@ class PackageAtomName:
def __init__(self, atom_dictionary):
self._package_directory = atom_dictionary['pkg_path']
self._version = atom_dictionary['version']
if self._package_directory is not None:
self._name = self.fullname[:-len(self._version.string)]
else:
self._name = 'None'
if self._package_directory is not None:
self._with_slot = atom_dictionary.get('with_slot', False)
else:
self._with_slot = False
@property
def name(self) -> str:
return self._name
@property
def name(self):
def fullname(self) -> str:
if self._package_directory is None:
return 'None'
return os.path.basename(self._package_directory)
@property
def category(self):
def category(self) -> str:
if self._package_directory is None:
return 'None'
return os.path.basename(os.path.dirname(self._package_directory))
@property
def atom(self):
def atom(self) -> str:
if self._package_directory is None:
return 'None'
return "{}/{}".format(self.category, self.name)
return "{}/{}".format(self.category, self.fullname)
@property
def version(self):
def version(self) -> Version:
if self._package_directory is None:
return 'None'
return Version()
return self._version
@property
def contents_path(self):
def contents_path(self) -> str:
if self._package_directory is None:
return 'None'
return os.path.join(self._package_directory, 'CONTENTS')
@property
def use_flags(self):
def use_flags(self) -> list:
if self._package_directory is None:
return []
use_path = os.path.join(self._package_directory, 'USE')
@ -375,11 +391,11 @@ class PackageAtomName:
" parameter: {}".format(self.package_atom))
@property
def pkg_path(self):
def pkg_path(self) -> str:
return self._package_directory
@property
def slot(self):
def slot(self) -> str:
if self._package_directory is None:
return None
slot_path = os.path.join(self._package_directory, 'SLOT')
@ -389,30 +405,34 @@ class PackageAtomName:
raise PackageAtomError("could not read slot value for"
" 'package': {}".format(self.package_atom))
def __eq__(self, other):
@property
def slot_specified(self) -> bool:
return self._with_slot
def __eq__(self, other) -> bool:
if isinstance(other, PackageAtomName):
return self._package_directory == other._package_directory
else:
return False
def __ne__(self, other):
def __ne__(self, other) -> bool:
if isinstance(other, PackageAtomName):
return self._package_directory != other._package_directory
else:
return False
def __bool__(self):
def __bool__(self) -> bool:
if self._package_directory is None:
return True
return bool(self._package_directory)
def __repr__(self):
def __repr__(self) -> bool:
if self._package_directory is None:
return '<PackageAtomName: None>'
return '<PackageAtomName: {}/{}>'.format(self.category,
self.name)
self.fullname)
def __hash__(self):
def __hash__(self) -> bool:
return hash(self._package_directory)
@ -463,38 +483,6 @@ class PackageAtomParser:
elif isinstance(package_atom, dict):
self._atom_dictionary = package_atom
# parsing_result = self.atom_regex.search(package_atom)
# if (not parsing_result or parsing_result.string != package_atom or
# not parsing_result.groupdict()['category'] or
# not parsing_result.groupdict()['name']):
# raise PackageAtomError("'package' parameter value '{}' is not"
# " correct".format(package_atom),
# errno=NOTCORRECT)
# self._atom_dictionary['category'] = parsing_result.groupdict(
# )['category']
# self._atom_dictionary['name'] = parsing_result.groupdict()['name']
# if parsing_result.groupdict()['version']:
# version_value = parsing_result.groupdict()['version'].strip('-')
# self._atom_dictionary['version'] = Version(version_value)
# if (parsing_result.groupdict()['slot'] and
# parsing_result.groupdict()['slot'] != ':'):
# self._atom_dictionary['slot'] = parsing_result.groupdict(
# )['slot'][1:]
# if parsing_result.groupdict()['use_flags']:
# self._atom_dictionary['use_flags'] = []
# use_flags = parsing_result.groupdict()['use_flags'].strip().\
# rstrip(']').lstrip('[')
# for use_flag in use_flags.split(','):
# self._atom_dictionary['use_flags'].append(use_flag.strip())
self._check_package_existance()
atom_name_object = PackageAtomName(self._atom_dictionary)
@ -663,59 +651,6 @@ class PackageAtomParser:
else:
raise PackageNotFound("The file does not belong to any package")
@property
def atom_dictionary(self):
'''Метод для получения ATOM-словаря.'''
return self._atom_dictionary
@property
def atom_name(self):
'''Метод для получения из ATOM-словаря объекта PackageAtomName.'''
return PackageAtomName(self._atom_dictionary)
@atom_dictionary.setter
def set_atom_dictionary(self, atom_dictionary):
'''Метод для установки ATOM-словаря.'''
self._atom_dictionary = atom_dictionary
@property
def category(self):
'''Метод для получения категории пакета из ATOM-словаря.'''
if 'category' in self._atom_dictionary:
return self._atom_dictionary['category']
else:
return False
@property
def name(self):
'''Метод для получения имени пакета из ATOM-словаря.'''
if 'name' in self._atom_dictionary:
return self._atom_dictionary['name']
else:
return False
@property
def slot(self):
'''Метод для получения значения slot из ATOM-словаря.'''
if 'slot' in self._atom_dictionary:
return self._atom_dictionary['slot']
else:
if 'contents' in self._atom_dictionary:
return self._get_slot_value(self._atom_dictionary['contents'])
return False
@property
def use_flags(self):
'''Метод для получения use-флагов из ATOM-словаря.'''
if 'use_flags' in self._atom_dictionary:
return self._atom_dictionary['use_flags']
else:
if 'contents' in self._atom_dictionary:
return self._get_use_flags_value(
self._atom_dictionary['contents'])
else:
return False
@classmethod
def parse_atom_name(cls, atom_name: str) -> dict:
parsing_result = cls.atom_regex.search(atom_name)
@ -753,7 +688,8 @@ class PackageAtomParser:
'name': name,
'version': version,
'slot': slot,
'use_flags': use_flags}
'use_flags': use_flags,
'with_slot': slot is not None}
return atom_dict
@ -1066,4 +1002,4 @@ class Package:
def __repr__(self):
return '<Package: {}/{}>'.format(self.package_name.category,
self.package_name.name)
self.package_name.fullname)

@ -5,14 +5,10 @@ import hashlib
from pprint import pprint
from calculate.templates.template_processor import DirectoryProcessor,\
TemplateWrapper
from calculate.utils.package import PackageAtomName, Version, Package,\
PackageAtomParser
from calculate.utils.package import PackageAtomName, Version, Package
from calculate.utils.files import join_paths
from calculate.utils.io_module import IOModule
from calculate.templates.template_engine import Variables
from collections import OrderedDict
from calculate.variables.datavars import Namespace, Variable, TableType,\
StringType, ListType
CHROOT_PATH = os.path.join(os.getcwd(),
@ -23,12 +19,18 @@ CONFIG_ARCHIVE_PATH = os.path.join(CHROOT_PATH,
EXECUTE_ARCHIVE_PATH = os.path.join(CHROOT_PATH,
'var/lib/calculate/.execute')
test_package_name = PackageAtomName(
test_package_name_1 = PackageAtomName(
{'pkg_path': os.path.join(
CHROOT_PATH,
'var/db/pkg/test-category/test-package-1.0'),
'version': Version('1.0')})
test_package_name_0 = PackageAtomName(
{'pkg_path': os.path.join(
CHROOT_PATH,
'var/db/pkg/test-category/test-package-0.9.6-r1'),
'version': Version('0.9.6-r1')})
other_package_name = PackageAtomName(
{'pkg_path': os.path.join(
CHROOT_PATH,
@ -136,7 +138,7 @@ class TestDirectoryProcessor:
+ ";\n};\n"))
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/file_0'))
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert '/etc/file_0' in test_package
with open(join_paths(CHROOT_PATH, '/etc/file_0'), 'r') as output_file:
output_file_text = output_file.read()
@ -189,7 +191,7 @@ class TestDirectoryProcessor:
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_2'))
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_2/file_0'))
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert '/etc/dir_2' in test_package
assert '/etc/dir_2/file_0' in test_package
with open(join_paths(CHROOT_PATH,
@ -232,7 +234,7 @@ class TestDirectoryProcessor:
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_4'))
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_4/file_0'))
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert '/etc/dir_4' in test_package
assert '/etc/dir_4/file_0' in test_package
with open(join_paths(CHROOT_PATH,
@ -245,7 +247,7 @@ class TestDirectoryProcessor:
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_5/dir_6'))
assert os.path.exists(join_paths(CHROOT_PATH,
'/etc/dir_5/dir_6/file_0'))
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert '/etc/dir_5' in test_package
assert '/etc/dir_5/dir_6' in test_package
assert '/etc/dir_5/dir_6/file_0' in test_package
@ -531,7 +533,7 @@ class TestDirectoryProcessor:
datavars_module=datavars)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
other_package = Package(other_package_name, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_9'))
@ -586,7 +588,7 @@ class TestDirectoryProcessor:
package=other_package_name)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
other_package = Package(other_package_name, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_13'))
@ -606,7 +608,7 @@ class TestDirectoryProcessor:
package=other_package_name)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
other_package = Package(other_package_name, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_15'))
@ -624,7 +626,7 @@ class TestDirectoryProcessor:
directory_processor = DirectoryProcessor('install',
datavars_module=datavars)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
# Для разнообразия один из шаблонов удаляет файл, а не создает.
assert not os.path.exists(join_paths(CHROOT_PATH,
@ -643,7 +645,7 @@ class TestDirectoryProcessor:
directory_processor = DirectoryProcessor('install',
datavars_module=datavars)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
# Для разнообразия один из шаблонов удаляет файл, а не создает.
# Но в данном случае он ничего не сделает.
@ -668,7 +670,7 @@ class TestDirectoryProcessor:
package=other_package_name)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
other_package = Package(other_package_name, chroot_path=CHROOT_PATH)
new_package = Package(new_package_name, chroot_path=CHROOT_PATH)
@ -695,7 +697,7 @@ class TestDirectoryProcessor:
package='test-category/other-package')
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
other_package = Package(other_package_name, chroot_path=CHROOT_PATH)
new_package = Package(new_package_name, chroot_path=CHROOT_PATH)
@ -728,7 +730,7 @@ class TestDirectoryProcessor:
package='test-category/other-package')
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
other_package = Package(other_package_name, chroot_path=CHROOT_PATH)
print('DIRECTORY TREE:')
@ -756,7 +758,7 @@ class TestDirectoryProcessor:
datavars_module=datavars)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/file_10'))
assert '/etc/file_10' in test_package
@ -767,7 +769,7 @@ class TestDirectoryProcessor:
datavars_module=datavars)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert not os.path.exists(join_paths(CHROOT_PATH, '/etc/file_11'))
assert '/etc/file_11' not in test_package
@ -778,7 +780,7 @@ class TestDirectoryProcessor:
datavars_module=datavars)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_29'))
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_29/file_0'))
@ -793,7 +795,7 @@ class TestDirectoryProcessor:
datavars_module=datavars)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert not os.path.exists(join_paths(CHROOT_PATH,
'/etc/dir_30'))
@ -871,7 +873,7 @@ class TestDirectoryProcessor:
directory_processor = DirectoryProcessor(['install', 'update'],
datavars_module=datavars)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH,
'etc/dir_32'))
@ -891,7 +893,7 @@ class TestDirectoryProcessor:
directory_processor = DirectoryProcessor(['install', 'update'],
datavars_module=datavars)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH,
'etc/dir_35'))
@ -909,7 +911,7 @@ class TestDirectoryProcessor:
package='test-category/test-package'
)
directory_processor.process_template_directories()
test_package = Package(test_package_name, chroot_path=CHROOT_PATH)
test_package = Package(test_package_name_1, chroot_path=CHROOT_PATH)
# Тестируем handler_0 -- это просто обработчик-скрипт.
assert os.path.exists(join_paths(CHROOT_PATH,
@ -1054,6 +1056,101 @@ class TestDirectoryProcessor:
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_56'))
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_56/file_0'))
def test_solving_collisions_for_the_same_packages_from_different_slots(self):
datavars.main['cl_template_path'] = os.path.join(CHROOT_PATH,
'templates_39')
directory_processor = DirectoryProcessor(
'install',
datavars_module=datavars,
package='test-category/test-package'
)
header = ('#' + '-' * 79 + '\n' +
'# Modified by Calculate Utilities 4.0\n' +
'# Processed template files:\n' +
'# ' + '{0}' + '\n' +
'#' + '-' * 79 + '\n')
header = header.format('\n# '.
join([join_paths(
CHROOT_PATH,
'templates_39/install/dir_57/file_0')]))
output_text = '{0}{1}'.format(header,
("options {\n parameter-0 yes;"
+ "\n parameter-1 "
+ datavars.ns.variable_1
+ ";\n parameter-2 "
+ datavars.ns.variable_2
+ ";\n};\n"))
directory_processor.process_template_directories()
test_package_0 = Package(test_package_name_0, chroot_path=CHROOT_PATH)
test_package_1 = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_57'))
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_57/file_0'))
with open(join_paths(CHROOT_PATH,
'/etc/dir_57/file_0'), 'r') as output:
output = output.read()
assert output_text == output
assert '/etc/dir_57' in test_package_1
assert '/etc/dir_57/file_0' in test_package_1
assert '/etc/dir_57/file_0' not in test_package_0
def test_solving_collisions_for_the_same_packages_from_different_slots_but_slot_was_set_in_the_package_parameter(self):
datavars.main['cl_template_path'] = os.path.join(CHROOT_PATH,
'templates_40')
directory_processor = DirectoryProcessor(
'install',
datavars_module=datavars)
output_text = "options {\n parameter-0 yes;\n};\n"
directory_processor.process_template_directories()
test_package_0 = Package(test_package_name_0, chroot_path=CHROOT_PATH)
test_package_1 = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_58'))
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_58/file_0'))
with open(join_paths(CHROOT_PATH,
'/etc/dir_58/file_0'), 'r') as output:
output = output.read()
assert output_text == output
assert '/etc/dir_58' not in test_package_1
assert '/etc/dir_58/file_0' not in test_package_1
assert '/etc/dir_58' in test_package_0
assert '/etc/dir_58/file_0' in test_package_0
def test_solving_collisions_for_the_same_packages_from_different_slots_but_slot_was_set_in_the_for_package_parameter(self):
datavars.main['cl_template_path'] = os.path.join(CHROOT_PATH,
'templates_41')
directory_processor = DirectoryProcessor(
'install',
datavars_module=datavars,
package='test-category/test-package:1'
)
output_text = "options {\n parameter-0 yes;\n};\n"
directory_processor.process_template_directories()
test_package_0 = Package(test_package_name_0, chroot_path=CHROOT_PATH)
test_package_1 = Package(test_package_name_1, chroot_path=CHROOT_PATH)
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_59'))
assert os.path.exists(join_paths(CHROOT_PATH, '/etc/dir_59/file_0'))
with open(join_paths(CHROOT_PATH,
'/etc/dir_59/file_0'), 'r') as output:
output = output.read()
assert output_text == output
assert '/etc/dir_59' not in test_package_1
assert '/etc/dir_59/file_0' not in test_package_1
assert '/etc/dir_59' in test_package_0
assert '/etc/dir_59/file_0' in test_package_0
def test_view_tree(self):
list_path = join_paths(CHROOT_PATH, '/etc')
show_tree(list_path)

@ -1,2 +1,2 @@
{% calculate append = 'skip', group = "uninstall",
package = 'test-category/unmerged-package' %}
{% calculate append = "skip", group = 'install, uninstall',
package = 'test-category/other-package' %}

@ -0,0 +1,2 @@
{% calculate append = 'join', name = 'dir_56', group = ['install'],
package = 'test-category/other-package' %}

@ -1,5 +1,5 @@
{% calculate run = '/usr/bin/python' %}
import os
os.mkdir('./dir_57')
with open('./dir_57/file_0', 'w') as output_file:
os.mkdir('./dir_54')
with open('./dir_54/file_0', 'w') as output_file:
output_file.write('Made for uninstalled-package')

@ -1,5 +0,0 @@
{% calculate run = '/usr/bin/python' %}
import os
os.mkdir('./dir_56')
with open('./dir_56/file_0', 'w') as output_file:
output_file.write('Made for build-package')

@ -1,2 +0,0 @@
{% calculate append = "skip", group = 'install, uninstall',
package = 'test-category/other-package' %}

@ -1,2 +0,0 @@
{% calculate append = 'join', name = 'dir_57', group = ['install'],
package = 'test-category/other-package' %}

@ -0,0 +1 @@
{% calculate append = 'skip', path = '/etc', action = 'install' %}

@ -0,0 +1 @@
{% calculate append = 'join', package = "test-category/test-package" %}

@ -0,0 +1,5 @@
{% calculate append = 'join', format = 'bind' -%}
options {
parameter-1 {{ ns.variable_1 }};
parameter-2 {{ ns.variable_2 }};
};

@ -0,0 +1 @@
{% calculate append = 'skip', path = '/etc', action = 'install' %}

@ -0,0 +1 @@
{% calculate append = 'join', package = "test-category/test-package:1" %}

@ -0,0 +1,5 @@
{% calculate append = 'join', format = 'bind' -%}
options {
parameter-1 {{ ns.variable_1 }};
parameter-2 {{ ns.variable_2 }};
};

@ -0,0 +1 @@
{% calculate append = 'skip', path = '/etc', action = 'install' %}

@ -0,0 +1 @@
{% calculate append = 'join', package = "test-category/test-package" %}

@ -0,0 +1,5 @@
{% calculate append = 'join', format = 'bind' -%}
options {
parameter-1 {{ ns.variable_1 }};
parameter-2 {{ ns.variable_2 }};
};

@ -0,0 +1,7 @@
dir /etc
dir /etc/dir_57
obj /etc/dir_57/file_0 c585be6f171462940b44af994a54040d 1593525253
dir /etc/dir_58
obj /etc/dir_58/file_0 c585be6f171462940b44af994a54040d 1593525253
dir /etc/dir_59
obj /etc/dir_59/file_0 c585be6f171462940b44af994a54040d 1593525253

@ -195,7 +195,7 @@ sym /etc/test_dir_2/symlink -> file_2.cfg {}
'dev-lang/python-3.6.9')
assert (atom_name.category == 'dev-lang' and
atom_name.name == 'python-3.6.9' and
atom_name.fullname == 'python-3.6.9' and
atom_name.version == Version('3.6.9') and
atom_name.pkg_path == join_paths(
CHROOT_PATH,
@ -206,7 +206,7 @@ sym /etc/test_dir_2/symlink -> file_2.cfg {}
'dev-lang/python-3.6:3.6/3.6m')
assert (atom_name.category == 'dev-lang' and
atom_name.name == 'python-3.6.9' and
atom_name.fullname == 'python-3.6.9' and
atom_name.version == Version('3.6.9') and
atom_name.pkg_path == join_paths(
CHROOT_PATH,
@ -217,7 +217,7 @@ sym /etc/test_dir_2/symlink -> file_2.cfg {}
atom_name = package_atom.parse_package_parameter(
'dev-lang/python-3.6:')
assert (atom_name.category == 'dev-lang' and
atom_name.name == 'python-3.6.9' and
atom_name.fullname == 'python-3.6.9' and
atom_name.version == Version('3.6.9') and
atom_name.pkg_path == join_paths(
CHROOT_PATH,
@ -228,7 +228,7 @@ sym /etc/test_dir_2/symlink -> file_2.cfg {}
'dev-lang/python-3.6[abi_x86_64,ssl]')
assert (atom_name.category == 'dev-lang' and
atom_name.name == 'python-3.6.9' and
atom_name.fullname == 'python-3.6.9' and
atom_name.version == Version('3.6.9') and
atom_name.pkg_path == join_paths(
CHROOT_PATH,
@ -241,7 +241,7 @@ sym /etc/test_dir_2/symlink -> file_2.cfg {}
'dev-lang/python:3.6/3.6m')
assert (atom_name.category == 'dev-lang' and
atom_name.name == 'python-3.6.9' and
atom_name.fullname == 'python-3.6.9' and
atom_name.version == Version('3.6.9') and
atom_name.pkg_path == join_paths(
CHROOT_PATH,
@ -253,7 +253,7 @@ sym /etc/test_dir_2/symlink -> file_2.cfg {}
'dev-lang/python[specific_flag]')
assert (atom_name.category == 'dev-lang' and
atom_name.name == 'python-3.6.9' and
atom_name.fullname == 'python-3.6.9' and
atom_name.version == Version('3.6.9') and
atom_name.pkg_path == join_paths(
CHROOT_PATH,
@ -274,7 +274,7 @@ sym /etc/test_dir_2/symlink -> file_2.cfg {}
atom_name = package_atom.parse_package_parameter('dev-lang/python')
assert (atom_name.category == 'dev-lang' and
atom_name.name == 'python-3.6.9' and
atom_name.fullname == 'python-3.6.9' and
atom_name.version == Version('3.6.9') and
atom_name.pkg_path == join_paths(
CHROOT_PATH,

Loading…
Cancel
Save