Merge "Refactor base test classes inheritance for reuse"
This commit is contained in:
commit
877840e943
|
@ -30,6 +30,7 @@ import fixtures
|
|||
from six.moves import StringIO
|
||||
import testtools
|
||||
from testtools.content import text_content
|
||||
import testscenarios
|
||||
from yaml import safe_dump
|
||||
|
||||
from jenkins_jobs.config import JJBConfig
|
||||
|
@ -100,22 +101,17 @@ def get_scenarios(fixtures_path, in_ext='yaml', out_ext='xml',
|
|||
return scenarios
|
||||
|
||||
|
||||
class LoggingFixture(object):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
super(LoggingFixture, self).setUp()
|
||||
self.useFixture(fixtures.FakeLogger(level=logging.DEBUG))
|
||||
|
||||
|
||||
class BaseTestCase(LoggingFixture):
|
||||
scenarios = []
|
||||
fixtures_path = None
|
||||
class BaseTestCase(testtools.TestCase):
|
||||
|
||||
# TestCase settings:
|
||||
maxDiff = None # always dump text difference
|
||||
longMessage = True # keep normal error message when providing our
|
||||
|
||||
def setUp(self):
|
||||
|
||||
super(BaseTestCase, self).setUp()
|
||||
self.useFixture(fixtures.FakeLogger(level=logging.DEBUG))
|
||||
|
||||
def _read_utf8_content(self):
|
||||
# if None assume empty file
|
||||
if self.out_filename is None:
|
||||
|
@ -137,6 +133,12 @@ class BaseTestCase(LoggingFixture):
|
|||
|
||||
return jjb_config
|
||||
|
||||
|
||||
class BaseScenariosTestCase(testscenarios.TestWithScenarios, BaseTestCase):
|
||||
|
||||
scenarios = []
|
||||
fixtures_path = None
|
||||
|
||||
def test_yaml_snippet(self):
|
||||
if not self.in_filename:
|
||||
return
|
||||
|
@ -192,7 +194,8 @@ class BaseTestCase(LoggingFixture):
|
|||
)
|
||||
|
||||
|
||||
class SingleJobTestCase(BaseTestCase):
|
||||
class SingleJobTestCase(BaseScenariosTestCase):
|
||||
|
||||
def test_yaml_snippet(self):
|
||||
config = self._get_config()
|
||||
|
||||
|
@ -223,7 +226,7 @@ class SingleJobTestCase(BaseTestCase):
|
|||
)
|
||||
|
||||
|
||||
class JsonTestCase(BaseTestCase):
|
||||
class JsonTestCase(BaseScenariosTestCase):
|
||||
|
||||
def test_yaml_snippet(self):
|
||||
expected_json = self._read_utf8_content()
|
||||
|
@ -240,7 +243,7 @@ class JsonTestCase(BaseTestCase):
|
|||
)
|
||||
|
||||
|
||||
class YamlTestCase(BaseTestCase):
|
||||
class YamlTestCase(BaseScenariosTestCase):
|
||||
|
||||
def test_yaml_snippet(self):
|
||||
expected_yaml = self._read_utf8_content()
|
||||
|
|
|
@ -16,14 +16,12 @@
|
|||
|
||||
from jenkins_jobs.config import JJBConfig
|
||||
import jenkins_jobs.builder
|
||||
from tests.base import LoggingFixture
|
||||
from tests import base
|
||||
from tests.base import mock
|
||||
|
||||
from testtools import TestCase
|
||||
|
||||
|
||||
@mock.patch('jenkins_jobs.builder.JobCache', mock.MagicMock)
|
||||
class TestCaseTestBuilder(LoggingFixture, TestCase):
|
||||
class TestCaseTestBuilder(base.BaseTestCase):
|
||||
def setUp(self):
|
||||
super(TestCaseTestBuilder, self).setUp()
|
||||
self.jjb_config = JJBConfig()
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import builders
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleBuilders(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModuleBuilders(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = builders.Builders
|
||||
|
|
|
@ -14,14 +14,13 @@
|
|||
# under the License.
|
||||
|
||||
import os
|
||||
import testtools
|
||||
|
||||
import jenkins_jobs
|
||||
from tests.base import LoggingFixture
|
||||
from tests import base
|
||||
from tests.base import mock
|
||||
|
||||
|
||||
class TestCaseJobCache(LoggingFixture, testtools.TestCase):
|
||||
class TestCaseJobCache(base.BaseTestCase):
|
||||
|
||||
@mock.patch('jenkins_jobs.builder.JobCache.get_cache_dir',
|
||||
lambda x: '/bad/file')
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
import os
|
||||
|
||||
import testtools
|
||||
from jenkins_jobs.cli import entry
|
||||
from tests.base import LoggingFixture
|
||||
from tests import base
|
||||
from tests.base import mock
|
||||
|
||||
|
||||
class CmdTestsBase(LoggingFixture, testtools.TestCase):
|
||||
class CmdTestsBase(base.BaseTestCase):
|
||||
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
|
||||
|
|
|
@ -15,20 +15,16 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import ExpectedException
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.errors import JenkinsJobsException
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
from tests.base import mock
|
||||
from tests.base import SingleJobTestCase
|
||||
|
||||
|
||||
class TestCaseModuleDuplicates(TestWithScenarios,
|
||||
SingleJobTestCase, TestCase):
|
||||
class TestCaseModuleDuplicates(base.SingleJobTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
|
||||
@mock.patch('jenkins_jobs.builder.logger', autospec=True)
|
||||
def test_yaml_snippet(self, mock_logger):
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
from testtools import ExpectedException
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs import errors
|
||||
from tests.base import LoggingFixture
|
||||
from tests import base
|
||||
|
||||
|
||||
def dispatch(exc, *args):
|
||||
|
@ -22,7 +21,7 @@ def gen_xml(exc, *args):
|
|||
raise exc(*args)
|
||||
|
||||
|
||||
class TestInvalidAttributeError(LoggingFixture, TestCase):
|
||||
class TestInvalidAttributeError(base.BaseTestCase):
|
||||
|
||||
def test_no_valid_values(self):
|
||||
# When given no valid values, InvalidAttributeError simply displays a
|
||||
|
@ -49,7 +48,7 @@ class TestInvalidAttributeError(LoggingFixture, TestCase):
|
|||
valid_values)
|
||||
|
||||
|
||||
class TestMissingAttributeError(LoggingFixture, TestCase):
|
||||
class TestMissingAttributeError(base.BaseTestCase):
|
||||
|
||||
def test_with_single_missing_attribute(self):
|
||||
# When passed a single missing attribute, display a message indicating
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import general
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleGeneral(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModuleGeneral(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = general.General
|
||||
|
|
|
@ -14,15 +14,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import hipchat_notif
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModulePublishers(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModulePublishers(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = hipchat_notif.HipChat
|
||||
|
|
|
@ -17,14 +17,9 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from tests.base import get_scenarios
|
||||
from tests.base import SingleJobTestCase
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleJsonParser(TestWithScenarios,
|
||||
SingleJobTestCase, TestCase):
|
||||
class TestCaseModuleJsonParser(base.SingleJobTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path, in_ext='json', out_ext='xml')
|
||||
scenarios = base.get_scenarios(fixtures_path, in_ext='json', out_ext='xml')
|
||||
|
|
|
@ -16,31 +16,26 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import ExpectedException
|
||||
from testtools import TestCase
|
||||
from yaml.composer import ComposerError
|
||||
|
||||
from jenkins_jobs.config import JJBConfig
|
||||
from jenkins_jobs.parser import YamlParser
|
||||
from tests.base import get_scenarios
|
||||
from tests.base import JsonTestCase
|
||||
from tests.base import LoggingFixture
|
||||
from tests.base import YamlTestCase
|
||||
from tests import base
|
||||
|
||||
|
||||
def _exclude_scenarios(input_filename):
|
||||
return os.path.basename(input_filename).startswith("custom_")
|
||||
|
||||
|
||||
class TestCaseLocalYamlInclude(TestWithScenarios, JsonTestCase, TestCase):
|
||||
class TestCaseLocalYamlInclude(base.JsonTestCase):
|
||||
"""
|
||||
Verify application specific tags independently of any changes to
|
||||
modules XML parsing behaviour
|
||||
"""
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path, 'yaml', 'json',
|
||||
filter_func=_exclude_scenarios)
|
||||
scenarios = base.get_scenarios(fixtures_path, 'yaml', 'json',
|
||||
filter_func=_exclude_scenarios)
|
||||
|
||||
def test_yaml_snippet(self):
|
||||
|
||||
|
@ -52,16 +47,16 @@ class TestCaseLocalYamlInclude(TestWithScenarios, JsonTestCase, TestCase):
|
|||
super(TestCaseLocalYamlInclude, self).test_yaml_snippet()
|
||||
|
||||
|
||||
class TestCaseLocalYamlAnchorAlias(TestWithScenarios, YamlTestCase, TestCase):
|
||||
class TestCaseLocalYamlAnchorAlias(base.YamlTestCase):
|
||||
"""
|
||||
Verify yaml input is expanded to the expected yaml output when using yaml
|
||||
anchors and aliases.
|
||||
"""
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path, 'iyaml', 'oyaml')
|
||||
scenarios = base.get_scenarios(fixtures_path, 'iyaml', 'oyaml')
|
||||
|
||||
|
||||
class TestCaseLocalYamlIncludeAnchors(LoggingFixture, TestCase):
|
||||
class TestCaseLocalYamlIncludeAnchors(base.BaseTestCase):
|
||||
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
|
||||
|
|
|
@ -17,13 +17,9 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from tests.base import get_scenarios
|
||||
from tests.base import SingleJobTestCase
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleSCMMacro(TestWithScenarios, SingleJobTestCase, TestCase):
|
||||
class TestCaseModuleSCMMacro(base.SingleJobTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
|
|
|
@ -1,18 +1,15 @@
|
|||
import pkg_resources
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
|
||||
import testtools as tt
|
||||
from testtools.content import text_content
|
||||
import testscenarios
|
||||
|
||||
from jenkins_jobs.config import JJBConfig
|
||||
from jenkins_jobs.registry import ModuleRegistry
|
||||
from tests.base import LoggingFixture
|
||||
from tests import base
|
||||
|
||||
|
||||
class ModuleRegistryPluginInfoTestsWithScenarios(TestWithScenarios,
|
||||
LoggingFixture,
|
||||
tt.TestCase):
|
||||
class ModuleRegistryPluginInfoTestsWithScenarios(
|
||||
testscenarios.TestWithScenarios, base.BaseTestCase):
|
||||
scenarios = [
|
||||
('s1', dict(v1='1.0.0', op='__gt__', v2='0.8.0')),
|
||||
('s2', dict(v1='1.0.1alpha', op='__gt__', v2='1.0.0')),
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import testtools
|
||||
from testtools.matchers import Equals
|
||||
import xml.etree.ElementTree as XML
|
||||
import yaml
|
||||
|
@ -21,10 +20,10 @@ import yaml
|
|||
from jenkins_jobs.errors import InvalidAttributeError
|
||||
from jenkins_jobs.errors import MissingAttributeError
|
||||
from jenkins_jobs.modules.helpers import convert_mapping_to_xml
|
||||
from tests.base import LoggingFixture
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseTestHelpers(LoggingFixture, testtools.TestCase):
|
||||
class TestCaseTestHelpers(base.BaseTestCase):
|
||||
|
||||
def test_convert_mapping_to_xml(self):
|
||||
"""
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import notifications
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleNotifications(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModuleNotifications(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = notifications.Notifications
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import parameters
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleParameters(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModuleParameters(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = parameters.Parameters
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import properties
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleProperties(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModuleProperties(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = properties.Properties
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import publishers
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModulePublishers(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModulePublishers(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = publishers.Publishers
|
||||
|
|
|
@ -16,15 +16,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import reporters
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleReporters(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModuleReporters(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = reporters.Reporters
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import scm
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleSCM(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModuleSCM(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = scm.SCM
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import triggers
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleTriggers(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModuleTriggers(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = triggers.Triggers
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from jenkins_jobs.modules import wrappers
|
||||
from tests.base import BaseTestCase
|
||||
from tests.base import get_scenarios
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleWrappers(TestWithScenarios, BaseTestCase, TestCase):
|
||||
class TestCaseModuleWrappers(base.BaseScenariosTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
klass = wrappers.Wrappers
|
||||
|
|
|
@ -17,14 +17,9 @@
|
|||
|
||||
import os
|
||||
|
||||
from testscenarios.testcase import TestWithScenarios
|
||||
from testtools import TestCase
|
||||
|
||||
from tests.base import get_scenarios
|
||||
from tests.base import SingleJobTestCase
|
||||
from tests import base
|
||||
|
||||
|
||||
class TestCaseModuleYamlInclude(TestWithScenarios,
|
||||
SingleJobTestCase, TestCase):
|
||||
class TestCaseModuleYamlInclude(base.SingleJobTestCase):
|
||||
fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
scenarios = get_scenarios(fixtures_path)
|
||||
scenarios = base.get_scenarios(fixtures_path)
|
||||
|
|
Loading…
Reference in New Issue