diff --git a/irods/helpers/__init__.py b/irods/helpers/__init__.py index 93823a110..0e8eb8c01 100644 --- a/irods/helpers/__init__.py +++ b/irods/helpers/__init__.py @@ -3,7 +3,7 @@ import sys from irods import env_filename_from_keyword_args import irods.exception as ex -from irods.message import ET, XML_Parser_Type, IRODS_VERSION +from irods.message import ET, XML_Parser_Type, _IRODS_VERSION from irods.path import iRODSPath from irods.session import iRODSSession @@ -54,9 +54,12 @@ def make_session(test_server_version=False, **kwargs): env_file = env_filename_from_keyword_args(kwargs) session = iRODSSession(irods_env_file=env_file, **kwargs) + # irods.test.helpers version of this function sets test_server_version True by default, so + # that sessions generated for the test methods will abort on connecting with a server that + # is too recent. This is a way to ensure that tests don't fail due to a server mismatch. if test_server_version: connected_version = _get_server_version_for_test(session, curtail_length=3) - advertised_version = IRODS_VERSION[:3] + advertised_version = _IRODS_VERSION()[:3] if connected_version > advertised_version: msg = ( "Connected server is {connected_version}, " diff --git a/irods/message/__init__.py b/irods/message/__init__.py index 9b8e0ec80..29cace85a 100644 --- a/irods/message/__init__.py +++ b/irods/message/__init__.py @@ -181,8 +181,16 @@ def ET(xml_type=(), server_version=None): logger = logging.getLogger(__name__) +# Advertised server version compatibility. More recent servers are not guaranteed to work. +# We avail ourselves of this macro in running tests to abort if the session has connected +# to a server that is too new. + +# Deprecated. Not for use external to the library. IRODS_VERSION = (5, 0, 2, "d") +def _IRODS_VERSION(): + return IRODS_VERSION + UNICODE = str _METADATA_FIELD_TYPES = {str, UNICODE, bytes} @@ -473,8 +481,8 @@ def __init__(self, proxy_user, client_user, application_name=""): self.connectCnt = 0 self.proxyUser, self.proxyRcatZone = proxy_user self.clientUser, self.clientRcatZone = client_user - self.relVersion = "rods{}.{}.{}".format(*IRODS_VERSION) - self.apiVersion = "{3}".format(*IRODS_VERSION) + self.relVersion = "rods{}.{}.{}".format(*_IRODS_VERSION()) + self.apiVersion = "{3}".format(*_IRODS_VERSION()) self.option = application_name irodsProt = IntegerProperty() diff --git a/irods/test/helpers.py b/irods/test/helpers.py index 8b92738fb..4cca53cdb 100644 --- a/irods/test/helpers.py +++ b/irods/test/helpers.py @@ -20,7 +20,7 @@ from irods.helpers import ( home_collection, make_session as _irods_helpers_make_session) -from irods.message import iRODSMessage, IRODS_VERSION +from irods.message import iRODSMessage from irods.password_obfuscation import encode import irods.rule from irods.session import iRODSSession