Esempio n. 1
0
 def test_substitute_escaped(self):
     self.assertEqual(
         r'X and c:\tmp\foo.txt',
         variable.substitute('${foo} and ${bar}', {
             'foo': 'X',
             'bar': r'c:\tmp\foo.txt'
         }))
Esempio n. 2
0
 def test_substitute_nested(self):
     self.assertEqual(
         'X and ZY and Z',
         variable.substitute('${foo} and ${bar} and ${kiwi}', {
             'foo': 'X',
             'bar': '${kiwi}Y',
             'kiwi': 'Z'
         }))
Esempio n. 3
0
 def test_substitute_word_boundary(self):
     self.assertEqual(
         'X and Y and Z',
         variable.substitute('$foo and $foo_bar and $foo_bar_baz', {
             'foo': 'X',
             'foo_bar': 'Y',
             'foo_bar_baz': 'Z'
         }))
Esempio n. 4
0
 def test_substitute_mixed(self):
     self.assertEqual(
         'X and Y and Z and A',
         variable.substitute('$foo and ${bar} and ${baz} and $PIP', {
             'foo': 'X',
             'bar': 'Y',
             'baz': 'Z',
             'PIP': 'A'
         }))
Esempio n. 5
0
 def resolve_env_vars(clazz, value):
   if not check.is_string(value):
     return value
   variables = variable.find_variables(value)
   substitutions = {}
   for var in variables:
     os_var = os_env_var(var)
     if not os_var.is_set:
       raise ValueError('not set in the current environment: {}'.format(var))
     substitutions[var] = os_var.value
   return variable.substitute(value, substitutions)
Esempio n. 6
0
 def test_substitute(self):
     self.assertEqual(
         'X and Y',
         variable.substitute('$foo and $bar', {
             'foo': 'X',
             'bar': 'Y'
         }))
     self.assertEqual(
         'XY', variable.substitute('$foo$bar', {
             'foo': 'X',
             'bar': 'Y'
         }))
     self.assertEqual('X',
                      variable.substitute('$foo', {
                          'foo': 'X',
                          'bar': 'Y'
                      }))
     self.assertEqual('Y',
                      variable.substitute('$bar', {
                          'foo': 'X',
                          'bar': 'Y'
                      }))
     self.assertEqual('$not',
                      variable.substitute('$not', {
                          'foo': 'X',
                          'bar': 'Y'
                      }))
     self.assertEqual(
         '', variable.substitute('$foo$bar$foo$bar', {
             'foo': '',
             'bar': ''
         }))
Esempio n. 7
0
 def test_substitute_brackets(self):
     self.assertEqual(
         'X and Y',
         variable.substitute('${foo} and ${bar}', {
             'foo': 'X',
             'bar': 'Y'
         }))
     self.assertEqual(
         'XY', variable.substitute('${foo}${bar}', {
             'foo': 'X',
             'bar': 'Y'
         }))
     self.assertEqual(
         'X', variable.substitute('${foo}', {
             'foo': 'X',
             'bar': 'Y'
         }))
     self.assertEqual(
         'Y', variable.substitute('${bar}', {
             'foo': 'X',
             'bar': 'Y'
         }))
     self.assertEqual(
         '${not}', variable.substitute('${not}', {
             'foo': 'X',
             'bar': 'Y'
         }))
     self.assertEqual(
         '',
         variable.substitute('${foo}${bar}${foo}${bar}', {
             'foo': '',
             'bar': ''
         }))
Esempio n. 8
0
 def copy_with_substitute(clazz, src, dst, replacements, backup=True):
     assert isinstance(replacements, dict)
     content = file_util.read(src, 'utf-8')
     new_content = variable.substitute(content, replacements)
     old_content = None
     if path.exists(dst):
         old_content = file_util.read(dst, 'utf-8')
         if old_content == new_content:
             return False
     if backup:
         file_util.backup(dst)
     file_util.save(dst, content=new_content, mode=file_util.mode(src))
     return True
Esempio n. 9
0
 def parse_expression(self, expression):
     variables = {
         'system': self.system,
         'arch': self._arch_to_string(self.arch),
         'level': self.level,
         'distro': self.distro or 'None',
     }
     dict_util.quote_strings(variables)
     exp_with_vars = variable.substitute(expression, variables)
     constants = {
         'MACOS': 'macos',
         'LINUX': 'linux',
         'RELEASE': 'release',
         'DEBUG': 'debug',
         'RASPBIAN': 'raspbian',
     }
     dict_util.quote_strings(constants)
     exp_with_consts = text_replace.replace(exp_with_vars,
                                            constants,
                                            word_boundary=True)
     return eval(exp_with_consts)
Esempio n. 10
0
 def test_substitute_single_var_percent(self):
     self.assertEqual('X', variable.substitute('%foo%', {'foo': 'X'}))
     self.assertEqual('X', variable.substitute('%f%', {'f': 'X'}))
     self.assertEqual('%foo%', variable.substitute('%foo%', {}))
Esempio n. 11
0
 def test_substitute_single_var_at_sign(self):
     self.assertEqual('X', variable.substitute('@foo@', {'foo': 'X'}))
     self.assertEqual('X', variable.substitute('@f@', {'f': 'X'}))
     self.assertEqual('@foo@', variable.substitute('@foo@', {}))
Esempio n. 12
0
 def test_substitute_single_var_parentesis(self):
     self.assertEqual('X', variable.substitute('$(foo)', {'foo': 'X'}))
     self.assertEqual('X', variable.substitute('$(f)', {'f': 'X'}))
     self.assertEqual('$(foo)', variable.substitute('$(foo)', {}))
Esempio n. 13
0
 def test_substitute_single_var_bracket(self):
     self.assertEqual('X', variable.substitute('${foo}', {'foo': 'X'}))
     self.assertEqual('X', variable.substitute('${f}', {'f': 'X'}))
     self.assertEqual('${foo}', variable.substitute('${foo}', {}))
Esempio n. 14
0
 def test_invalid_key(self):
     with self.assertRaises(TypeError) as context:
         variable.substitute('$foo and $bar', {'foo': ['x'], 'bar': 'Y'})
Esempio n. 15
0
 def _resolve_seach_path_part(clazz, part):
     substituted_part = variable.substitute(part, dict(os.environ),
                                            variable.BRACKET)
     return path.expanduser(substituted_part)
Esempio n. 16
0
 def substitute_variables(self, d, patterns=None):
     for i, kv in enumerate(self._values):
         self._values[i] = key_value(
             kv.key, variable.substitute(kv.value, d, patterns=patterns))
Esempio n. 17
0
 def test_substitute_single_var_dollar_only(self):
     self.assertEqual('X', variable.substitute('$foo', {'foo': 'X'}))
     self.assertEqual('X', variable.substitute('$f', {'f': 'X'}))
     self.assertEqual('$foo', variable.substitute('$foo', {}))
Esempio n. 18
0
 def _resolve_variables(self, value, origin):
   variables = variable.find_variables(value)
   if variables:
     substitutions = self._substitutions_for_value(value, variables, origin)
     return variable.substitute(value, substitutions)
   return value
Esempio n. 19
0
 def substitute_variables(self, d):
     self._values = [variable.substitute(s, d) for s in self._values]