[Buildbot] #3648: steps/master.py:... DeprecationWarning: Argument strings and environment keys/values passed to reactor.spawnProcess should be str, not unicode.
Buildbot trac
trac at buildbot.net
Tue Nov 29 04:29:11 UTC 2016
#3648: steps/master.py:... DeprecationWarning: Argument strings and environment
keys/values passed to reactor.spawnProcess should be str, not unicode.
--------------------+-----------------------------------------------
Reporter: dcoshea | Owner:
Type: defect | Status: new
Priority: minor | Milestone: undecided
Version: 0.8.12 | Keywords: unicode eight encoding properties
--------------------+-----------------------------------------------
When a function is passed for the `extract_fn` parameter to
`SetPropertyFromCommand`, that function is passed unicode strings, so is
likely to return unicode strings too, but `MasterShellCommand` triggers a
warning from twisted when those properties containing unicode strings are
interpolated into command lines.
With Buildbot 0.8.12 running under Python 2.6 on CentOS 6, when I include
these steps in a `BuildFactory`:
{{{
def my_extract_fn(exit_status, stdout, stderr):
return {"my_prop": stdout}
f.addStep(shell.SetPropertyFromCommand(
command="echo TEST_VALUE",
extract_fn=my_extract_fn))
f.addStep(master.MasterShellCommand(Interpolate("echo
%(prop:my_prop:~NO_VALUE)s")))
}}}
`twistd.log` shows:
{{{
2016-11-29 14:39:57+1030 [-]
releaseLocks(<buildbot.steps.shell.SetPropertyFromCommand object at
0x7f2334069cd0>): []
2016-11-29 14:39:57+1030 [-] step 'setproperty' complete: success
2016-11-29 14:39:57+1030 [-]
/drv1/buildbot/buildbot/src/buildbot/master/buildbot/steps/master.py:160:
exceptions.DeprecationWarning: Argument strings and environment
keys/values passed to reactor.spawnProcess should be str, not unicode.
2016-11-29 14:39:58+1030 [-]
releaseLocks(<buildbot.steps.master.MasterShellCommand object at
0x7f231c09d190>): []
}}}
I can see from adding debugging output that my_extract_fn() is being
passed unicode strings for `stdout` and `stderr`.
The above is with Twisted 13.1.0.
I can't reproduce this problem with 0.9.1 with Python 2.7 and Twisted
16.6.0, even though the newer version of Twisted has the same checks, so I
assume this has been addressed somewhere in the nine branch within
Buildbot.
This issue can be worked around by converting the strings back from
unicode, e.g.:
{{{
return {"my_prop": str(stdout)}
}}}
Presumably it wouldn't be so easy if the string was non-ASCII.
--
Ticket URL: <http://trac.buildbot.net/ticket/3648>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation
More information about the bugs
mailing list