Next: , Previous: Testing with mysql-test-run, Up: ShellCommand


4.12.4.9 SetProperty

This buildstep is similar to ShellCommand, except that it captures the output of the command into a property. It is usually used like this:

     from buildbot.steps import shell
     f.addStep(shell.SetProperty(command="uname -a", property="uname"))

This runs uname -a and captures its output (including stderr), stripped of leading and trailing whitespace, in the property "uname". To avoid stripping, add strip=False.

The property argument can be specified as a WithProperties object, allowing the property name to be built from other property values.

The more advanced usage allows you to specify a function to extract properties from the command output. Here you can use regular expressions, string interpolation, or whatever you would like. In this form, extract_fn should be passed, and not property. The extract_fn function is called with three arguments: the exit status of the command, its standard output as a string, and its standard error as a string. It should return a dictionary containing all new properties.

     def glob2list(rc, stdout, stderr):
         jpgs = [ l.strip() for l in stdout.split('\n') ]
         return { 'jpgs' : jpgs }
     f.addStep(SetProperty(command="ls -1 *.jpg", extract_fn=glob2list))

Note that any ordering relationship of the contents of stdout and stderr is lost. For example, given

     f.addStep(SetProperty(
         command="echo output1; echo error >&2; echo output2",
         extract_fn=my_extract))

Then my_extract will see stdout="output1\noutput2\n" and stderr="error\n".

See also Setting Properties.