Add a --modules option to the RE-SQL test suite to allow testing of specific object types. Fixes #4560

This commit is contained in:
Aditya Toshniwal 2019-08-06 13:43:49 +01:00 committed by Dave Page
parent ee8fec6d7f
commit db7a2e3023
5 changed files with 26 additions and 5 deletions

View File

@ -19,6 +19,7 @@ Housekeeping
************ ************
| `Issue #4555 <https://redmine.postgresql.org/issues/4555>`_ - Add Reverse Engineered SQL tests for Exclusion Constraint. | `Issue #4555 <https://redmine.postgresql.org/issues/4555>`_ - Add Reverse Engineered SQL tests for Exclusion Constraint.
| `Issue #4560 <https://redmine.postgresql.org/issues/4560>`_ - Add a --modules option to the RE-SQL test suite to allow testing of specific object types.
Bug fixes Bug fixes
********* *********

View File

@ -65,7 +65,8 @@ class TestsGeneratorRegistry(ABCMeta):
all_modules.append('regression.re_sql.tests.test_resql') all_modules.append('regression.re_sql.tests.test_resql')
# If specific modules are to be tested, exclude others # If specific modules are to be tested, exclude others
if len(for_modules) > 0: # for modules are handled differently for resql
if not is_resql_only and len(for_modules) > 0:
all_modules = [module_name all_modules = [module_name
for module_name in all_modules for module_name in all_modules
for fmod in for_modules for fmod in for_modules
@ -79,6 +80,7 @@ class TestsGeneratorRegistry(ABCMeta):
# Check if only reverse engineered sql test cases to run # Check if only reverse engineered sql test cases to run
# if yes then import only that module # if yes then import only that module
if is_resql_only: if is_resql_only:
BaseTestGenerator.setForModules(for_modules)
try: try:
import_module('regression.re_sql.tests.test_resql') import_module('regression.re_sql.tests.test_resql')
except ImportError: except ImportError:
@ -147,3 +149,7 @@ class BaseTestGenerator(unittest.TestCase):
@classmethod @classmethod
def setExcludePkgs(cls, exclude_pkgs): def setExcludePkgs(cls, exclude_pkgs):
cls.exclude_pkgs = exclude_pkgs cls.exclude_pkgs = exclude_pkgs
@classmethod
def setForModules(cls, for_modules):
cls.for_modules = for_modules

View File

@ -151,6 +151,9 @@ Python Tests:
- Execute only reverse engineered sql test framework for all nodes - Execute only reverse engineered sql test framework for all nodes
run 'python runtests.py --pkg resql' run 'python runtests.py --pkg resql'
- Execute only reverse engineered sql test framework for some modules
run 'python runtests.py --pkg resql --modules sequences,functions'
- Execute test framework for entire package - Execute test framework for entire package
Example 1) Run test framework for 'browser' package Example 1) Run test framework for 'browser' package

View File

@ -22,7 +22,7 @@ from pgadmin.utils.versioned_template_loader import \
get_version_mapping_directories get_version_mapping_directories
def create_resql_module_list(all_modules, exclude_pkgs): def create_resql_module_list(all_modules, exclude_pkgs, for_modules):
""" """
This function is used to create the module list for reverse engineered This function is used to create the module list for reverse engineered
SQL by iterating all the modules. SQL by iterating all the modules.
@ -41,7 +41,13 @@ def create_resql_module_list(all_modules, exclude_pkgs):
module_name_list = complete_module_name[0].split(".") module_name_list = complete_module_name[0].split(".")
module_name = module_name_list[len(module_name_list) - 1] module_name = module_name_list[len(module_name_list) - 1]
resql_module_list[module_name] = os.path.join(*module_name_list) if len(for_modules) > 0:
if module_name in for_modules:
resql_module_list[module_name] = \
os.path.join(*module_name_list)
else:
resql_module_list[module_name] = \
os.path.join(*module_name_list)
return resql_module_list return resql_module_list
@ -87,7 +93,8 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator):
resql_module_list = create_resql_module_list( resql_module_list = create_resql_module_list(
BaseTestGenerator.re_sql_module_list, BaseTestGenerator.re_sql_module_list,
BaseTestGenerator.exclude_pkgs) BaseTestGenerator.exclude_pkgs,
getattr(BaseTestGenerator, 'for_modules', []))
for module in resql_module_list: for module in resql_module_list:
self.table_id = None self.table_id = None

View File

@ -253,9 +253,13 @@ def get_test_modules(arguments):
if arguments['pkg'] is None or arguments['pkg'] == "all": if arguments['pkg'] is None or arguments['pkg'] == "all":
TestsGeneratorRegistry.load_generators('pgadmin', exclude_pkgs) TestsGeneratorRegistry.load_generators('pgadmin', exclude_pkgs)
elif arguments['pkg'] is not None and arguments['pkg'] == "resql": elif arguments['pkg'] is not None and arguments['pkg'] == "resql":
for_modules = []
if arguments['modules'] is not None:
for_modules = arguments['modules'].split(',')
# Load the reverse engineering sql test module # Load the reverse engineering sql test module
TestsGeneratorRegistry.load_generators('pgadmin', exclude_pkgs, TestsGeneratorRegistry.load_generators('pgadmin', exclude_pkgs,
is_resql_only=True) for_modules, is_resql_only=True)
else: else:
for_modules = [] for_modules = []
if arguments['modules'] is not None: if arguments['modules'] is not None: