mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.3 KiB
104 lines
3.3 KiB
tdc - Adding plugins for tdc |
|
|
|
Author: Brenda J. Butler - [email protected] |
|
|
|
ADDING PLUGINS |
|
-------------- |
|
|
|
A new plugin should be written in python as a class that inherits from TdcPlugin. |
|
There are some examples in plugin-lib. |
|
|
|
The plugin can be used to add functionality to the test framework, |
|
such as: |
|
|
|
- adding commands to be run before and/or after the test suite |
|
- adding commands to be run before and/or after the test cases |
|
- adding commands to be run before and/or after the execute phase of the test cases |
|
- ability to alter the command to be run in any phase: |
|
pre (the pre-suite stage) |
|
prepare |
|
execute |
|
verify |
|
teardown |
|
post (the post-suite stage) |
|
- ability to add to the command line args, and use them at run time |
|
|
|
|
|
The functions in the class should follow the following interfaces: |
|
|
|
def __init__(self) |
|
def pre_suite(self, testcount, testidlist) # see "PRE_SUITE" below |
|
def post_suite(self, ordinal) # see "SKIPPING" below |
|
def pre_case(self, test_ordinal, testid) # see "PRE_CASE" below |
|
def post_case(self) |
|
def pre_execute(self) |
|
def post_execute(self) |
|
def adjust_command(self, stage, command) # see "ADJUST" below |
|
def add_args(self, parser) # see "ADD_ARGS" below |
|
def check_args(self, args, remaining) # see "CHECK_ARGS" below |
|
|
|
|
|
PRE_SUITE |
|
|
|
This method takes a testcount (number of tests to be run) and |
|
testidlist (array of test ids for tests that will be run). This is |
|
useful for various things, including when an exception occurs and the |
|
rest of the tests must be skipped. The info is stored in the object, |
|
and the post_suite method can refer to it when dumping the "skipped" |
|
TAP output. The tdc.py script will do that for the test suite as |
|
defined in the test case, but if the plugin is being used to run extra |
|
tests on each test (eg, check for memory leaks on associated |
|
co-processes) then that other tap output can be generated in the |
|
post-suite method using this info passed in to the pre_suite method. |
|
|
|
|
|
SKIPPING |
|
|
|
The post_suite method will receive the ordinal number of the last |
|
test to be attempted. It can use this info when outputting |
|
the TAP output for the extra test cases. |
|
|
|
|
|
PRE_CASE |
|
|
|
The pre_case method will receive the ordinal number of the test |
|
and the test id. Useful for outputing the extra test results. |
|
|
|
|
|
ADJUST |
|
|
|
The adjust_command method receives a string representing |
|
the execution stage and a string which is the actual command to be |
|
executed. The plugin can adjust the command, based on the stage of |
|
execution. |
|
|
|
The stages are represented by the following strings: |
|
|
|
'pre' |
|
'setup' |
|
'command' |
|
'verify' |
|
'teardown' |
|
'post' |
|
|
|
The adjust_command method must return the adjusted command so tdc |
|
can use it. |
|
|
|
|
|
ADD_ARGS |
|
|
|
The add_args method receives the argparser object and can add |
|
arguments to it. Care should be taken that the new arguments do not |
|
conflict with any from tdc.py or from other plugins that will be used |
|
concurrently. |
|
|
|
The add_args method should return the argparser object. |
|
|
|
|
|
CHECK_ARGS |
|
|
|
The check_args method is so that the plugin can do validation on |
|
the args, if needed. If there is a problem, and Exception should |
|
be raised, with a string that explains the problem. |
|
|
|
eg: raise Exception('plugin xxx, arg -y is wrong, fix it')
|
|
|