Adding a test for GalaxyCLI. Tests exit_without_ignore method.

This commit is contained in:
s-hertel 2016-07-07 14:25:08 -04:00 committed by Ryan S. Brown
parent 372018dfce
commit aae5e50299

View file

@ -19,17 +19,19 @@
from __future__ import (absolute_import, division, print_function) from __future__ import (absolute_import, division, print_function)
__metaclass__ = type __metaclass__ = type
from ansible.compat.six import PY3
from ansible.compat.tests import unittest
from nose.plugins.skip import SkipTest
import ansible
import os import os
import shutil import shutil
import tarfile import tarfile
import tempfile import tempfile
from mock import patch from mock import patch
from nose.plugins.skip import SkipTest
from ansible.compat.six import PY3
from ansible.compat.tests import unittest
import ansible
from ansible.errors import AnsibleError
if PY3: if PY3:
raise SkipTest('galaxy is not ported to be py3 compatible yet') raise SkipTest('galaxy is not ported to be py3 compatible yet')
@ -41,10 +43,10 @@ class TestGalaxy(unittest.TestCase):
def setUpClass(cls): def setUpClass(cls):
'''creating prerequisites for installing a role; setUpClass occurs ONCE whereas setUp occurs with every method tested.''' '''creating prerequisites for installing a role; setUpClass occurs ONCE whereas setUp occurs with every method tested.'''
# class data for easy viewing: role_dir, role_tar, role_name, role_req, role_path # class data for easy viewing: role_dir, role_tar, role_name, role_req, role_path
if os.path.exists("./delete_me"): if os.path.exists("./delete_me"):
shutil.rmtree("./delete_me") shutil.rmtree("./delete_me")
# creating framework for a role # creating framework for a role
gc = GalaxyCLI(args=["init"]) gc = GalaxyCLI(args=["init"])
with patch('sys.argv', ["-c", "--offline", "delete_me"]): with patch('sys.argv', ["-c", "--offline", "delete_me"]):
@ -121,7 +123,7 @@ class TestGalaxy(unittest.TestCase):
with patch('sys.argv', ["--offline", "-p", self.role_path, "-r", self.role_req]): with patch('sys.argv', ["--offline", "-p", self.role_path, "-r", self.role_req]):
galaxy_parser = gc.parse() galaxy_parser = gc.parse()
gc.run() gc.run()
# checking that installation worked # checking that installation worked
role_file = os.path.join(self.role_path, self.role_name) role_file = os.path.join(self.role_path, self.role_name)
self.assertTrue(os.path.exists(role_file)) self.assertTrue(os.path.exists(role_file))
@ -137,3 +139,23 @@ class TestGalaxy(unittest.TestCase):
# testing role was removed # testing role was removed
self.assertTrue(completed_task == 0) self.assertTrue(completed_task == 0)
self.assertTrue(not os.path.exists(role_file)) self.assertTrue(not os.path.exists(role_file))
def test_exit_without_ignore(self):
''' tests that GalaxyCLI exits with the error specified unless the --ignore-errors flag is used '''
gc = GalaxyCLI(args=["install"])
# testing without --ignore-errors flag
with patch('sys.argv', ["-c", "fake_role_name"]):
galaxy_parser = gc.parse()
with patch.object(ansible.utils.display.Display, "display", return_value=None) as mocked_display:
# testing that error expected is raised
self.assertRaises(AnsibleError, gc.run)
self.assertTrue(mocked_display.called_once_with("- downloading role 'fake_role_name', owned by "))
# testing with --ignore-errors flag
with patch('sys.argv', ["-c", "fake_role_name", "--ignore-errors"]):
galalxy_parser = gc.parse()
with patch.object(ansible.utils.display.Display, "display", return_value=None) as mocked_display:
# testing that error expected is not raised with --ignore-errors flag in use
gc.run()
self.assertTrue(mocked_display.called_once_with("- downloading role 'fake_role_name', owned by "))