def replace(self, text): try: return substitute(text, self.defines) except ZConfig.SubstitutionReplacementError, e: e.lineno = self.lineno e.url = self.url raise
def test_simple_names(self): d = {"name": "value", "name1": "abc", "name_": "def", "_123": "ghi"} def check(s, v): self.assertEqual(substitute(s, d), v) check("$name", "value") check(" $name ", " value ") check("${name}", "value") check(" ${name} ", " value ") check("$name$name", "valuevalue") check("$name1$name", "abcvalue") check("$name_$name", "defvalue") check("$_123$name", "ghivalue") check("$name $name", "value value") check("$name1 $name", "abc value") check("$name_ $name", "def value") check("$_123 $name", "ghi value") check("splat", "splat") check("$$", "$") check("$$$name$$", "$value$") # Check for an ENV var self.assertEqual(substitute("$(PATH)", d), os.getenv("PATH"))
def _existingPath(value, default): global _environ, _paths # Getting the real path if not value: value = os.path.join(os.environ['INSTANCE_HOME'], 'var', default) else: value = substitute(value, _environ) # Check existence through ZConfig datatypes existing_directory = stock_datatypes['existing-directory'] value = existing_directory(value) # Read/write enabled ? if not os.access(value, os.R_OK | os.W_OK): raise ValueError, "Zope process user cannot read+write in %s." % value # Must be unique if value in _paths: raise ValueError, "Path %s is used twice" % value _paths.append(value) return value
def test_non_nesting(self): d = {"name": "$value"} self.assertEqual(substitute("$name", d), "$value")
def check(s, v): self.assertEqual(substitute(s, d), v)