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