Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skip SQL tests if tarantool version < 2.0.0 #195

Merged
merged 1 commit into from
Nov 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions test/suites/lib/skip.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import functools
import pkg_resources
import re

SQL_SUPPORT_TNT_VERSION = '2.0.0'


def skip_or_run_sql_test(func):
"""Decorator to skip or run SQL-related tests depending on the tarantool
version.

Tarantool supports SQL-related stuff only since 2.0.0 version. So this
decorator should wrap every SQL-related test to skip it if the tarantool
version < 2.0.0 is used for testing.

Also, it can be used with the 'setUp' method for skipping the whole test
suite.
"""

@functools.wraps(func)
def wrapper(self, *args, **kwargs):
if func.__name__ == 'setUp':
func(self, *args, **kwargs)

if not hasattr(self, 'tnt_version'):
self.__class__.tnt_version = re.match(
r'[\d.]+', self.srv.admin('box.info.version')[0]
).group()

tnt_version = pkg_resources.parse_version(self.tnt_version)
sql_support_tnt_version = pkg_resources.parse_version(
SQL_SUPPORT_TNT_VERSION
)

if tnt_version < sql_support_tnt_version:
self.skipTest(
'Tarantool %s does not support SQL' % self.tnt_version
)

if func.__name__ != 'setUp':
func(self, *args, **kwargs)

return wrapper
2 changes: 2 additions & 0 deletions test/suites/test_dbapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import tarantool
from tarantool import dbapi
from .lib.tarantool_server import TarantoolServer
from .lib.skip import skip_or_run_sql_test


class TestSuite_DBAPI(dbapi20.DatabaseAPI20Test):
Expand All @@ -34,6 +35,7 @@ def setUpClass(self):
host=self.srv.host,
port=self.srv.args['primary'])

@skip_or_run_sql_test
def setUp(self):
# prevent a remote tarantool from clean our session
if self.srv.is_started():
Expand Down
4 changes: 3 additions & 1 deletion test/suites/test_execute.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@

import tarantool
from .lib.tarantool_server import TarantoolServer
from .lib.skip import skip_or_run_sql_test


class TestSuite_Execute(unittest.TestCase):
ddl = 'create table %s (id INTEGER PRIMARY KEY AUTOINCREMENT, ' \
'name varchar(20))'
'name varchar(20))'

dml_params = [
{'id': None, 'name': 'Michael'},
Expand All @@ -30,6 +31,7 @@ def setUpClass(self):
self.srv.start()
self.con = tarantool.Connection(self.srv.host, self.srv.args['primary'])

@skip_or_run_sql_test
def setUp(self):
# prevent a remote tarantool from clean our session
if self.srv.is_started():
Expand Down