Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[custom_junit] Add config options via ini file and env var #160

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 32 additions & 3 deletions callback_plugins/custom_junit.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,32 @@
import re
from ansible.utils._junit_xml import TestCase, TestError, TestFailure, TestSuite, TestSuites

DOCUMENTATION = '''
callback: custom_junit
type: notification
short_description: TODO
description:
TODO
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

custom_junit generates an XML file that polarion can read.
Only the tasks marked with $test_case_prefix are reported.
The first line of the task name (excluding the prefix) is converted to snake_case, and this becomes the testcase name in the results file.

options:
test_case_prefix:
description: todo
ini:
- section: custom_junit
key: test_case_prefix
env:
- name: JUNIT_TEST_CASE_PREFIX
default: "TEST"
type: string
classname:
description: The classname for the tests.
ini:
- section: custom_junit
key: classname
env:
- name: CUSTOM_JUNIT_CLASSNAME
default: "openstack-observability"
type: string
'''

class CallbackModule(JunitCallbackModule):
"""
Expand All @@ -14,12 +40,15 @@ class CallbackModule(JunitCallbackModule):
CALLBACK_NAME = 'custom_junit'

def __init__(self):
self._defs = None
super(CallbackModule, self).__init__()
self.set_options()

# Custom environment variable handling
# Update this to parse these values from the config file, as well as the env.
self._output_dir = os.path.expanduser("~/.ansible.log")
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should also be configurable, so we could point it at the expect logs dir in zuul jobs.

self._test_case_prefix = os.getenv('JUNIT_TEST_CASE_PREFIX', 'TEST')
self._test_case_prefix = self.get_option("test_case_prefix")
self._classname = self.get_option("classname")

self._fail_on_ignore = 'true' # this is needed because we use "ignore_errors" on the playbooks so that all the tests are run
self._include_setup_tasks_in_report = os.getenv('JUNIT_INCLUDE_SETUP_TASKS_IN_REPORT', 'False').lower()
self._hide_task_arguments = os.getenv('JUNIT_HIDE_TASK_ARGUMENTS', 'True').lower()
Expand Down Expand Up @@ -104,5 +133,5 @@ def _build_test_case(self, task_data, host_data):
# system_err elements that show STDOUT and STDERR
tc.system_out = None
tc.system_err = None
tc.classname = "openstack-observability"
tc.classname = self._classname
return tc
Loading