Closed
Bug 975136
Opened 11 years ago
Closed 11 years ago
Fix code and documentation for ProcessHandler's onTimeout and onFinish parameters to accept either single function or array
Categories
(Testing :: Mozbase, defect)
Testing
Mozbase
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla30
People
(Reporter: dadeldev, Assigned: dadeldev)
References
()
Details
(Whiteboard: [mentor=whimboo][lang=python])
Attachments
(2 files, 1 obsolete file)
3.12 KB,
patch
|
wlach
:
review+
|
Details | Diff | Splinter Review |
3.20 KB,
patch
|
dadeldev
:
review+
|
Details | Diff | Splinter Review |
User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0 (Beta/Release) Build ID: 20140130123901 Steps to reproduce: The mozprocess module provides ProcessHandler to launch commands. As the documentation says (https://mozbase.readthedocs.org/en/latest/mozprocess.html), the parameters onTimeout and onFinish expect a function that will be called respectively when reaching a given timeout, or at the end of execution. So the following code should work: from mozprocess import processhandler def timeout(): print ("timed out!") p = processhandler.ProcessHandler(['sleep','2'],onTimeout=timeout) p.run(timeout=1) p.wait() And this should also work: from mozprocess import processhandler def finish(): print ("finished!") p = processhandler.ProcessHandler(['sleep', '1'], onFinish=finish) p.run() p.wait() Actual results: A TypeError is raised for each example code: File "/.../mozprocess/processhandler.py", line 616, in __init__ self.onTimeoutHandlers = list(onTimeout) TypeError: 'function' object is not iterable File "/.../mozprocess/processhandler.py", line 617, in __init__ self.onFinishHandlers = list(onFinish) TypeError: 'function' object is not iterable Expected results: According to the documentation, a single function should be accepted instead of a list and the previous code examples shouldn't fail.
Comment 1•11 years ago
|
||
Dadel, thanks a lot for the report. I have checked this and as it looks like the documentation is wrong here. Both parameters are tuples, so a change like this will work: p = processhandler.ProcessHandler(['sleep','2'], onTimeout=(timeout,)) To fix this we would have to change the two parameter descriptions here: http://mxr.mozilla.org/mozilla-central/source/testing/mozbase/mozprocess/mozprocess/processhandler.py#43 Would you have interest to get this fixed? I'm happy to mentor you.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: ProcessHandler's parameters onTimeout and onFinish expect a function but accept only arrays → Update documentation for ProcessHandler's onTimeout and onFinish parameters to mention tuples
Whiteboard: [mentor=whimboo][lang=python]
Hi Henrik, Yes I want to fix it. But I think it's better to accept both a function or a list of functions as it is the case for processOutputLine.
So I propose a patch fixing both docs and code to accept a single function as well as a list.
Attachment #8379950 -
Flags: review?(wlachance)
Comment 6•11 years ago
|
||
Comment on attachment 8379950 [details] [diff] [review] Accepts both function and list for onTimeout and onFinish (fix code and docs) lgtm!
Attachment #8379950 -
Flags: review?(wlachance) → review+
Comment 7•11 years ago
|
||
Inbound: https://hg.mozilla.org/integration/mozilla-inbound/rev/daec597aca9c
https://hg.mozilla.org/mozilla-central/rev/daec597aca9c
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
Comment 9•11 years ago
|
||
A test would have been nice to have here, So that we can ensure it works. Dadel, would you mind to add that?
Assignee: nobody → dadeldev
Flags: in-testsuite?
Assignee | ||
Comment 10•11 years ago
|
||
Henrik, I wrote unit tests for these two and params and also for processOutputLine (fixed in Bug 964506). I don't know if I should file a new bug for that so I attach it here even if it concerns an other bug also.
Comment 12•11 years ago
|
||
Comment on attachment 8380372 [details] [diff] [review] Test params processOutputLine, onTimeout and onFinish Review of attachment 8380372 [details] [diff] [review]: ----------------------------------------------------------------- Thanks Dadel for the tests! It would be really good to have those. Lets get the tests reviewed by William who already reviewed your implementation patch.
Attachment #8380372 -
Flags: review+ → review?(wlachance)
Comment 13•11 years ago
|
||
Comment on attachment 8380372 [details] [diff] [review] Test params processOutputLine, onTimeout and onFinish Review of attachment 8380372 [details] [diff] [review]: ----------------------------------------------------------------- To be honest I feel like these tests are kind of overkill, but I guess it was suggested that you write them and they don't do much harm. :P r+, will commit later today. ::: testing/mozbase/mozprocess/tests/test_mozprocess_params.py @@ +12,5 @@ > + > + def test_process_outputline_handler(self): > + """Parameter processOutputLine is accepted with a single function""" > + def output(line): > + print ("output " + str(line)) We should probably omit the parans around the print statement, for consistency with the rest of mozbase. Other than that, looks fine.
Attachment #8380372 -
Flags: review?(wlachance) → review+
Assignee | ||
Comment 14•11 years ago
|
||
parans were kept for Python3 compatibility but spaces were removed
Attachment #8380372 -
Attachment is obsolete: true
Attachment #8387090 -
Flags: review+
Summary: Update documentation for ProcessHandler's onTimeout and onFinish parameters to mention tuples → Fix code and documentation for ProcessHandler's onTimeout and onFinish parameters to accept either single function or array
Comment 15•11 years ago
|
||
Inbound: https://hg.mozilla.org/integration/mozilla-inbound/rev/d250a7f22fef
Comment 16•11 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/d250a7f22fef
Flags: in-testsuite? → in-testsuite+
You need to log in
before you can comment on or make changes to this bug.
Description
•