Skip to content

Commit

Permalink
Merge branch 'multirepo2a' of https://github.com/hborkhuis/buildbot i…
Browse files Browse the repository at this point in the history
…nto multirepo3
  • Loading branch information
hborkhuis committed Feb 16, 2012
2 parents ff235e9 + 8239d69 commit c6a10af
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 61 deletions.
38 changes: 11 additions & 27 deletions master/buildbot/process/properties.py
Expand Up @@ -288,6 +288,7 @@ def getRenderingFor(self, build):
pmap.clear_temporary_values()
return s

#this class was originally written by Tom Prince <tom.prince@ualberta.net>
class InterpolateMap(object):
colon_minus_re = re.compile(r"(.*):-(.*)")
colon_tilde_re = re.compile(r"(.*):~(.*)")
Expand All @@ -298,18 +299,9 @@ def __init__(self, properties, kwargs):

def __getitem__(self, item):
properties = self.properties
key = ''
arg = ''
res = re.search('(?P<key>[^:\[]+)(?P<index>:|\[.*\])(?P<arg>.*)', item)
if res:
key = res.group('key')
index = res.group('index')
if index != ':':
#add src indirection to arg
arg = index + res.group('arg')
else:
arg = res.group('arg')


key, arg = item.split(":", 1)

def prop_fn(arg):
try:
prop, repl = arg.split(":", 1)
Expand All @@ -319,23 +311,14 @@ def prop_fn(arg):

def src_fn(arg):
## TODO: Handle changes
codebase = attr = repl = None

res = re.search('\[(?P<codebase>.*)\]:(?P<attr>[^\]\]:]+):(?P<repl>.*)',
arg)
if res:
codebase = res.group('codebase')
attr = res.group('attr')
repl = res.group('repl')
else:
res = re.search('\[(?P<codebase>.*)\]:(?P<attr>.*)', arg)
if res:
codebase = res.group('codebase')
attr = res.group('attr')
repl = None
try:
codebase, attr, repl = arg.split(":", 2)
except ValueError:
codebase, attr = arg.split(":",1)
repl = None
ss = self.properties.getBuild().getSourceStamp(codebase)
if ss:
return ss.asDict(), attr, repl
return ss.asDict(), attr, repl
else:
return {}, attr, repl

Expand Down Expand Up @@ -402,6 +385,7 @@ def colon_plus(d, kw, repl):
if rv is None: rv = ''
return rv

#this class was originally written by Tom Prince <tom.prince@ualberta.net>
class Interpolate(util.ComparableMixin):
"""
This is a marker class, used fairly widely to indicate that we
Expand Down
82 changes: 48 additions & 34 deletions master/buildbot/test/unit/test_process_properties.py
Expand Up @@ -328,7 +328,6 @@ def setUp(self):
sa = FakeSource()
sb = FakeSource()
sc = FakeSource()
sd = FakeSource()

sa.repository = 'cvs://A..'
sa.codebase = 'cbA'
Expand All @@ -340,63 +339,78 @@ def setUp(self):
sb.project = "Project"
self.build.sources['cbB'] = sb

sd.repository = 'cvs://D..'
sd.codebase = '[cbD]:'
sd.project = None
self.build.sources['[cbD]:'] = sd
sc.repository = 'cvs://C..'
sc.codebase = 'cbC'
sc.project = None
self.build.sources['cbC'] = sc

def test_src(self):
command = Interpolate("echo %(src[cbB]:repository)s")
command = Interpolate("echo %(src:cbB:repository)s")
self.failUnlessEqual(self.build.render(command),
"echo cvs://B..")

def test_src_src(self):
command = Interpolate("echo %(src[cbB]:repository)s %(src[cbB]:project)s")
command = Interpolate("echo %(src:cbB:repository)s %(src:cbB:project)s")
self.failUnlessEqual(self.build.render(command),
"echo cvs://B.. Project")

def test_src_complex_codebase(self):
command = Interpolate("echo %(src[[cbD]:]:repository)s")
self.failUnlessEqual(self.build.render(command),
"echo cvs://D..")


def test_src_attr_empty(self):
command = Interpolate("echo %(src[cbC]:project)s")
command = Interpolate("echo %(src:cbC:project)s")
self.failUnlessEqual(self.build.render(command),
"echo ")

def test_src_attr_codebase_notfound(self):
command = Interpolate("echo %(src:unknown_codebase:project)s")
self.failUnlessEqual(self.build.render(command),
"echo ")


def test_src_colon_plus_false(self):
command = Interpolate("echo '%(src:cbD:project:+defaultrepo)s'")
self.failUnlessEqual(self.build.render(command),
"echo ''")

def test_src_colon_plus_true(self):
command = Interpolate("echo '%(src:cbB:project:+defaultrepo)s'")
self.failUnlessEqual(self.build.render(command),
"echo 'defaultrepo'")

def test_src_colon_minus(self):
command = Interpolate("echo %(src[cbB]:nonattr:-defaultrepo)s")
command = Interpolate("echo %(src:cbB:nonattr:-defaultrepo)s")
self.failUnlessEqual(self.build.render(command),
"echo defaultrepo")

def test_src_colon_minus_false(self):
command = Interpolate("echo '%(src[cbC]:project:-noproject)s'")
command = Interpolate("echo '%(src:cbC:project:-noproject)s'")
self.failUnlessEqual(self.build.render(command),
"echo 'noproject'")

"echo ''")

def test_src_colon_minus_true(self):
command = Interpolate("echo '%(src:cbB:project:-noproject)s'")
self.failUnlessEqual(self.build.render(command),
"echo 'Project'")

def test_src_colon_minus_codebase_notfound(self):
command = Interpolate("echo '%(src[unknown_codebase]:project:-noproject)s'")
command = Interpolate("echo '%(src:unknown_codebase:project:-noproject)s'")
self.failUnlessEqual(self.build.render(command),
"echo 'noproject'")

def test_src_colon_tilde_true(self):
command = Interpolate("echo '%(src[cbB]:project:~noproject)s'")
command = Interpolate("echo '%(src:cbB:project:~noproject)s'")
self.failUnlessEqual(self.build.render(command),
"echo 'Project'")

def test_src_colon_tilde_false(self):
command = Interpolate("echo '%(src[cbC]:project:~noproject)s'")
command = Interpolate("echo '%(src:cbC:project:~noproject)s'")
self.failUnlessEqual(self.build.render(command),
"echo 'noproject'")

def test_src_colon_tilde_false_src_as_replacement(self):
command = Interpolate("echo '%(src[cbC]:project:~%(src[cbA]:project)s)s'")
command = Interpolate("echo '%(src:cbC:project:~%(src:cbA:project)s)s'")
self.failUnlessEqual(self.build.render(command),
"echo 'Project'")

def test_src_colon_tilde_codebase_notfound(self):
command = Interpolate("echo '%(src[unknown_codebase]:project:~noproject)s'")
command = Interpolate("echo '%(src:unknown_codebase:project:~noproject)s'")
self.failUnlessEqual(self.build.render(command),
"echo 'noproject'")

Expand All @@ -417,7 +431,7 @@ def test_kwarg(self):
command = Interpolate("echo %(kw:repository)s", repository = "cvs://A..")
self.failUnlessEqual(self.build.render(command),
"echo cvs://A..")

def test_kwarg_kwarg(self):
command = Interpolate("echo %(kw:repository)s %(kw:branch)s",
repository = "cvs://A..", branch = "default")
Expand All @@ -443,12 +457,12 @@ def test_kwarg_colon_tilde_true(self):
command = Interpolate("echo %(kw:repository:~cvs://B..)s", repository = "cvs://A..")
self.failUnlessEqual(self.build.render(command),
"echo cvs://A..")

def test_kwarg_colon_tilde_false(self):
command = Interpolate("echo %(kw:repository:~cvs://B..)s", repository = "")
self.failUnlessEqual(self.build.render(command),
"echo cvs://B..")

def test_kwarg_colon_tilde_none(self):
command = Interpolate("echo %(kw:repository:~cvs://B..)s", repository = None)
self.failUnlessEqual(self.build.render(command),
Expand All @@ -458,14 +472,14 @@ def test_kwarg_colon_plus_false(self):
command = Interpolate("echo %(kw:repository:+cvs://B..)s", project = "project")
self.failUnlessEqual(self.build.render(command),
"echo ")

def test_kwarg_colon_plus_true(self):
command = Interpolate("echo %(kw:repository:+cvs://B..)s", repository = None)
self.failUnlessEqual(self.build.render(command),
"echo cvs://B..")

def test_kwargs_colon_minus_false_src_as_replacement(self):
command = Interpolate("echo '%(kw:text:-%(src[cbA]:branch)s)s'", notext='ddd')
command = Interpolate("echo '%(kw:text:-%(src:cbA:branch)s)s'", notext='ddd')
self.failUnlessEqual(self.build.render(command),
"echo 'default'")

Expand Down

0 comments on commit c6a10af

Please sign in to comment.