From 1e44535fe09b36a7ecdcfcdd26efaea1916e3dc9 Mon Sep 17 00:00:00 2001 From: Tim Diels Date: Sat, 30 Apr 2011 09:32:53 +0200 Subject: [PATCH] Environment binding: added separator attribute --- tests/testreader.py | 10 +++++++++- zeroinstall/injector/model.py | 16 +++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/tests/testreader.py b/tests/testreader.py index 21787e2..e8c52ba 100755 --- a/tests/testreader.py +++ b/tests/testreader.py @@ -2,6 +2,7 @@ from basetest import BaseTest import sys, tempfile, logging import unittest +import os sys.path.insert(0, '..') @@ -135,6 +136,7 @@ class TestReader(BaseTest): + @@ -155,7 +157,7 @@ class TestReader(BaseTest): assert len(impl.requires) == 1 dep = impl.requires[0] - assert len(dep.bindings) == 4 + assert len(dep.bindings) == 5 for b in dep.bindings: self.assertEquals('PATH', b.name) self.assertEquals('bin', b.insert) @@ -163,6 +165,12 @@ class TestReader(BaseTest): self.assertEquals(model.EnvironmentBinding.PREPEND, dep.bindings[1].mode) self.assertEquals(model.EnvironmentBinding.APPEND, dep.bindings[2].mode) self.assertEquals(model.EnvironmentBinding.REPLACE, dep.bindings[3].mode) + self.assertEquals(model.EnvironmentBinding.PREPEND, dep.bindings[4].mode) + + self.assertEquals(os.path.join('/impl', 'bin:current'), + dep.bindings[0].get_value('/impl', 'current')) + self.assertEquals(os.path.join('/impl', 'bin,current'), + dep.bindings[4].get_value('/impl', 'current')) self.assertEquals(None, dep.bindings[1].default) self.assertEquals('/bin', dep.bindings[2].default) diff --git a/zeroinstall/injector/model.py b/zeroinstall/injector/model.py index 9b3f594..f56434a 100644 --- a/zeroinstall/injector/model.py +++ b/zeroinstall/injector/model.py @@ -127,7 +127,8 @@ def process_binding(e): insert = e.getAttribute('insert'), default = e.getAttribute('default'), value = e.getAttribute('value'), - mode = mode) + mode = mode, + separator = e.getAttribute('separator')) if not binding.name: raise InvalidInterface(_("Missing 'name' in binding")) if binding.insert is None and binding.value is None: raise InvalidInterface(_("Missing 'insert' or 'value' in binding")) @@ -247,7 +248,7 @@ class EnvironmentBinding(Binding): APPEND = 'append' REPLACE = 'replace' - def __init__(self, name, insert, default = None, mode = PREPEND, value=None): + def __init__(self, name, insert, default = None, mode = PREPEND, value=None, separator=None): """ mode argument added in version 0.28 value argument added in version 0.52 @@ -257,9 +258,14 @@ class EnvironmentBinding(Binding): self.default = default self.mode = mode self.value = value + if separator is None: + self.separator = os.pathsep + else: + self.separator = separator + def __str__(self): - return _("") % {'name': self.name,'mode': self.mode, 'insert': self.insert, 'value': self.value} + return _("") % {'name': self.name,'mode': self.mode, 'insert': self.insert, 'value': self.value} __repr__ = __str__ @@ -283,9 +289,9 @@ class EnvironmentBinding(Binding): if old_value is None: return extra if self.mode == EnvironmentBinding.PREPEND: - return extra + os.pathsep + old_value + return extra + self.separator + old_value else: - return old_value + os.pathsep + extra + return old_value + self.separator + extra def _toxml(self, doc): """Create a DOM element for this binding. -- 2.11.4.GIT