diff options
Diffstat (limited to 'src/integration-tests/gnunet_pyexpect.py.in')
-rw-r--r-- | src/integration-tests/gnunet_pyexpect.py.in | 115 |
1 files changed, 63 insertions, 52 deletions
diff --git a/src/integration-tests/gnunet_pyexpect.py.in b/src/integration-tests/gnunet_pyexpect.py.in index d757634a5..aad84e4f7 100644 --- a/src/integration-tests/gnunet_pyexpect.py.in +++ b/src/integration-tests/gnunet_pyexpect.py.in @@ -11,7 +11,7 @@ # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # @@ -26,58 +26,69 @@ import sys import shutil import time -class pexpect (object): - def __init__ (self): - super (pexpect, self).__init__ () - def spawn (self, stdin, arglist, *pargs, **kwargs): - env = kwargs.pop ('env', None) - if env is None: - env = os.environ.copy () - # This messes up some testcases, disable log redirection - env.pop ('GNUNET_FORCE_LOGFILE', None) - self.proc = subprocess.Popen (arglist, *pargs, env=env, **kwargs) - if self.proc is None: - print ("Failed to spawn a process {0}".format (arglist)) - sys.exit (1) - if stdin is not None: - self.stdo, self.stde = self.proc.communicate (stdin) - else: - self.stdo, self.stde = self.proc.communicate () - return self.proc +class pexpect(object): + def __init__(self): + super(pexpect, self).__init__() + + def spawn(self, stdin, arglist, *pargs, **kwargs): + env = kwargs.pop('env', None) + if env is None: + env = os.environ.copy() + # This messes up some testcases, disable log redirection + env.pop('GNUNET_FORCE_LOGFILE', None) + self.proc = subprocess.Popen(arglist, *pargs, env=env, **kwargs) + if self.proc is None: + print("Failed to spawn a process {0}".format(arglist)) + sys.exit(1) + if stdin is not None: + self.stdo, self.stde = self.proc.communicate(stdin) + else: + self.stdo, self.stde = self.proc.communicate() + return self.proc - def expect (self, s, r, flags=0): - stream = self.stdo if s == 'stdout' else self.stde - if isinstance (r, str): - if r == "EOF": - if len (stream) == 0: - return True + def expect(self, s, r, flags=0): + stream = self.stdo if s == 'stdout' else self.stde + if isinstance(r, str): + if r == "EOF": + if len(stream) == 0: + return True + else: + print( + "Failed to find `{1}' in {0}, which is `{2}' ({3})". + format(s, r, stream, len(stream)) + ) + sys.exit(2) + raise ValueError( + "Argument `r' should be an instance of re.RegexObject or a special string, but is `{0}'" + .format(r) + ) + m = r.search(stream, flags) + if not m: + print( + "Failed to find `{1}' in {0}, which is is `{2}'".format( + s, r.pattern, stream + ) + ) + sys.exit(2) + stream = stream[m.end():] + if s == 'stdout': + self.stdo = stream else: - print ("Failed to find `{1}' in {0}, which is `{2}' ({3})".format (s, r, stream, len (stream))) - sys.exit (2) - raise ValueError ("Argument `r' should be an instance of re.RegexObject or a special string, but is `{0}'".format (r)) - m = r.search (stream, flags) - if not m: - print ("Failed to find `{1}' in {0}, which is is `{2}'".format (s, r.pattern, stream)) - sys.exit (2) - stream = stream[m.end ():] - if s == 'stdout': - self.stdo = stream - else: - self.stde = stream - return m + self.stde = stream + return m - def read (self, s, size=-1): - stream = self.stdo if s == 'stdout' else self.stde - result = "" - if size < 0: - result = stream - new_stream = "" - else: - result = stream[0:size] - new_stream = stream[size:] - if s == 'stdout': - self.stdo = new_stream - else: - self.stde = new_stream - return result + def read(self, s, size=-1): + stream = self.stdo if s == 'stdout' else self.stde + result = "" + if size < 0: + result = stream + new_stream = "" + else: + result = stream[0:size] + new_stream = stream[size:] + if s == 'stdout': + self.stdo = new_stream + else: + self.stde = new_stream + return result |