ifw  0.0.1-dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Files | Classes | Functions
Extensible Test Runner

Coordinates running of integration test runners. More...

Files

file  command.py
 
file  context.py
 
file  exception.py
 
file  info.py
 
file  main.py
 
file  plugin.py
 
file  jinja2.py
 
file  nomad.py
 
file  nose.py
 
file  resources.py
 
file  robot.py
 
file  result.py
 
file  runner.py
 
file  manager.py
 
file  fsisolation.py
 
file  logcapture.py
 
file  subprocess.py
 
file  tests.py
 
file  xunit.py
 
file  command.py
 
file  context.py
 
file  exception.py
 
file  info.py
 
file  main.py
 
file  plugin.py
 
file  jinja2.py
 
file  nomad.py
 
file  nose.py
 
file  resources.py
 
file  robot.py
 
file  result.py
 
file  runner.py
 
file  manager.py
 
file  fsisolation.py
 
file  logcapture.py
 
file  subprocess.py
 
file  tests.py
 
file  xunit.py
 
file  etr.py
 

Classes

class  etr.context.Command
 Application commands enumeration. More...
 
class  etr.context.Step
 Main execution steps for the test command. More...
 
class  etr.exception.UserError
 A user error should never result in a back trace but a user friendly message about the error. More...
 
class  etr.exception.DeferredException
 Exception indicating that one or more exceptions was caught but execution should not stop so the error was deferred and this exception was thrown after the execution. More...
 
class  etr.exception.AbortException
 Exception indicating that test execution should be aborted. More...
 
class  etr.info.InfoRegister
 Class holding general information about a test session. More...
 
class  etr.plugin.PluginMgr
 Plugin instance manager. More...
 
class  etr.plugin.PluginRegister
 Plugin register containing types but not instances of plugins. More...
 
class  etr.plugin.Plugin
 Plugin base class to simplify implementation. More...
 
class  etr.plugins.jinja2.Renderer
 Jinja renderer. More...
 
class  etr.plugins.resources.Storage
 Provides the storage abstraction for Resources. More...
 
class  etr.plugins.resources.RemoteService
 Adapter for the remote resource manager service. More...
 
class  etr.plugins.resources.LocalResources
 Acquire/release local resources, as specified by config files. More...
 
class  etr.plugins.resources.ResourceManager
 Resource Manager that acquires and releases resources as well as keeping the record of acquired/released resources. More...
 
class  etr.result.TextTestResult
 Outputs test results as text on a stream. More...
 
class  etr.runner.Runner
 ESO Test Facility Runner. More...
 
class  etr.storage.manager.CommitContext
 Context manager that does automatic commits if no errors occur. More...
 
class  etr.storage.manager.StorageManager
 Provides the storage abstraction for etr. More...
 
class  etr.tools.logcapture.CaptureHandler
 Captures logs into a line-buffer (list). More...
 
class  etr.tools.logcapture.LogCapture
 Captures log messages into a memory buffer and allows on-demand writing captured messages to stderr. More...
 
class  etr.tools.subprocess.SignalContextManager
 Provides a context manager to be able to captue signals and forward them to a subprocess within a context manager scope. More...
 
class  etr.tools.xunit.TestCaseResult
 Result of a test case. More...
 

Functions

def etr.main.main
 etr entrypoint More...
 
def etr.plugin.plugin
 Class decorator that registers the class as a plugin. More...
 
def etr.result.pretty_time_delta
 Prints elapsed time in a pretty format. More...
 
def etr.runner.parse_steps
 Parse value and return a list with steps parsed with the following rules: More...
 
def etr.runner.parse_command
 Parses the command enum strings and returns a Command enum. More...
 
def etr.tools.subprocess.cmd_and_log
 Runs command and logs to line_handler. More...
 
def etr.tools.tests.make_tests
 Helper that creates the list of tests execute. More...
 
def etr.tools.xunit.parse
 Parse xunit file, or file-like object. More...
 

Detailed Description

Coordinates running of integration test runners.

Function Documentation

def etr.tools.subprocess.cmd_and_log (   command,
  line_handler = None,
  script_file = None,
  kwargs 
)

Runs command and logs to line_handler.

It can also generate a script file that re-creates the execution environment which can be useful for debugging outside etr.

def etr.main.main ( )

etr entrypoint

def etr.tools.tests.make_tests (   tests)

Helper that creates the list of tests execute.

Additionally, it implements standard features that should be valid across any test runner plugin. These are:

  • Test randomization
  • Test selection/filtering

Returns an ordered list (that may be shuffled) of tuples where each tuple contains the original sequence and the test filename, e.g.:

[(12, 'src/some_test.robot'), (1, 'src/other_test.robot'), ...]

def etr.tools.xunit.parse (   xunit_file)

Parse xunit file, or file-like object.

def etr.runner.parse_command (   scmd)

Parses the command enum strings and returns a Command enum.

parse_command('test').name

'TEST'

parse_command('clean').name

'CLEAN'

parse_command('info').name

'INFO'

def etr.runner.parse_steps (   val)

Parse value and return a list with steps parsed with the following rules:

Single step e.g. 'setup':

[s.name for s in parse_steps('setup')]

['SETUP']

Starting at a step and continuing to the end: 'start:'

[s.name for s in parse_steps('setup:')]

['SETUP', 'RUN', 'TEARDOWN']

Starting from the beginning and run to specified step ':end':

[s.name for s in parse_steps(':run')]

['SETUP', 'RUN']

Starting from specified and ending at a specified step:

[s.name for s in parse_steps('run:teardown')]

['RUN', 'TEARDOWN']

Executing steps in reverse order is illegal:

parse_steps('teardown:run') # doctest: +ELLIPSIS

Traceback (most recent call last): ... etr Can only run the step sequence in order...

def etr.plugin.plugin (   name)

Class decorator that registers the class as a plugin.

Although not it's not necessary that plugins inherit from Plugin, they need to implement the same methods.

@plugin('myplugin')
class MyPlugin(Plugin):

    @classmethod
    def add_options(cls, parser):
        '''Optional

        Used to add custom command line options.

        @note: Must be a static method.
        '''
        pass

    def setup(self, ctx:SetupContext):
        '''Optional

        Called during setup step
        '''
        pass

    def run(self, ctx:RunContext):
        '''Optional

        Called during run
        '''
        pass

    def teardown(self, ctx:TeardownContext):
        '''Optional

        Called during teardown
        '''
        pass
def etr.result.pretty_time_delta (   seconds)

Prints elapsed time in a pretty format.

pretty_time_delta(7.1)

'7.1s'

pretty_time_delta(30*60 + 1)

'30m 1s'

pretty_time_delta(3601)

'1h 0m 1s'