tests/test.py
author David Anderson <dvander@alliedmods.net>
Thu Dec 27 20:44:50 2012 -0800 (2012-12-27)
changeset 245 9371f058625a
parent 232 2b8512340180
child 263 ba85a47ee414
permissions -rw-r--r--
Support admin.inc again.
     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 "Displaying compilation errors for" in lines[i]:
    33           i += 1
    34           continue
    35         if line != lines[i]:
    36           message = 'Got "' + lines[i] + '", expected "' + line + '"'
    37           ok = False
    38           break
    39         i += 1
    40     return (ok, message)
    41 
    42   def check(self, out, err, code, timeout):
    43     if not out:
    44       out = ''
    45     if not err:
    46       err = ''
    47     if self.type == 'err':
    48       if code == 0:
    49         message = 'Expected failure, got success'
    50         ok = False
    51       else:
    52         (ok, message) = self.compare(err)
    53     elif self.type == 'out':
    54       if code != 0:
    55         message = 'Expected success, got failure (code: ' + str(code) + ')'
    56         ok = False
    57       else:
    58         (ok, message) = self.compare(out)
    59 
    60     if timeout:
    61       ok = False
    62       message = 'timeout'
    63 
    64     return Result(ok, out, err, code, timeout, message)