From 5a42c47726a91efec0fad46c91865f02bc7c9d45 Mon Sep 17 00:00:00 2001 From: Greg Ward Date: Tue, 3 Feb 2009 10:38:12 -0500 Subject: [PATCH] (refs #209) patch 1/3: fix FileUpload and FileDownload to support setDefaultWorkdir() --- buildbot/process/buildstep.py | 10 +++++----- buildbot/steps/transfer.py | 20 ++++++++++++++++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/buildbot/process/buildstep.py b/buildbot/process/buildstep.py index 3ff333d..5294747 100644 --- a/buildbot/process/buildstep.py +++ b/buildbot/process/buildstep.py @@ -602,11 +602,11 @@ class BuildStep: self.buildslave = buildslave def setDefaultWorkdir(self, workdir): - # the Build calls this just after __init__ and setDefaultWorkdir. - # ShellCommand and variants use a slave-side workdir, but some other - # steps do not. Subclasses which use a workdir should use the value - # set by this method unless they were constructed with something more - # specific. + # The Build calls this just after __init__(). ShellCommand + # and variants use a slave-side workdir, but some other steps + # do not. Subclasses which use a workdir should use the value + # set by this method unless they were constructed with + # something more specific. pass def addFactoryArguments(self, **kwargs): diff --git a/buildbot/steps/transfer.py b/buildbot/steps/transfer.py index 9098f3d..83aa344 100644 --- a/buildbot/steps/transfer.py +++ b/buildbot/steps/transfer.py @@ -92,10 +92,12 @@ class FileUpload(BuildStep): """ + DEFAULT_WORKDIR = "build" # is this redundant? + name = 'upload' def __init__(self, slavesrc, masterdest, - workdir="build", maxsize=None, blocksize=16*1024, mode=None, + workdir=None, maxsize=None, blocksize=16*1024, mode=None, **buildstep_kwargs): BuildStep.__init__(self, **buildstep_kwargs) self.addFactoryArguments(slavesrc=slavesrc, @@ -114,6 +116,10 @@ class FileUpload(BuildStep): assert isinstance(mode, (int, type(None))) self.mode = mode + def setDefaultWorkdir(self, workdir): + if self.workdir is None: + self.workdir = workdir + def start(self): version = self.slaveVersion("uploadFile") properties = self.build.getProperties() @@ -141,7 +147,7 @@ class FileUpload(BuildStep): # default arguments args = { 'slavesrc': source, - 'workdir': self.workdir, + 'workdir': self.workdir or self.DEFAULT_WORKDIR, 'writer': fileWriter, 'maxsize': self.maxsize, 'blocksize': self.blocksize, @@ -221,10 +227,12 @@ class FileDownload(BuildStep): """ + DEFAULT_WORKDIR = "build" # is this redundant? + name = 'download' def __init__(self, mastersrc, slavedest, - workdir="build", maxsize=None, blocksize=16*1024, mode=None, + workdir=None, maxsize=None, blocksize=16*1024, mode=None, **buildstep_kwargs): BuildStep.__init__(self, **buildstep_kwargs) self.addFactoryArguments(mastersrc=mastersrc, @@ -243,6 +251,10 @@ class FileDownload(BuildStep): assert isinstance(mode, (int, type(None))) self.mode = mode + def setDefaultWorkdir(self, workdir): + if self.workdir is None: + self.workdir = workdir + def start(self): properties = self.build.getProperties() @@ -281,7 +293,7 @@ class FileDownload(BuildStep): 'maxsize': self.maxsize, 'reader': fileReader, 'blocksize': self.blocksize, - 'workdir': self.workdir, + 'workdir': self.workdir or self.DEFAULT_WORKDIR, 'mode': self.mode, } -- 2.11.4.GIT