diff --git a/easybuild/tools/module_naming_scheme/utilities.py b/easybuild/tools/module_naming_scheme/utilities.py index 8e8f3e919e..e46609d22b 100644 --- a/easybuild/tools/module_naming_scheme/utilities.py +++ b/easybuild/tools/module_naming_scheme/utilities.py @@ -64,16 +64,16 @@ def det_full_ec_version(ec): # prepend/append version prefix/suffix versionprefix = ec.get('versionprefix', '') - if not isinstance(versionprefix, string_type): + if versionprefix and not isinstance(versionprefix, string_type): raise EasyBuildError("versionprefix value should be a string, found '%s': %s (full spec: %s)", type(versionprefix).__name__, versionprefix, ec) versionsuffix = ec.get('versionsuffix', '') - if not isinstance(versionsuffix, string_type): + if versionsuffix and not isinstance(versionsuffix, string_type): raise EasyBuildError("versionsuffix value should be a string, found '%s': %s (full spec: %s)", type(versionsuffix).__name__, versionsuffix, ec) - ecver = ''.join([x for x in [versionprefix, ecver, versionsuffix] if x]) + ecver = ''.join([x for x in [versionprefix or '', ecver, versionsuffix or ''] if x]) return ecver diff --git a/test/framework/easyconfig.py b/test/framework/easyconfig.py index f09a0896a6..e17f1c3ca7 100644 --- a/test/framework/easyconfig.py +++ b/test/framework/easyconfig.py @@ -761,6 +761,12 @@ def test_installversion(self): # only version key is strictly needed self.assertEqual(det_full_ec_version({'version': '1.2.3'}), '1.2.3') + # versionprefix/versionsuffix can also be set to None, + # see https://github.com/easybuilders/easybuild-framework/issues/4281 + cfg['versionprefix'] = None + cfg['versionsuffix'] = None + self.assertEqual(det_full_ec_version(cfg), '3.14') + # check how faulty dep spec is handled faulty_dep_spec = { 'name': 'test',