Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import os
- class SequenceItem(object):
- @classmethod
- def name(cls):
- return cls._name
- @classmethod
- def number(cls):
- return cls._number
- class TestStep(SequenceItem):
- def __init__(self, verbose=None):
- self._verbose = verbose or os.environ.get('VERBOSE')
- def __call__(self, app):
- ...
- class CompileStep(TestStep):
- _name = 'Compile'
- _number = 0
- def __init__(self, compiler, src, **kwargs):
- super(CompileStep, self).__init__(kwargs.get('verbose'))
- self._compiler = compiler
- self._src = src
- def __call__(self, app):
- ...
- class RunStep(TestStep):
- _name = 'Run'
- _number = 1
- def __init__(self, **kwargs):
- super(RunStep, self).__init__(kwargs.get('verbose'))
- class CompareStep(TestStep):
- _name = 'Compare'
- _number = 2
- def __call__(self, app):
- ...
- class StepResult(SequenceItem):
- def __init__(self, step):
- self._step = step
- self._error = 'Unknown error'
- def step_name(self):
- return self._step.name()
- def step_number(self):
- return self._step.number()
- def error(self):
- return self._error
- def __call__(self):
- return None
- class SuccessStep(StepResult):
- _name = 'Success'
- _number = 0
- def __call__(self):
- return True
- class FailStep(StepResult):
- _name = 'Fail'
- _number = 1
- def __call__(self):
- return False
- class SequenceMetaClass(type):
- def __new__(mcs, name, bases, attr_dict):
- for item in attr_dict['items']:
- attr_dict[item.name()] = item.number()
- return type.__new__(mcs, name, bases, attr_dict)
- class TestResult(object):
- def __init__(self, test_name, result, reason=None):
- self.test_name = test_name
- self.result = result
- self.reason = reason
- def __str__(self):
- if self.reason:
- return "Test %s [%s]: %s" % (self.test_name, self.result, self.reason)
- else:
- return "Test %s [%s]" % (self.test_name, self.result)
- class TestSteps():
- items = (CompileStep, RunStep, CompareStep)
- __metaclass__ = SequenceMetaClass
- class TestTypes():
- items = (SuccessStep, FailStep)
- __metaclass__ = SequenceMetaClass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement