tests/test.py
author David Anderson <dvander@alliedmods.net>
Sat Nov 17 23:13:39 2012 -0800 (2012-11-17)
changeset 211 6c1cc50c4808
parent 195 c1ba166f3fc4
child 214 e1a6deaa6ebe
permissions -rw-r--r--
Prep for ceval.
     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)) as f:
    27       lines = text.split('\n')
    28       i = 0
    29       for line in f:
    30         line = line.rstrip('\r\n')
    31         if line != lines[i]:
    32           message = 'Got "' + lines[i] + '", expected "' + line + '"'
    33           ok = False
    34           break
    35         i += 1
    36     return (ok, message)
    37 
    38   def check(self, out, err, code, timeout):
    39     if not out:
    40       out = ''
    41     if not err:
    42       err = ''
    43     if self.type == 'err':
    44       if code == 0:
    45         message = 'Expected failure, got success'
    46         ok = False
    47       else:
    48         (ok, message) = self.compare(err)
    49     elif self.type == 'out':
    50       if code != 0:
    51         message = 'Expected success, got failure (code: ' + str(code) + ')'
    52         ok = False
    53       else:
    54         (ok, message) = self.compare(out)
    55 
    56     if timeout:
    57       ok = false
    58       message = 'timeout'
    59 
    60     return Result(ok, out, err, code, timeout, message)