tests/test.py
author David Anderson <dvander@alliedmods.net>
Sat Dec 22 18:22:14 2012 -0800 (2012-12-22)
changeset 230 fb3cd08bc7fb
parent 229 ce072f38628c
child 232 2b8512340180
permissions -rw-r--r--
Re-add LIFO stack optimizations.
     1 # vim: set ts=2 sw=4 tw=99 ft=python et:
     2 import os
     3 import os.path
     4 
     5 class Result:
     6   def __init__(self, ok, out, err, code, timeout, message):
     7     self.ok = ok
     8     self.out = out
     9     self.err = err
    10     self.code = code
    11     self.timeout = timeout
    12     self.message = message
    13 
    14 class Test:
    15   def __init__(self, path, name, type):
    16     self.path = path
    17     self.name = name
    18     self.type = type
    19 
    20   def cmd(self):
    21     return os.path.join(self.path, self.name + '.sp')
    22 
    23   def compare(self, text):
    24     ok = True
    25     message = None
    26     with open(os.path.join(self.path, self.name + '.' + self.type), 'rt') as f:
    27       text = str.replace(text, '\r', '')
    28       lines = text.split('\n')
    29       i = 0
    30       for line in f:
    31         line = line.rstrip('\r\n')
    32         if line != lines[i]:
    33           message = 'Got "' + lines[i] + '", expected "' + line + '"'
    34           ok = False
    35           break
    36         i += 1
    37     return (ok, message)
    38 
    39   def check(self, out, err, code, timeout):
    40     if not out:
    41       out = ''
    42     if not err:
    43       err = ''
    44     if self.type == 'err':
    45       if code == 0:
    46         message = 'Expected failure, got success'
    47         ok = False
    48       else:
    49         (ok, message) = self.compare(err)
    50     elif self.type == 'out':
    51       if code != 0:
    52         message = 'Expected success, got failure (code: ' + str(code) + ')'
    53         ok = False
    54       else:
    55         (ok, message) = self.compare(out)
    56 
    57     if timeout:
    58       ok = False
    59       message = 'timeout'
    60 
    61     return Result(ok, out, err, code, timeout, message)