blob: 5b199defc5df34fb1b8e11d42b89ad26d14ef36c [file] [log] [blame]
#!/usr/bin/env python
"""
Tests that the event system reports issues during decorator
handling as errors.
"""
# System-provided imports
import os
import unittest
# Local-provided imports
import event_collector
class TestCatchInvalidDecorator(unittest.TestCase):
TEST_DIR = os.path.join(
os.path.dirname(__file__),
os.path.pardir,
"resources",
"invalid_decorator")
def test_with_whole_file(self):
"""
Test that a non-existent decorator generates a test-event error
when running all tests in the file.
"""
# Determine the test case file we're using.
test_file = os.path.join(self.TEST_DIR, "TestInvalidDecorator.py")
# Collect all test events generated for this file.
error_results = _filter_error_results(
event_collector.collect_events_whole_file(test_file))
self.assertGreater(
len(error_results),
0,
"At least one job or test error result should have been returned")
def test_with_function_filter(self):
"""
Test that a non-existent decorator generates a test-event error
when running a filtered test.
"""
# Collect all test events generated during running of tests
# in a given directory using a test name filter. Internally,
# this runs through a different code path that needs to be
# set up to catch exceptions.
error_results = _filter_error_results(
event_collector.collect_events_for_directory_with_filter(
self.TEST_DIR,
"NonExistentDecoratorTestCase.test"))
self.assertGreater(
len(error_results),
0,
"At least one job or test error result should have been returned")
def _filter_error_results(events):
# Filter out job result events.
return [
event
for event in events
if event.get("event", None) in ["job_result", "test_result"] and
event.get("status", None) == "error"
]
if __name__ == "__main__":
unittest.main()