2 new revisions:

Revision: 296f8fe802d4
Branch:   default
Author:   Jussi Malinen <jussi.ao.mali...@gmail.com>
Date:     Tue Jun 11 05:39:44 2013
Log:      process docs minor enhancements
http://code.google.com/p/robotframework/source/detail?r=296f8fe802d4

Revision: 50b1bdfd135b
Branch:   default
Author:   Jussi Malinen <jussi.ao.mali...@gmail.com>
Date:     Tue Jun 11 05:40:02 2013
Log:      regen
http://code.google.com/p/robotframework/source/detail?r=50b1bdfd135b

==============================================================================
Revision: 296f8fe802d4
Branch:   default
Author:   Jussi Malinen <jussi.ao.mali...@gmail.com>
Date:     Tue Jun 11 05:39:44 2013
Log:      process docs minor enhancements
http://code.google.com/p/robotframework/source/detail?r=296f8fe802d4

Modified:
 /src/robot/libraries/Process.py

=======================================
--- /src/robot/libraries/Process.py     Tue Jun 11 05:15:35 2013
+++ /src/robot/libraries/Process.py     Tue Jun 11 05:39:44 2013
@@ -133,7 +133,7 @@
     By default processes are run so that their standard output and standard
     error streams are kept in the memory. This works fine normally,
     but if there is a lot of output, the output buffers may get full and
-    the program hang.
+    the program could hang.

     To avoid output buffers getting full, it is possible to use `stdout`
     and `stderr` arguments to specify files on the file system where to
@@ -142,6 +142,9 @@
     Given `stdout` and `stderr` paths are relative to the `current working
     directory`.

+ *Note:* The created files are not automatically removed after the test run
+    and the user is responsible of removing the output files if needed.
+
     As a special feature, it is possible to redirect the standard error to
     the standard output by using `stderr=STDOUT`.


==============================================================================
Revision: 50b1bdfd135b
Branch:   default
Author:   Jussi Malinen <jussi.ao.mali...@gmail.com>
Date:     Tue Jun 11 05:40:02 2013
Log:      regen
http://code.google.com/p/robotframework/source/detail?r=50b1bdfd135b

Modified:
 /doc/libraries/Process.html

=======================================
--- /doc/libraries/Process.html Thu Jun  6 01:16:00 2013
+++ /doc/libraries/Process.html Tue Jun 11 05:40:02 2013
@@ -169,7 +169,7 @@
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$| \{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0|| e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d|| null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt| |c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b|| {};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c| |{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")|| a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]|| a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]| \}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]| \}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default|| [];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1| |"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g| |i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)| |0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]|| f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d| |"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML|| s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
 </script>
 <script type="text/javascript">
-libdoc = {"doc":"<p>Robot Framework test library for running processes.</p>\n<p>This library utilizes Python's <a href=\"http://docs.python.org/2.7/library/subprocess.html\";>subprocess</a> module and its <a href=\"http://docs.python.org/2.7/library/subprocess.html#subprocess.Popen\";>Popen</a> class.</p>\n<p>The library has following main usages:</p>\n<ul>\n<li>Starting a processes, and managing their handles, stdouts and stderrs (e.g. <a href=\"#Run Process\" class=\"name\">Run Process</a> and <a href=\"#Start Process\" class=\"name\">Start Process</a> keywords).</li>\n<li>Stopping processes started by this library (e.g. <a href=\"#Terminate All Processes\" class=\"name\">Terminate All Processes</a> and <a href=\"#Terminate Process\" class=\"name\">Terminate Process</a> keywords). See <a href=\"#Stopping processes\" class=\"name\">Stopping processes</a> for more information.</li>\n<li>Switching between processes (e.g. <a href=\"#Switch Process\" class=\"name\">Switch Process</a> keyword).</li>\n<li>Checking process status (e.g. <a href=\"#Process Should Be Running\" class=\"name\">Process Should Be Running</a> and <a href=\"#Process Should Be Stopped\" class=\"name\">Process Should Be Stopped</a> keywords).</li>\n</ul>\n<p>Note that this library has not been designed for <a href=\"http://ironpython.codeplex.com/\";>IronPython</a> compatibility.</p>\n<h3>Table of contents</h3>\n<ul>\n<li><a href=\"#Configurations\" class=\"name\">Configurations</a></li>\n<li><a href=\"#Active process\" class=\"name\">Active process</a></li>\n<li><a href=\"#Stopping processes\" class=\"name\">Stopping processes</a></li>\n<li><a href=\"#ExecutionResult\" class=\"name\">ExecutionResult</a></li>\n<li><a href=\"#Similarities with OperatingSystem library\" class=\"name\">Similarities with OperatingSystem library</a></li>\n<li><a href=\"#Example\" class=\"name\">Example</a></li>\n</ul>\n<h2 id=\"Configurations\">Configurations</h2>\n<p><a href=\"#Run Process\" class=\"name\">Run Process</a> and <a href=\"#Start Process\" class=\"name\">Start Process</a> keywords can be given several named arguments, which are listed below.</p>\n<ul>\n<li><span class=\"name\">cwd</span> specifies the working directory</li>\n<li><span class=\"name\">shell</span> specifies whether shell is used for program execution</li>\n<li><span class=\"name\">env</span> specifies the environment of the program being run</li>\n<li><span class=\"name\">stdout</span> is a file path of standard output</li>\n<li><span class=\"name\">stderr</span> is a file path of standard error</li>\n<li><span class=\"name\">alias</span> is a short name for the process which can be used for interacting</li>\n</ul>\n<p>with that process as a process handle.</p>\n<h3>Current working directory</h3>\n<p>If <span class=\"name\">cwd</span> argument is not given, the child program's execution directory will be a the directory where Robot Framework executable was launched or where current working directory is set during test execution with other keywords.</p>\n<p>If <span class=\"name\">cwd</span> is given then that directory is used as the current working directory.</p>\n<h3>Running processes in a shell</h3>\n<p>The <span class=\"name\">shell</span> argument specifies whether shell is used as program during execution. By default this has value <span class=\"name\">False</span>, which means that shell specific commands, like <span class=\"name\">copy</span> and <span class=\"name\">dir</span> are not available. It also means that process runnable and its arguments must be given as a separate argument for <a href=\"#Run Process\" class=\"name\">Run Process</a> and <a href=\"#Start Process\" class=\"name\">Start Process</a> keywords.</p>\n<p>When <span class=\"name\">shell</span> is <span class=\"name\">True</span>, the program with its arguments can be given in a single string for <a href=\"#Run Process\" class=\"name\">Run Process</a> and <a href=\"#Start Process\" class=\"name\">Start Process</a> keywords.</p>\n<p>On Unix, the default shell is <span class=\"name\">/bin/sh</span>. On Windows, the default shell is specified by the <span class=\"name\">COMSPEC</span> environment variable.</p>\n<h3>Environment</h3>\n<p>If <span class=\"name\">env</span> argument is not given or is <span class=\"name\">None</span>, then the current process's environment is used. Argument can be used to customize the environment of the program being run.</p>\n<p>There are two ways of giving environment variables:</p>\n<ul>\n<li>as a dictionary containing environment variables in a key-value pairs</li>\n<li>or using special key <span class=\"name\">env:</span> in the argument.</li>\n</ul>\n<p>Examples below.</p>\n<table border=\"1\">\n<tr>\n<td>${result}=</td>\n<td>Run Process</td>\n<td>python -c \"import os; print os.environ;\"</td>\n<td>shell=True</td>\n<td>env:specialvar=spessu</td>\n</tr>\n<tr>\n<td>${result}=</td>\n<td>Run Process</td>\n<td>python -c \"import os; print os.environ;\"</td>\n<td>shell=True</td>\n<td>env=${setenv}</td>\n</tr>\n</table>\n<h3>Standard output and error</h3>\n<p>Process output and error streams can be given as an argument to <a href=\"#Run Process\" class=\"name\">Run Process</a> and <a href=\"#Start Process\" class=\"name\">Start Process</a> keywords. By default streams are <span class=\"name\">PIPE</span>d. Information about these streams is stored into <a href=\"#ExecutionResult\" class=\"name\">ExecutionResult</a> object.</p>\n<p>The <span class=\"name\">stderr</span> and the <span class=\"name\">stdout</span> can be redirected to <span class=\"name\">PIPE</span> by giving it value <span class=\"name\">PIPE</span>.</p>\n<p>The <span class=\"name\">stderr</span> can be redirected to the standard output stream by giving argument in a way shown below.</p>\n<table border=\"1\">\n<tr>\n<td>${result}=</td>\n<td>Run Process</td>\n<td>python -c \"print 'hello';1/0\"</td>\n<td>shell=True</td>\n<td>stderr=STDOUT</td>\n<td></td>\n</tr>\n<tr>\n<td>${result}=</td>\n<td>Run Process</td>\n<td>python -c \"print 'hello';1/0\"</td>\n<td>shell=True</td>\n<td>stdout=filename.txt</td>\n<td>stderr=filename.txt</td>\n</tr>\n</table>\n<h2 id=\"Active process\">Active process</h2>\n<p>The test library keeps record which of the started processes is an active process. Many of the library keywords have <span class=\"name\">handle</span> as optional argument. This means that if argument <span class=\"name\">handle</span> is NOT given, then the active process is used for keyword. Active process can be switched using keyword <a href=\"#Switch Process\" class=\"name\">Switch Process</a>.</p>\n<p>The most recently started process, started with <a href=\"#Start Process\" class=\"name\">Start Process</a>, is always the <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<h2 id=\"Stopping processes\">Stopping processes</h2>\n<p>Due restrictions set by <a href=\"http://docs.python.org/2.7/library/subprocess.html\";>subprocess</a> module, the process stopping is NOT functioning properly on <a href=\"http://www.jython.org\";>Jython</a> and pre-2.6 Python. In Jython especially we don't have the information about the PIDs of the started processes therefore making the stopping of the process difficult.</p>\n<h2 id=\"ExecutionResult\">ExecutionResult</h2>\n<p>This object contains information about the process execution.</p>\n<p>Included information is:</p>\n<ul>\n<li><span class=\"name\">stdout</span> file content of standard output stream</li>\n<li><span class=\"name\">stderr</span> file content of standard error stream</li>\n<li><span class=\"name\">stdout_path</span> filepath of standard output</li>\n<li><span class=\"name\">stderr_path</span> filepath of standard error</li>\n<li><span class=\"name\">exit_code</span> from the process.</li>\n</ul>\n<table border=\"1\">\n<tr>\n<td>${result}=</td>\n<td>Run Process</td>\n<td>python</td>\n<td>-c</td>\n<td>${command}</td>\n</tr>\n<tr>\n<td>${output1}=</td>\n<td>Get File</td>\n<td>${result.stdout_path}</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>${output2}=</td>\n<td>Get File</td>\n<td>${result.stderr_path}</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>Log</td>\n<td>${result.exit_code}</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>Should Be Equal</td>\n<td>${result.stdout}</td>\n<td>${output1}</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>Should Be Equal</td>\n<td>${result.stderr}</td>\n<td>${output2}</td>\n<td></td>\n<td></td>\n</tr>\n</table>\n<h2 id=\"Similarities with OperatingSystem library\">Similarities with OperatingSystem library</h2>\n<p>The OperatingSystem library also contains the keywords <a href=\"#Start Process\" class=\"name\">Start Process</a> and <a href=\"#Switch Process\" class=\"name\">Switch Process</a>. In the situation that these both libraries are in use within the same test suite, the <span class=\"name\">Process</span> library's keywords will be preferred.</p>\n<p>You can still use OperatingSystem keywords by calling it explicitly (e.g. <span class=\"name\">OperatingSystem.Start Process</span>) or by setting library search order using <span class=\"name\">BuiltIn</span> library's keyword <span class=\"name\">Set Library Search Order</span> and then calling <a href=\"#Start Process\" class=\"name\">Start Process</a>.</p>\n<table border=\"1\">\n<tr>\n<td><b>*</b> Settings <b>*</b></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>Library</td>\n<td>Process</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>Library</td>\n<td>OperatingSystem</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><b>*</b> Test Cases <b>*</b></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>Similar libraries in use</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>/path/command.sh</td>\n<td># Process Library keyword is used</td>\n</tr>\n<tr>\n<td></td>\n<td><span class=\"name\">OperatingSystem.Start Process</span></td>\n<td>${CURDIR}${/}mytool</td>\n<td># OperatingSystem library keyword is used</td>\n</tr>\n<tr>\n<td></td>\n<td><span class=\"name\">Process.Start Process</span></td>\n<td>${CURDIR}${/}mytool</td>\n<td># Process library keyword is used</td>\n</tr>\n<tr>\n<td></td>\n<td>Set Library Search Order</td>\n<td>OperatingSystem</td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>/path/command.sh</td>\n<td># OperatingSystem library keyword is used</td>\n</tr>\n</table>\n<h2 id=\"Example\">Example</h2>\n<p>The following example demonstrates library's main usages as stated above.</p>\n<table border=\"1\">\n<tr>\n<td><b>*</b> Settings <b>*</b></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>Library</td>\n<td>Process</td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><b>*</b> Test Cases <b>*</b></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>Example</td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td>${handle1}=</td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>/path/command.sh</td>\n<td>shell=True</td>\n<td>cwd=/path</td>\n</tr>\n<tr>\n<td></td>\n<td>${handle2}=</td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>${CURDIR}${/}mytool</td>\n<td>shell=True</td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td>${result1}=</td>\n<td><a href=\"#Wait For Process\" class=\"name\">Wait For Process</a></td>\n<td>${handle1}</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td><a href=\"#Terminate Process\" class=\"name\">Terminate Process</a></td>\n<td>${handle2}</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td><a href=\"#Process Should Be Stopped\" class=\"name\">Process Should Be Stopped</a></td>\n<td>${handle2}</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td>[Teardown]</td>\n<td><a href=\"#Terminate All Processes\" class=\"name\">Terminate All Processes</a></td>\n<td>kill=True</td>\n<td></td>\n<td></td>\n</tr>\n</table>","generated":"2013-06-06 11:15:39","inits":[],"keywords":[{"args":"handle=None","doc":"<p>Returns a process ID of process with <span class=\"name\">handle</span>.</p>\n<p>Argument <span class=\"name\">handle</span> is optional, if <span class=\"name\">None</span> then the active process is used.</p>\n<p>Return value is a integer value.</p>\n<p>Examples:</p>\n<table border=\"1\">\n<tr>\n<td>${handle1}=</td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>python -c \"print 'hello'\"</td>\n<td>shell=True</td>\n<td>alias=hello</td>\n<td></td>\n</tr>\n<tr>\n<td>${pid_1}=</td>\n<td><a href=\"#Get Process Id\" class=\"name\">Get Process Id</a></td>\n<td></td>\n<td></td>\n<td></td>\n<td># Gets PID of the active process</td>\n</tr>\n<tr>\n<td>${pid_2}=</td>\n<td><a href=\"#Get Process Id\" class=\"name\">Get Process Id</a></td>\n<td>${handle1}</td>\n<td></td>\n<td></td>\n<td># Gets PID with <span class=\"name\">handle1</span></td>\n</tr>\n<tr>\n<td>${pid_3}=</td>\n<td><a href=\"#Get Process Id\" class=\"name\">Get Process Id</a></td>\n<td>hello</td>\n<td></td>\n<td></td>\n<td># Gets PID with alias <span class=\"name\">hello</span></td>\n</tr>\n<tr>\n<td>Should Be Equal As Integers</td>\n<td>${pid_1}</td>\n<td>${pid_2}</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>Should Be Equal As Integers</td>\n<td>${pid_1}</td>\n<td>${pid_3}</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n</table>","name":"Get Process Id","shortdoc":"Returns a process ID of process with `handle`."},{"args":"handle=None","doc":"<p>Return the underlying Popen process object with <span class=\"name\">handle</span>.</p>\n<p>Argument <span class=\"name\">handle</span> is optional, if <span class=\"name\">None</span> then the active process is used.</p>","name":"Get Process Object","shortdoc":"Return the underlying Popen process object with `handle`."},{"args":"handle=None","doc":"<p>Checks if process with <span class=\"name\">handle</span> is running or not.</p>\n<p>Argument <span class=\"name\">handle</span> is optional, if <span class=\"name\">None</span> then the active process is used.</p>\n<p>Return value is either <span class=\"name\">True</span> (process is running) or <span class=\"name\">False</span> (process has stopped).</p>","name":"Process Is Running","shortdoc":"Checks if process with `handle` is running or not."},{"args":"handle=None","doc":"<p>Expects that process with <span class=\"name\">handle</span> is running. Argument <span class=\"name\">handle</span> is optional, if <span class=\"name\">None</span> then the active process is used.</p>\n<p>Check is done using <a href=\"#Process Is Running\" class=\"name\">Process Is Running</a> keyword.</p>\n<p>Raises an error if process is stopped.</p>","name":"Process Should Be Running","shortdoc":"Expects that process with `handle` is running."},{"args":"handle=None","doc":"<p>Expects that process with <span class=\"name\">handle</span> is stopped. Argument <span class=\"name\">handle</span> is optional, if <span class=\"name\">None</span> then the active process is used.</p>\n<p>Check is done using <a href=\"#Process Is Running\" class=\"name\">Process Is Running</a> keyword.</p>\n<p>Raises an error if process is running.</p>","name":"Process Should Be Stopped","shortdoc":"Expects that process with `handle` is stopped."},{"args":"command, *arguments, **configuration","doc":"<p>Runs a process and waits for it to terminate.</p>\n<p>The <span class=\"name\">command</span> is a child program which is started in a new process, <span class=\"name\">arguments</span> are arguments for the <span class=\"name\">command</span> and <span class=\"name\">configuration</span> are arguments for the <a href=\"http://docs.python.org/2.7/library/subprocess.html\";>subprocess</a> module's <a href=\"http://docs.python.org/2.7/library/subprocess.html#subprocess.Popen\";>Popen</a> class (see <a href=\"#Configurations\" class=\"name\">Configurations</a>).</p>\n<p>This command doesn't change the <a href=\"#Active process\" class=\"name\">active process</a>.</p>","name":"Run Process","shortdoc":"Runs a process and waits for it to terminate."},{"args":"command, *arguments, **configuration","doc":"<p>Starts a new process.</p>\n<p>The <span class=\"name\">command</span> is a child program which is started in a new process, <span class=\"name\">arguments</span> are arguments for the <span class=\"name\">command</span> and <span class=\"name\">configuration</span> are arguments for the <a href=\"http://docs.python.org/2.7/library/subprocess.html\";>subprocess</a> module's <a href=\"http://docs.python.org/2.7/library/subprocess.html#subprocess.Popen\";>Popen</a> class (see <a href=\"#Configurations\" class=\"name\">Configurations</a>).</p>\n<p>Configuration can contain the following options for the process:</p>\n<ul>\n<li>stdout - A file path to use for standard output from the process</li>\n<li>stderr - A file path to use for standard error from the process</li>\n<li>shell - True value will execute the process in a shell</li>\n<li>cwd - Current working directory for the process</li>\n<li>env and env:VARNAME=VALUE - dictionary for the environment variables to use</li>\n</ul>\n<p>Returns process index on success.</p>\n<p>This new process is set as the <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<p>Examples:</p>\n<table border=\"1\">\n<tr>\n<td>${handle1}=</td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>/bin/script.sh</td>\n<td></td>\n</tr>\n<tr>\n<td>${handle2}=</td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>totals</td>\n<td></td>\n</tr>\n<tr>\n<td>${handle3}=</td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>/bin/script.sh</td>\n<td>cwd=/some/directory/</td>\n</tr>\n<tr>\n<td>${handle4}=</td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>/bin/script.sh</td>\n<td>env:MYVAR=myvalue</td>\n</tr>\n<tr>\n<td>${handle5}=</td>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>/bin/script.sh</td>\n<td>stdout=somefile.out</td>\n</tr>\n</table>","name":"Start Process","shortdoc":"Starts a new process."},{"args":"handle","doc":"<p>Switches active process into process with <span class=\"name\">handle</span>.</p>\n<p>Examples:</p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>dir</td>\n<td>shell=True</td>\n<td>alias=process1</td>\n</tr>\n<tr>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>ls</td>\n<td>shell=True</td>\n<td>alias=process2</td>\n</tr>\n<tr>\n<td># currently active process is process2</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><a href=\"#Switch Process\" class=\"name\">Switch Process</a></td>\n<td>process1</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td># now active process is process 1</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n</table>","name":"Switch Process","shortdoc":"Switches active process into process with `handle`."},{"args":"kill=True","doc":"<p>Terminates all still running processes started by this library.</p>","name":"Terminate All Processes","shortdoc":"Terminates all still running processes started by this library."},{"args":"handle=None, kill=False","doc":"<p>Terminates process using either kill or terminate method.</p>\n<p>See <a href=\"http://docs.python.org/2.7/library/subprocess.html\";>subprocess</a> module's <span class=\"name\">kill()</span> or <span class=\"name\">terminate()</span>, which can be selected using <span class=\"name\">kill</span> argument (by default <span class=\"name\">terminate()</span> is used).</p>\n<p>Argument <span class=\"name\">handle</span> is optional, if <span class=\"name\">None</span> then the active process is used.</p>\n<p>Examples:</p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Terminate Process\" class=\"name\">Terminate Process</a></td>\n<td></td>\n<td></td>\n<td># Terminates the active process</td>\n</tr>\n<tr>\n<td><a href=\"#Terminate Process\" class=\"name\">Terminate Process</a></td>\n<td>${handle3}</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><a href=\"#Terminate Process\" class=\"name\">Terminate Process</a></td>\n<td>${handle3}</td>\n<td>kill=True</td>\n<td># Using kill instead of terminate</td>\n</tr>\n</table>","name":"Terminate Process","shortdoc":"Terminates process using either kill or terminate method."},{"args":"handle=None","doc":"<p>Waits for process with <span class=\"name\">handle</span> to terminate.</p>\n<p>Argument <span class=\"name\">handle</span> is optional, if <span class=\"name\">None</span> then the active process is used.</p>\n<p>Returns an <a href=\"#ExecutionResult\" class=\"name\">ExecutionResult</a> object.</p>\n<p>Examples:</p>\n<table border=\"1\">\n<tr>\n<td>${output}=</td>\n<td><a href=\"#Wait For Process\" class=\"name\">Wait For Process</a></td>\n<td></td>\n</tr>\n<tr>\n<td>Should Be Equal As Integers</td>\n<td>${output.exit_code}</td>\n<td>0</td>\n</tr>\n<tr>\n<td>Should Match</td>\n<td>${output.stdout}</td>\n<td><span class=\"name\">*text in the out*</span></td>\n</tr>\n<tr>\n<td>Should Match</td>\n<td>${output.stderr}</td>\n<td></td>\n</tr>\n</table>","name":"Wait For Process","shortdoc":"Waits for process with `handle` to terminate."}],"name":"Process","named_args":true,"scope":"global","version":"trunk 20130531"}; +libdoc = {"doc":"<p>Robot Framework test library for running processes.</p>\n<p>This library utilizes Python's <a href=\"http://docs.python.org/2.7/library/subprocess.html\";>subprocess</a> module and its <a href=\"http://docs.python.org/2.7/library/subprocess.html#subprocess.Popen\";>Popen</a> class.</p>\n<p>The library has following main usages:</p>\n<ul>\n<li>Running processes in system and waiting for their completion using <a href=\"#Run Process\" class=\"name\">Run Process</a> keyword.</li>\n<li>Starting processes on background using <a href=\"#Start Process\" class=\"name\">Start Process</a>.</li>\n<li>Waiting started process to complete using <a href=\"#Wait For Process\" class=\"name\">Wait For Process</a> or stopping them with <a href=\"#Terminate Process\" class=\"name\">Terminate Process</a> or <a href=\"#Terminate All Processes\" class=\"name\">Terminate All Processes</a>.</li>\n</ul>\n<p>This library is new in Robot Framework 2.8.</p>\n<h3 id=\"Table of contents\">Table of contents</h3>\n<ul>\n<li><a href=\"#Specifying command and arguments\" class=\"name\">Specifying command and arguments</a></li>\n<li><a href=\"#Process configuration\" class=\"name\">Process configuration</a></li>\n<li><a href=\"#Active process\" class=\"name\">Active process</a></li>\n<li><a href=\"#Stopping processes\" class=\"name\">Stopping processes</a></li>\n<li><a href=\"#Result object\" class=\"name\">Result object</a></li>\n<li><a href=\"#Using with OperatingSystem library\" class=\"name\">Using with OperatingSystem library</a></li>\n<li><a href=\"#Example\" class=\"name\">Example</a></li>\n</ul>\n<h2 id=\"Specifying command and arguments\">Specifying command and arguments</h2>\n<p>Both <a href=\"#Run Process\" class=\"name\">Run Process</a> and <a href=\"#Start Process\" class=\"name\">Start Process</a> accept the command to execute and all arguments passed to it as separate arguments. This is convenient to use and also allows these keywords to automatically escape possible spaces and other special characters in the command or arguments.</p>\n<p>When <a href=\"#Running processes in shell\" class=\"name\">running processes in shell</a>, it is also possible to give the whole command to execute as a single string. The command can then contain multiple commands, for example, connected with pipes. When using this approach the caller is responsible on escaping.</p>\n<p>Examples:</p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Run Process\" class=\"name\">Run Process</a></td>\n<td>${progdir}/prog.exe</td>\n<td>first arg</td>\n<td>second</td>\n</tr>\n<tr>\n<td><a href=\"#Run Process\" class=\"name\">Run Process</a></td>\n<td>prog1.py arg &amp;&amp; prog2.py</td>\n<td>shell=yes</td>\n<td>cwd=${progdir}</td>\n</tr>\n</table>\n<h2 id=\"Process configuration\">Process configuration</h2>\n<p><a href=\"#Run Process\" class=\"name\">Run Process</a> and <a href=\"#Start Process\" class=\"name\">Start Process</a> keywords can be configured using optional <span class=\"name\">**configuration</span> keyword arguments. Available configuration arguments are listed below and discussed further in sections afterwards.</p>\n<table border=\"1\">\n<tr>\n<td><b>Name</b></td>\n<td><b>Explanation</b></td>\n</tr>\n<tr>\n<td>shell</td>\n<td>Specifies whether to run the command in shell or not</td>\n</tr>\n<tr>\n<td>cwd</td>\n<td>Specifies the working directory.</td>\n</tr>\n<tr>\n<td>env</td>\n<td>Specifies environment variables given to the process.</td>\n</tr>\n<tr>\n<td>env:&lt;name&gt;</td>\n<td>Overrides the named environment variable(s) only.</td>\n</tr>\n<tr>\n<td>stdout</td>\n<td>Path of a file where to write standard output.</td>\n</tr>\n<tr>\n<td>stderr</td>\n<td>Path of a file where to write standard error.</td>\n</tr>\n<tr>\n<td>alias</td>\n<td>Alias given to the process.</td>\n</tr>\n</table>\n<p>Configuration must be given after other arguments passed to these keywords and must use syntax <span class=\"name\">name=value</span>.</p>\n<h3 id=\"Running processes in shell\">Running processes in shell</h3>\n<p>The <span class=\"name\">shell</span> argument specifies whether to run the process in a shell or not. By default shell is not used, which means that shell specific commands, like <span class=\"name\">copy</span> and <span class=\"name\">dir</span> on Windows, are not available.</p>\n<p>Giving the <span class=\"name\">shell</span> argument any non-false value, such as <span class=\"name\">shell=True</span>, changes the program to be executed in a shell. It allows using the shell capabilities, but can also make the process invocation operating system dependent.</p>\n<p>When using a shell it is possible to give the whole command to execute as a single string. See <a href=\"#Specifying command and arguments\" class=\"name\">Specifying command and arguments</a> section for more details.</p>\n<h3 id=\"Current working directory\">Current working directory</h3>\n<p>By default the child process will be executed in the same directory as the parent process, the process running tests, is executed. This can be changed by giving an alternative location using the <span class=\"name\">cwd</span> argument.</p>\n<p><a href=\"#Standard output and error streams\" class=\"name\">Standard output and error streams</a>, when redirected to files, are also relative to the current working directory possibly set using the <span class=\"name\">cwd</span> argument.</p>\n<p>Example:</p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Run Process\" class=\"name\">Run Process</a></td>\n<td>prog.exe</td>\n<td>cwd=c:\\\\temp</td>\n<td>stdout=stdout.txt</td>\n</tr>\n</table>\n<h3 id=\"Environment variables\">Environment variables</h3>\n<p>By default the child process will get a copy of the parent process's environment variables. The <span class=\"name\">env</span> argument can be used to give the child a custom environment as a Python dictionary. If there is a need to specify only certain environment variable, it is possible to use the <span class=\"name\">env:&lt;name&gt;</span> format to set or override only that named variables. It is also possible to use these two approaches together.</p>\n<p>Examples:</p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Run Process\" class=\"name\">Run Process</a></td>\n<td>program</td>\n<td>env=${environ}</td>\n<td></td>\n</tr>\n<tr>\n<td><a href=\"#Run Process\" class=\"name\">Run Process</a></td>\n<td>program</td>\n<td>env:PATH=%{PATH}${:}${PROGRAM DIR}</td>\n<td></td>\n</tr>\n<tr>\n<td><a href=\"#Run Process\" class=\"name\">Run Process</a></td>\n<td>program</td>\n<td>env=${environ}</td>\n<td>env:EXTRA=value</td>\n</tr>\n</table>\n<h3 id=\"Standard output and error streams\">Standard output and error streams</h3>\n<p>By default processes are run so that their standard output and standard error streams are kept in the memory. This works fine normally, but if there is a lot of output, the output buffers may get full and the program could hang.</p>\n<p>To avoid output buffers getting full, it is possible to use <span class=\"name\">stdout</span> and <span class=\"name\">stderr</span> arguments to specify files on the file system where to redirect the outputs. This can also be useful if other processes or other keywords need to read or manipulate the outputs somehow. Given <span class=\"name\">stdout</span> and <span class=\"name\">stderr</span> paths are relative to the <a href=\"#Current working directory\" class=\"name\">current working directory</a>.</p>\n<p><b>Note:</b> The created files are not automatically removed after the test run and the user is responsible of removing the output files if needed.</p>\n<p>As a special feature, it is possible to redirect the standard error to the standard output by using <span class=\"name\">stderr=STDOUT</span>.</p>\n<p>Regardless are outputs redirected to files or not, they are accessible through the <a href=\"#Result object\" class=\"name\">result object</a> returned when the process ends.</p>\n<p>Examples:</p>\n<table border=\"1\">\n<tr>\n<td>${result} =</td>\n<td><a href=\"#Run Process\" class=\"name\">Run Process</a></td>\n<td>program</td>\n<td>stdout=${TEMPDIR}/stdout.txt</td>\n<td>stderr=${TEMPDIR}/stderr.txt</td>\n</tr>\n<tr>\n<td><span class=\"name\">Log Many</span></td>\n<td>stdout: ${result.stdout}</td>\n<td>stderr: ${result.stderr}</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>${result} =</td>\n<td><a href=\"#Run Process\" class=\"name\">Run Process</a></td>\n<td>program</td>\n<td>stderr=STDOUT</td>\n<td></td>\n</tr>\n<tr>\n<td><span class=\"name\">Log</span></td>\n<td>all output: ${result.stdout}</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n</table>\n<h3 id=\"Alias\">Alias</h3>\n<p>A custom name given to the process that can be used when selecting the <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<p>Example:</p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>program</td>\n<td>alias=example</td>\n</tr>\n</table>\n<h2 id=\"Active process\">Active process</h2>\n<p>The test library keeps record which of the started processes is currently active. By default it is latest process started with <a href=\"#Start Process\" class=\"name\">Start Process</a>, but <a href=\"#Switch Process\" class=\"name\">Switch Process</a> can be used to select a different one.</p>\n<p>The keywords that operate on started processes will use the active process by default, but it is possible to explicitly select a different process using the <span class=\"name\">handle</span> argument. The handle can be the identifier returned by <a href=\"#Start Process\" class=\"name\">Start Process</a> or an explicitly given <a href=\"#Alias\" class=\"name\">alias</a>.</p>\n<h2 id=\"Stopping processes\">Stopping processes</h2>\n<p>Started processed can be stopped using <a href=\"#Terminate Process\" class=\"name\">Terminate Process</a> and <a href=\"#Terminate All Processes\" class=\"name\">Terminate All Processes</a>. The former is used for stopping a selected process, and the latter to make sure all processes are stopped, for example, in a suite teardown.</p>\n<p>Both keywords use <span class=\"name\">subprocess</span> <a href=\"http://docs.python.org/2.7/library/subprocess.html#subprocess.Popen.terminate\";>terminate()</a> method by default, but can be configured to use <a href=\"http://docs.python.org/2.7/library/subprocess.html#subprocess.Popen.kill\";>kill()</a> instead.</p>\n<p>Because both <span class=\"name\">terminate()</span> and <span class=\"name\">kill()</span> methods were added to <span class=\"name\">subprocess</span> in Python 2.6, stopping processes does not work with Python or Jython 2.5. Unfortunately at least beta releases of Jython 2.7 <a href=\"http://bugs.jython.org/issue1898\";>do not seem to support it either</a>.</p>\n<p>Examples:</p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Terminate Process\" class=\"name\">Terminate Process</a></td>\n<td>kill=True</td>\n</tr>\n<tr>\n<td><a href=\"#Terminate All Processes\" class=\"name\">Terminate All Processes</a></td>\n<td></td>\n</tr>\n</table>\n<h2 id=\"Result object\">Result object</h2>\n<p><a href=\"#Run Process\" class=\"name\">Run Process</a> and <a href=\"#Wait For Process\" class=\"name\">Wait For Process</a> keywords return a result object that contains information about the process execution as its attibutes. What is available is documented in the table below.</p>\n<table border=\"1\">\n<tr>\n<td><b>Attribute</b></td>\n<td><b>Explanation</b></td>\n</tr>\n<tr>\n<td>rc</td>\n<td>Return code of the process as an integer.</td>\n</tr>\n<tr>\n<td>stdout</td>\n<td>Contents of the standard output stream.</td>\n</tr>\n<tr>\n<td>stderr</td>\n<td>Contents of the standard error stream.</td>\n</tr>\n<tr>\n<td>stdout_path</td>\n<td>Path where stdout was redirected or <span class=\"name\">None</span> if not redirected.</td>\n</tr>\n<tr>\n<td>stderr_path</td>\n<td>Path where stderr was redirected or <span class=\"name\">None</span> if not redirected.</td>\n</tr>\n</table>\n<p>Example:</p>\n<table border=\"1\">\n<tr>\n<td>${result} =</td>\n<td><a href=\"#Run Process\" class=\"name\">Run Process</a></td>\n<td>program</td>\n</tr>\n<tr>\n<td><span class=\"name\">Should Be Equal As Integers</span></td>\n<td>${result.rc}</td>\n<td></td>\n</tr>\n<tr>\n<td><span class=\"name\">Should Match</span></td>\n<td>${result.stdout}</td>\n<td>Some t?xt*</td>\n</tr>\n<tr>\n<td><span class=\"name\">Should Be Empty</span></td>\n<td>${result.stderr}</td>\n<td></td>\n</tr>\n<tr>\n<td>${stdout} =</td>\n<td><span class=\"name\">Get File</span></td>\n<td>${result.stdout_path}</td>\n</tr>\n<tr>\n<td><span class=\"name\">File Should Be Empty</span></td>\n<td>${result.stderr_path}</td>\n<td></td>\n</tr>\n<tr>\n<td><span class=\"name\">Should Be Equal</span></td>\n<td>${result.stdout}</td>\n<td>${stdout}</td>\n</tr>\n</table>\n<h2 id=\"Using with OperatingSystem library\">Using with OperatingSystem library</h2>\n<p>The OperatingSystem library also contains keywords for running processes. They are not as flexible as the keywords provided by this library, and thus not recommended to be used anymore. They may eventually even be deprecated.</p>\n<p>There is a name collision because both of these libraries have <a href=\"#Start Process\" class=\"name\">Start Process</a> and <a href=\"#Switch Process\" class=\"name\">Switch Process</a> keywords. This is handled so that if both libraries are imported, the keywords in the Process library are used by default. If there is a need to use the OperatingSystem variants, it is possible to use <span class=\"name\">OperatingSystem.Start Process</span> syntax or use the <span class=\"name\">BuiltIn</span> keyword <span class=\"name\">Set Library Search Order</span> to change the priority.</p>\n<p>Other keywords in the OperatingSystem library can be used freely with keywords in the Process library.</p>\n<h2 id=\"Example\">Example</h2>\n<pre>\n<b>***</b> Settings <b>***</b>\nLibrary Process\nSuite Teardown <a href=\"#Terminate All Processes\" class=\"name\">Terminate All Processes</a> kill=True\n\n<b>***</b> Test Cases <b>***</b>\nExample\n <a href=\"#Start Process\" class=\"name\">Start Process</a> program arg1 arg2 alias=First\n ${handle} = <a href=\"#Start Process\" class=\"name\">Start Process</a> command.sh arg | command2.sh shell=True cwd=/path\n ${result} = <a href=\"#Run Process\" class=\"name\">Run Process</a> ${CURDIR}/script.py\n <span class=\"name\">Should Not Contain</span> ${result.stdout} FAIL\n <a href=\"#Terminate Process\" class=\"name\">Terminate Process</a> ${handle}\n ${result} = <a href=\"#Wait For Process\" class=\"name\">Wait For Process</a> First\n <span class=\"name\">Should Be Equal As Integers</span> ${result.rc} 0\n</pre>","generated":"2013-06-11 15:39:52","inits":[],"keywords":[{"args":"handle=None","doc":"<p>Returns the process ID (pid) of the process.</p>\n<p>If <span class=\"name\">handle</span>is not given, uses the current <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<p>Returns the pid assigned by the operating system as an integer. Note that with Jython, at least with the 2.5 version, the returned pid seems to always be <span class=\"name\">None</span>.</p>\n<p>The pid is not the same as the identifier returned by <a href=\"#Start Process\" class=\"name\">Start Process</a> that is used internally by this library.</p>","name":"Get Process Id","shortdoc":"Returns the process ID (pid) of the process."},{"args":"handle=None","doc":"<p>Return the underlying <span class=\"name\">subprocess.Popen</span> object.</p>\n<p>If <span class=\"name\">handle</span>is not given, uses the current <a href=\"#Active process\" class=\"name\">active process</a>.</p>","name":"Get Process Object","shortdoc":"Return the underlying `subprocess.Popen` object."},{"args":"handle=None","doc":"<p>Checks is the process running or not.</p>\n<p>If <span class=\"name\">handle</span>is not given, uses the current <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<p>Returns <span class=\"name\">True</span> if the process is still running and <span class=\"name\">False</span> otherwise.</p>","name":"Is Process Running","shortdoc":"Checks is the process running or not."},{"args":"handle=None, error_message=Process is not running.","doc":"<p>Verifies that the process is running.</p>\n<p>If <span class=\"name\">handle</span>is not given, uses the current <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<p>Fails if the process has stopped.</p>","name":"Process Should Be Running","shortdoc":"Verifies that the process is running."},{"args":"handle=None, error_message=Process is running.","doc":"<p>Verifies that the process is not running.</p>\n<p>If <span class=\"name\">handle</span>is not given, uses the current <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<p>Fails if the process is still running.</p>","name":"Process Should Be Stopped","shortdoc":"Verifies that the process is not running."},{"args":"command, *arguments, **configuration","doc":"<p>Runs a process and waits for it to complete.</p>\n<p>See <a href=\"#Specifying command and arguments\" class=\"name\">Specifying command and arguments</a> and <a href=\"#Process configuration\" class=\"name\">Process configuration</a> for more information about the arguments.</p>\n<p>Returns a <a href=\"#Result object\" class=\"name\">result object</a> containing information about the execution.</p>\n<p>This command does not change the <a href=\"#Active process\" class=\"name\">active process</a>.</p>","name":"Run Process","shortdoc":"Runs a process and waits for it to complete."},{"args":"command, *arguments, **configuration","doc":"<p>Starts a new process on background.</p>\n<p>See <a href=\"#Specifying command and arguments\" class=\"name\">Specifying command and arguments</a> and <a href=\"#Process configuration\" class=\"name\">Process configuration</a> for more information about the arguments.</p>\n<p>Makes the started process new <a href=\"#Active process\" class=\"name\">active process</a>. Returns an identifier that can be used as a handle to active the started process if needed.</p>","name":"Start Process","shortdoc":"Starts a new process on background."},{"args":"handle","doc":"<p>Makes the specified process the current <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<p>The handle can be an identifier returned by <a href=\"#Start Process\" class=\"name\">Start Process</a> or the <a href=\"#Alias\" class=\"name\">alias</a> given to it explicitly.</p>\n<p>Example:</p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>prog1</td>\n<td>alias=process1</td>\n</tr>\n<tr>\n<td><a href=\"#Start Process\" class=\"name\">Start Process</a></td>\n<td>prog2</td>\n<td>alias=process2</td>\n</tr>\n<tr>\n<td># currently active process is process2</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><a href=\"#Switch Process\" class=\"name\">Switch Process</a></td>\n<td>process1</td>\n<td></td>\n</tr>\n<tr>\n<td># now active process is process 1</td>\n<td></td>\n<td></td>\n</tr>\n</table>","name":"Switch Process","shortdoc":"Makes the specified process the current `active process`."},{"args":"kill=True","doc":"<p>Terminates all still running processes started by this library.</p>\n<p>See <a href=\"#Stopping processes\" class=\"name\">Stopping processes</a> for more details.</p>","name":"Terminate All Processes","shortdoc":"Terminates all still running processes started by this library."},{"args":"handle=None, kill=False","doc":"<p>Terminates the process.</p>\n<p>If <span class=\"name\">handle</span>is not given, uses the current <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<p>See <span class=\"name\">Stopping process</span> for more details.</p>","name":"Terminate Process","shortdoc":"Terminates the process."},{"args":"handle=None","doc":"<p>Waits for the process to complete.</p>\n<p>If <span class=\"name\">handle</span>is not given, uses the current <a href=\"#Active process\" class=\"name\">active process</a>.</p>\n<p>Returns a <a href=\"#Result object\" class=\"name\">result object</a> containing information about the execution.</p>","name":"Wait For Process","shortdoc":"Waits for the process to complete."}],"name":"Process","named_args":true,"scope":"global","version":"trunk 20130531"};
 </script>
 <title></title>
 </head>

--

--- You received this message because you are subscribed to the Google Groups "robotframework-commit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to robotframework-commit+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to