Advertisement
Guest User

Untitled

a guest
Apr 19th, 2014
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import os
  5.  
  6.  
  7. class SequenceItem(object):
  8. @classmethod
  9. def name(cls):
  10. return cls._name
  11.  
  12. @classmethod
  13. def number(cls):
  14. return cls._number
  15.  
  16.  
  17. class TestStep(SequenceItem):
  18. def __init__(self, verbose=None):
  19. self._verbose = verbose or os.environ.get('VERBOSE')
  20.  
  21. def __call__(self, app):
  22. ...
  23.  
  24.  
  25. class CompileStep(TestStep):
  26. _name = 'Compile'
  27. _number = 0
  28.  
  29. def __init__(self, compiler, src, **kwargs):
  30. super(CompileStep, self).__init__(kwargs.get('verbose'))
  31. self._compiler = compiler
  32. self._src = src
  33.  
  34. def __call__(self, app):
  35. ...
  36.  
  37.  
  38. class RunStep(TestStep):
  39. _name = 'Run'
  40. _number = 1
  41.  
  42. def __init__(self, **kwargs):
  43. super(RunStep, self).__init__(kwargs.get('verbose'))
  44.  
  45.  
  46. class CompareStep(TestStep):
  47. _name = 'Compare'
  48. _number = 2
  49.  
  50. def __call__(self, app):
  51. ...
  52.  
  53.  
  54.  
  55. class StepResult(SequenceItem):
  56. def __init__(self, step):
  57. self._step = step
  58. self._error = 'Unknown error'
  59.  
  60. def step_name(self):
  61. return self._step.name()
  62.  
  63. def step_number(self):
  64. return self._step.number()
  65.  
  66. def error(self):
  67. return self._error
  68.  
  69. def __call__(self):
  70. return None
  71.  
  72.  
  73. class SuccessStep(StepResult):
  74. _name = 'Success'
  75. _number = 0
  76.  
  77. def __call__(self):
  78. return True
  79.  
  80.  
  81. class FailStep(StepResult):
  82. _name = 'Fail'
  83. _number = 1
  84.  
  85. def __call__(self):
  86. return False
  87.  
  88.  
  89. class SequenceMetaClass(type):
  90. def __new__(mcs, name, bases, attr_dict):
  91. for item in attr_dict['items']:
  92. attr_dict[item.name()] = item.number()
  93.  
  94. return type.__new__(mcs, name, bases, attr_dict)
  95.  
  96.  
  97. class TestResult(object):
  98. def __init__(self, test_name, result, reason=None):
  99. self.test_name = test_name
  100. self.result = result
  101. self.reason = reason
  102.  
  103. def __str__(self):
  104. if self.reason:
  105. return "Test %s [%s]: %s" % (self.test_name, self.result, self.reason)
  106. else:
  107. return "Test %s [%s]" % (self.test_name, self.result)
  108.  
  109.  
  110. class TestSteps():
  111. items = (CompileStep, RunStep, CompareStep)
  112. __metaclass__ = SequenceMetaClass
  113.  
  114.  
  115. class TestTypes():
  116. items = (SuccessStep, FailStep)
  117. __metaclass__ = SequenceMetaClass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement