Superfluous imports are now mocked

Unless explicitly mocked, all dependencies of tested
modules are imported by default.

This can cause exceptions or even CI issues,
especially if the required module is listed present
in the test-requirements.txt file, but not in the spec file.

Furthermore, unnecessary imports in tests were also removed.

Signed-off-by: Jiri Podivin <jpodivin@redhat.com>
Change-Id: Ic3926c1fd38a670ed37eeba1aa4df64347a34a9b
This commit is contained in:
Jiri Podivin 2021-04-12 11:50:17 +02:00
parent 2d1e6ce819
commit b41537fa69
13 changed files with 114 additions and 36 deletions

View File

@ -19,16 +19,18 @@ test_fail_if_no_hosts
Tests for `fail_if_no_hosts` callback plugin.
"""
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
import validations_common.library.reportentry as validation
from validations_common.callback_plugins import fail_if_no_hosts
from validations_common.tests import base
from ansible.plugins.callback import CallbackBase
from ansible.executor.stats import AggregateStats
from unittest import mock
class TestFailIfNoHosts(base.TestCase):
@ -64,7 +66,7 @@ class TestFailIfNoHosts(base.TestCase):
the callback calls sys.exit.
"""
callback = fail_if_no_hosts.CallbackModule()
stats = AggregateStats()
stats = mock.MagicMock()
callback.v2_playbook_on_stats(stats)
mock_exit.assert_called_once_with(10)
@ -82,7 +84,7 @@ class TestFailIfNoHosts(base.TestCase):
"""
callback = fail_if_no_hosts.CallbackModule()
stats = AggregateStats()
stats = mock.MagicMock()
stats.processed = {
'system_foo': 'foo',

View File

@ -19,13 +19,16 @@ test_http_json
Tests for `http_json` callback plugin.
"""
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
import validations_common.library.reportentry as validation
from validations_common.callback_plugins import http_json
from validations_common.tests import base
from unittest import mock
class TestHttpJson(base.TestCase):

View File

@ -19,12 +19,15 @@ test_validation_json
Tests for `validation_json` callback plugin.
"""
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
import validations_common.library.reportentry as validation
from validations_common.tests import base
from unittest import mock
class TestValidationJson(base.TestCase):

View File

@ -19,17 +19,18 @@ test_validation_output
Tests for `validation_output` callback plugin.
"""
try:
from unittest import mock
except ImportError:
import mock
from unittest import mock
from validations_common.tests import base
from validations_common.tests import fakes
from ansible.executor.stats import AggregateStats
from ansible.parsing.ajson import AnsibleJSONEncoder
from ansible.playbook import Playbook
from ansible.plugins.callback import CallbackBase
import validations_common.library.reportentry as validation
from validations_common.callback_plugins import validation_output
from validations_common.tests import base
class MockStats(mock.MagicMock):

View File

@ -21,13 +21,19 @@ Tests for `validation_stdout` callback plugin.
"""
import os
import re
from unittest import mock
from ansible.plugins.callback import CallbackBase
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
import validations_common.library.reportentry as validation
from validations_common.callback_plugins import validation_stdout
from validations_common.tests import base
from ansible.plugins.callback import CallbackBase
def is_iso_time(time_string):

View File

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import sys
try:
from unittest import mock
except ImportError:
import mock
#This section mocks unnecessary module imports.
sys.modules['ansible.parsing.ajson'] = mock.MagicMock()
sys.modules['prettytable'] = mock.MagicMock()

View File

@ -12,9 +12,15 @@
# License for the specific language governing permissions and limitations
# under the License.
from unittest import mock
from validations_common.library import advanced_format
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
from validations_common.library import advanced_format
class TestAdvancedFormat(base.TestCase):

View File

@ -12,13 +12,17 @@
# License for the specific language governing permissions and limitations
# under the License.
import subprocess
from unittest import mock
from validations_common.library import check_package_update as cppkg
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
import subprocess
from validations_common.library import check_package_update as cppkg
PKG_INSTALLED = "foo-package|6.1.5|1|x86_64"
PKG_INVALID = "foo-package|6.1.5|x86_64"

View File

@ -12,9 +12,15 @@
# License for the specific language governing permissions and limitations
# under the License.
from unittest import mock
from validations_common.library import haproxy_conf
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
from validations_common.library import haproxy_conf
class TestHaproxyConf(base.TestCase):

View File

@ -12,9 +12,15 @@
# License for the specific language governing permissions and limitations
# under the License.
from unittest import mock
from validations_common.library import hiera
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
from validations_common.library import hiera
class TestHiera(base.TestCase):

View File

@ -19,11 +19,16 @@ test_report_entry
Tests for `reportentry` module.
"""
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
import validations_common.library.reportentry as validation
from validations_common.tests import base
from unittest import mock
reason = "Reason #1"
recommendation = ['Recommendation #1']

View File

@ -23,9 +23,15 @@ Tests for `validations_read_ini` module.
import os
import tempfile
import validations_common.library.validations_read_ini as validation
from validations_common.tests import base
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
import validations_common.library.validations_read_ini as validation
invalid_content = '''
[DEFAULT#

View File

@ -12,9 +12,15 @@
# License for the specific language governing permissions and limitations
# under the License.
from unittest import mock
from validations_common.library import warn
try:
from unittest import mock
except ImportError:
import mock
from validations_common.tests import base
from validations_common.tests import fakes
from validations_common.library import warn
class TestWarn(base.TestCase):