From 77b4450a2de39d961b7e58e78fe781c8c3752c8a Mon Sep 17 00:00:00 2001 From: Adrian Pop Date: Thu, 29 May 2025 01:02:15 +0200 Subject: [PATCH] Add new json field to force library version exact match - to be used for MSL --- README.md | 2 ++ configs/conf.json | 2 ++ shared.py | 1 + test.py | 9 ++++++++- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index daf9b86..bd06c56 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,8 @@ The scripts from this repository can be used to run regression tests for public, { "library":"MyModelicaLibrary", "libraryVersion":"main", + "libraryVersionExactMatch":true, // to be sure that the exact version is loaded, not the latest compatible + "libraryVersionLatestInPackageManager":true, // load the latest from the package manager "referenceFileExtension":"mat", "referenceFileNameDelimiter":"/", "referenceFileNameExtraName":"$ClassName", diff --git a/configs/conf.json b/configs/conf.json index c9141fe..c146148 100644 --- a/configs/conf.json +++ b/configs/conf.json @@ -11,6 +11,7 @@ { "library":"Modelica", "libraryVersion":"4.1.0", + "libraryVersionExactMatch":true, "referenceFileExtension":"csv", "referenceFileNameDelimiter":"/", "referenceFileNameExtraName":"$ClassName", @@ -20,6 +21,7 @@ { "library":"Modelica", "libraryVersion":"4.0.0", + "libraryVersionExactMatch":true, "referenceFileExtension":"csv", "referenceFileNameDelimiter":"/", "referenceFileNameExtraName":"$ClassName", diff --git a/shared.py b/shared.py index c3aac79..2f9b7a3 100644 --- a/shared.py +++ b/shared.py @@ -43,6 +43,7 @@ def fixData(data,abortSimulationFlag,alarmFlag,overrideDefaults,defaultCustomCom data["environmentTranslation"] = environmentTranslation data["libraryVersion"] = data.get("libraryVersion") or "default" data["libraryVersionLatestInPackageManager"] = data.get("libraryVersionLatestInPackageManager") or False + data["libraryVersionExactMatch"] = data.get("libraryVersionExactMatch") or False data["alarmFlag"] = data.get("alarmFlag") or (alarmFlag if data["simCodeTarget"]=="C" else "") data["abortSlowSimulation"] = data.get("abortSlowSimulation") or (abortSimulationFlag if data["simCodeTarget"]=="C" else "") if "changeHash" in data: # Force rebuilding the library due to change in the testing script diff --git a/test.py b/test.py index 19b550f..d1fb640 100755 --- a/test.py +++ b/test.py @@ -630,7 +630,14 @@ def hashReferenceFiles(s): versions = "{" + ",".join(['"'+v+'"' for v in availableVersions]) + "}" else: versions = '{"%s"}' % version - if not omc.sendExpression('loadModel(%s,%s)' % (lib,versions)): + + exactMatch='' + if conf["libraryVersionExactMatch"]: + if conf["libraryVersionLatestInPackageManager"]: + raise Exception("Library %s has both libraryVersionLatestInPackageManager:true and libraryVersionExactMatch:true! Make up your mind." % libName) + exactMatch=', requireExactVersion=true' + + if not omc.sendExpression('loadModel(%s,%s%s)' % (lib,versions,exactMatch)): try: print("Failed to load library %s %s: %s" % (library,versions,omc.sendExpression('OpenModelica.Scripting.getErrorString()'))) except: