Expand and split by consecutive require delimiters

Resolves #832.
This commit is contained in:
Darko Poljak 2020-08-22 19:53:42 +02:00
parent ba26a437be
commit c17541f24c
3 changed files with 17 additions and 2 deletions

View File

@ -25,6 +25,7 @@ import argparse
import logging import logging
import os import os
import sys import sys
import re
import cdist import cdist
from cdist import core from cdist import core
@ -389,12 +390,15 @@ class Emulator:
if "require" in self.env: if "require" in self.env:
requirements = self.env['require'] requirements = self.env['require']
self.log.debug("reqs = " + requirements) self.log.debug("reqs = " + requirements)
for requirement in requirements.split(" "): for requirement in self._parse_require(requirements):
# Ignore empty fields - probably the only field anyway # Ignore empty fields - probably the only field anyway
if len(requirement) == 0: if len(requirement) == 0:
continue continue
self.record_requirement(requirement) self.record_requirement(requirement)
def _parse_require(self, require):
return re.split(r'[ \t\n]+', require)
def record_auto_requirements(self): def record_auto_requirements(self):
"""An object shall automatically depend on all objects that it """An object shall automatically depend on all objects that it
defined in it's type manifest. defined in it's type manifest.

View File

@ -685,6 +685,16 @@ class EmulatorAlreadyExistingRequirementsWarnTestCase(test.CdistTestCase):
self.env['require'] = '__directory/spam' self.env['require'] = '__directory/spam'
emu = emulator.Emulator(argv, env=self.env) emu = emulator.Emulator(argv, env=self.env)
def test_parse_require(self):
require = " \t \n \t\t\n\t\na\tb\nc d \te\t\nf\ng\t "
expected = ['', 'a', 'b', 'c', 'd', 'e', 'f', 'g', '', ]
argv = ['__directory', 'spam']
emu = emulator.Emulator(argv, env=self.env)
requirements = emu._parse_require(require)
self.assertEqual(expected, requirements)
if __name__ == '__main__': if __name__ == '__main__':
import unittest import unittest

View File

@ -95,7 +95,8 @@ Dependencies
------------ ------------
If you want to describe that something requires something else, just If you want to describe that something requires something else, just
setup the variable "require" to contain the requirements. Multiple setup the variable "require" to contain the requirements. Multiple
requirements can be added white space separated. requirements can be added separated with (optionally consecutive)
delimiters including space, tab and newline.
:: ::