[Buildbot-devel] doStepIf function
Greg Ward
greg at gerg.ca
Thu May 13 17:51:18 UTC 2010
On Mon, May 10, 2010 at 8:33 AM, robert dugal <rmdugal at hotmail.com> wrote:
> I cannot figure out the syntax for how to use doStepIf with a function so
> that the step is only executed if certain conditions are true. The condition
> needs to have some complex testing of builder properties so I want to write
> this as a function.
> How do I convert something like this below into using a function?
>
> self.addStep(ShellCommand(
> doStepIf=(
> (lambda(step): step.build.getProperties().has_key("FOO"))
> and
> (lambda(step): step.getProperty("FOO") in fooList)
> ), command='some command'))
Charles Lepple's answer is what you want. Here's what you actually did:
func1 = lambda step: step.build.getProperties().has_key("FOO")
func2 = lambda step: lambda(step): step.getProperty("FOO") in fooList)
func = func1 and func2
self.addStep(ShellCommand(
doStepIf=func,
...
))
Since func1 and func2 are both true values, "func1 and func2"
evaluates to func1. So your func2 is unused.
You *can* do this in a single lambda, but you really don't want to.
Charles' suggestion is the way to go.
Greg
More information about the devel
mailing list