Skip to content

Commit

Permalink
WIP: Added tests for internal errors
Browse files Browse the repository at this point in the history
  • Loading branch information
SegFaulti4 committed Jan 16, 2024
1 parent 4adaa11 commit 8c4154e
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 0 deletions.
1 change: 1 addition & 0 deletions .github/workflows/cotea_testing_workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,4 @@ jobs:
cd ./src
python cotea_ok_case.py
python cotea_ansible_error_case.py
python cotea_internal_error_case.py
66 changes: 66 additions & 0 deletions src/cotea_internal_error_case.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import unittest

from cotea.runner import runner
from cotea.arguments_maker import argument_maker


def run_ansible_error_case(pb_path, inv_path):
arg_maker = argument_maker()
arg_maker.add_arg("-i", inv_path)
r = runner(pb_path, arg_maker, show_progress_bar=True)

while r.has_next_play():
while r.has_next_task():
r.run_next_task()
r.finish_ansible()

if r.was_error():
return True
return False


class TestCotea(unittest.TestCase):

def test_incorrect_playbook_path_case(self):
pb_path = "cotea_run_files/#%|&"
inv_path = "cotea_run_files/inv"

arg_maker = argument_maker()
arg_maker.add_arg("-i", inv_path)
r = runner(pb_path, arg_maker, show_progress_bar=True)

try:
while r.has_next_play():
while r.has_next_task():
r.run_next_task()
r.finish_ansible()
except Exception as e:
self.assertTrue(e.message.startswith(f"the playbook: {pb_path} could not be found"))
else:
self.assertFalse(True, msg="Ansible is supposed to fail due to syntax error "
"and its' exception should be passed to main thread")

def test_incorrect_syntax_case(self):
pb_path = "cotea_run_files/incorrect.yaml"
inv_path = "cotea_run_files/inv"

arg_maker = argument_maker()
arg_maker.add_arg("-i", inv_path)
r = runner(pb_path, arg_maker, show_progress_bar=True)

try:
while r.has_next_play():
while r.has_next_task():
r.run_next_task()
r.finish_ansible()
except Exception as e:
# NOTE: e should be AnsibleParserError, but "isinstance" returns False for some reason
self.assertTrue(e.message.startswith("couldn't resolve module/action"),
msg="Unexpected exception")
else:
self.assertFalse(True, msg="Ansible is supposed to fail due to syntax error "
"and its' exception should be passed to main thread")


if __name__ == '__main__':
unittest.main()
6 changes: 6 additions & 0 deletions src/cotea_run_files/incorrect.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
- name: Play1
hosts: all
tasks:
- name: Syntactically incorrect command
battle_star_engine:

0 comments on commit 8c4154e

Please sign in to comment.