@ -45,6 +45,12 @@ DOCUMENTATION = '''
description : Consider failed tasks as a junit test failure even if ignore_on_error is set
env :
- name : JUNIT_FAIL_ON_IGNORE
include_setup_tasks_in_report :
name : JUnit include setup tasks in report
default : True
description : Should the setup tasks be included in the final report
env :
- name : JUNIT_INCLUDE_SETUP_TASKS_IN_REPORT
requirements :
- whitelist in configuration
- junit_xml ( python lib )
@ -96,6 +102,8 @@ class CallbackModule(CallbackBase):
Default : False
JUNIT_FAIL_ON_IGNORE ( optional ) : Consider failed tasks as a junit test failure even if ignore_on_error is set
Default : False
JUNIT_INCLUDE_SETUP_TASKS_IN_REPORT ( optional ) : Should the setup tasks be included in the final report
Default : True
Requires :
junit_xml
@ -114,6 +122,7 @@ class CallbackModule(CallbackBase):
self . _task_class = os . getenv ( ' JUNIT_TASK_CLASS ' , ' False ' ) . lower ( )
self . _fail_on_change = os . getenv ( ' JUNIT_FAIL_ON_CHANGE ' , ' False ' ) . lower ( )
self . _fail_on_ignore = os . getenv ( ' JUNIT_FAIL_ON_IGNORE ' , ' False ' ) . lower ( )
self . _include_setup_tasks_in_report = os . getenv ( ' JUNIT_INCLUDE_SETUP_TASKS_IN_REPORT ' , ' True ' ) . lower ( )
self . _playbook_path = None
self . _playbook_name = None
self . _play_name = None
@ -147,13 +156,14 @@ class CallbackModule(CallbackBase):
play = self . _play_name
name = task . get_name ( ) . strip ( )
path = task . get_path ( )
action = task . action
if not task . no_log :
args = ' , ' . join ( ( ' %s = %s ' % a for a in task . args . items ( ) ) )
if args :
name + = ' ' + args
self . _task_data [ uuid ] = TaskData ( uuid , name , path , play )
self . _task_data [ uuid ] = TaskData ( uuid , name , path , play , action )
def _finish_task ( self , status , result ) :
""" record the results of a task for a single host """
@ -236,6 +246,9 @@ class CallbackModule(CallbackBase):
test_cases = [ ]
for task_uuid , task_data in self . _task_data . items ( ) :
if task_data . action == ' setup ' and self . _include_setup_tasks_in_report == ' false ' :
continue
for host_uuid , host_data in task_data . host_data . items ( ) :
test_cases . append ( self . _build_test_case ( task_data , host_data ) )
@ -290,7 +303,7 @@ class TaskData:
Data about an individual task .
"""
def __init__ ( self , uuid , name , path , play ):
def __init__ ( self , uuid , name , path , play , action ):
self . uuid = uuid
self . name = name
self . path = path
@ -298,6 +311,7 @@ class TaskData:
self . start = None
self . host_data = OrderedDict ( )
self . start = time . time ( )
self . action = action
def add_host ( self , host ) :
if host . uuid in self . host_data :