mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Create bot friendly sanity output. (#22381)
This commit is contained in:
parent
3c69cf6d7d
commit
8f463fcdd2
4 changed files with 53 additions and 9 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -72,6 +72,7 @@ packaging/release/ansible_release
|
||||||
/test/results/coverage/coverage*
|
/test/results/coverage/coverage*
|
||||||
/test/results/reports/coverage.xml
|
/test/results/reports/coverage.xml
|
||||||
/test/results/reports/coverage/
|
/test/results/reports/coverage/
|
||||||
|
/test/results/bot/*.json
|
||||||
/test/results/junit/*.xml
|
/test/results/junit/*.xml
|
||||||
/test/results/logs/*.log
|
/test/results/logs/*.log
|
||||||
/test/integration/inventory.remote
|
/test/integration/inventory.remote
|
||||||
|
|
0
test/results/bot/.keep
Normal file
0
test/results/bot/.keep
Normal file
|
@ -564,6 +564,7 @@ class SanityResult(object):
|
||||||
:type args: SanityConfig
|
:type args: SanityConfig
|
||||||
"""
|
"""
|
||||||
self.write_console()
|
self.write_console()
|
||||||
|
self.write_bot(args)
|
||||||
|
|
||||||
if args.lint:
|
if args.lint:
|
||||||
self.write_lint()
|
self.write_lint()
|
||||||
|
@ -582,12 +583,33 @@ class SanityResult(object):
|
||||||
"""Write lint results to stdout."""
|
"""Write lint results to stdout."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def write_bot(self, args):
|
||||||
|
"""
|
||||||
|
:type args: SanityConfig
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
def write_junit(self, args):
|
def write_junit(self, args):
|
||||||
"""
|
"""
|
||||||
:type args: SanityConfig
|
:type args: SanityConfig
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def create_path(self, directory, extension):
|
||||||
|
"""
|
||||||
|
:type directory: str
|
||||||
|
:type extension: str
|
||||||
|
:rtype: str
|
||||||
|
"""
|
||||||
|
path = 'test/results/%s/ansible-test-%s' % (directory, self.test)
|
||||||
|
|
||||||
|
if self.python_version:
|
||||||
|
path += '-python-%s' % self.python_version
|
||||||
|
|
||||||
|
path += extension
|
||||||
|
|
||||||
|
return path
|
||||||
|
|
||||||
def save_junit(self, args, test_case, properties=None):
|
def save_junit(self, args, test_case, properties=None):
|
||||||
"""
|
"""
|
||||||
:type args: SanityConfig
|
:type args: SanityConfig
|
||||||
|
@ -595,12 +617,7 @@ class SanityResult(object):
|
||||||
:type properties: dict[str, str] | None
|
:type properties: dict[str, str] | None
|
||||||
:rtype: str | None
|
:rtype: str | None
|
||||||
"""
|
"""
|
||||||
path = 'test/results/junit/ansible-test-%s' % self.test
|
path = self.create_path('junit', '.xml')
|
||||||
|
|
||||||
if self.python_version:
|
|
||||||
path += '-python-%s' % self.python_version
|
|
||||||
|
|
||||||
path += '.xml'
|
|
||||||
|
|
||||||
test_suites = [
|
test_suites = [
|
||||||
self.junit.TestSuite(
|
self.junit.TestSuite(
|
||||||
|
@ -704,9 +721,6 @@ class SanityFailure(SanityResult):
|
||||||
title = self.format_title()
|
title = self.format_title()
|
||||||
output = self.format_block()
|
output = self.format_block()
|
||||||
|
|
||||||
# Hack to remove ANSI color reset code from SubprocessError messages.
|
|
||||||
output = output.replace(display.clear, '')
|
|
||||||
|
|
||||||
test_case = self.junit.TestCase(classname='sanity', name=self.test)
|
test_case = self.junit.TestCase(classname='sanity', name=self.test)
|
||||||
|
|
||||||
# Include a leading newline to improve readability on Shippable "Tests" tab.
|
# Include a leading newline to improve readability on Shippable "Tests" tab.
|
||||||
|
@ -715,6 +729,31 @@ class SanityFailure(SanityResult):
|
||||||
|
|
||||||
self.save_junit(args, test_case)
|
self.save_junit(args, test_case)
|
||||||
|
|
||||||
|
def write_bot(self, args):
|
||||||
|
"""
|
||||||
|
:type args: SanityConfig
|
||||||
|
"""
|
||||||
|
message = self.format_title()
|
||||||
|
output = self.format_block()
|
||||||
|
|
||||||
|
bot_data = dict(
|
||||||
|
results=[
|
||||||
|
dict(
|
||||||
|
message=message,
|
||||||
|
output=output,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
path = self.create_path('bot', '.json')
|
||||||
|
|
||||||
|
if args.explain:
|
||||||
|
return
|
||||||
|
|
||||||
|
with open(path, 'wb') as bot_fd:
|
||||||
|
json.dump(bot_data, bot_fd, indent=4, sort_keys=True)
|
||||||
|
bot_fd.write('\n')
|
||||||
|
|
||||||
def format_command(self):
|
def format_command(self):
|
||||||
"""
|
"""
|
||||||
:rtype: str
|
:rtype: str
|
||||||
|
@ -752,6 +791,9 @@ class SanityFailure(SanityResult):
|
||||||
|
|
||||||
message = block.strip()
|
message = block.strip()
|
||||||
|
|
||||||
|
# Hack to remove ANSI color reset code from SubprocessError messages.
|
||||||
|
message = message.replace(display.clear, '')
|
||||||
|
|
||||||
return message
|
return message
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ function cleanup
|
||||||
|
|
||||||
rmdir shippable/testresults/
|
rmdir shippable/testresults/
|
||||||
cp -a test/results/junit/ shippable/testresults/
|
cp -a test/results/junit/ shippable/testresults/
|
||||||
|
cp -aT test/results/bot/ shippable/testresults/
|
||||||
}
|
}
|
||||||
|
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
Loading…
Reference in a new issue