From 9ebd34b9d38c075ea7f91e23531d248fcf618d41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Sj=C3=B6lund?= Date: Mon, 6 Aug 2018 14:22:13 +0200 Subject: [PATCH] Compliance-Suite: Fix crash when simulation fails Belonging to [master]: - OpenModelica/OMCompiler#2590 --- Examples/ComplianceSuite.mos | 8 ++++++-- Examples/ComplianceSuite.py | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Examples/ComplianceSuite.mos b/Examples/ComplianceSuite.mos index d6ed30b633..369828e3ba 100644 --- a/Examples/ComplianceSuite.mos +++ b/Examples/ComplianceSuite.mos @@ -31,7 +31,7 @@ end fixName; system("rm -f ModelicaCompliance.*.res");getErrorString(); echo(false); -allClasses:={cl for cl guard classAnnotationExists(cl,__ModelicaAssociation.TestCase.shouldPass) in getClassNames(recursive=true)};getErrorString(); +allClasses:={cl for cl guard classAnnotationExists(cl,__ModelicaAssociation.TestCase.shouldPass) in getClassNames(ModelicaCompliance.Algorithms.Assert, recursive=true)};getErrorString(); commands:={"ulimit -t 120 && ("+getInstallationDirectoryPath()+"/bin/omc -d=nogen "+COMPLIANCEEXTRAOMFLAGS+" \"" + fixName(OpenModelica.Scripting.typeNameString(cl)) + ".mos\" > /dev/null 2>&1)" for cl in allClasses}; echo(true); String(size(allClasses,1)) + " number of classes"; @@ -70,7 +70,11 @@ messages := messages + err; messages := messages + (if not success and not shouldPass /* This is correct; try to figure out why (hint: success is a poor name) */ then \"\nSucceeded, but expected failure\" else \"\"); messages := stringReplace(stringReplace(firstPart(messages),\"\\\"\",\"\\\\\\\"\"),\"\n\",\"\\\\n\"); errorType := if shouldPass then \"failed\" else \"expected failure\"; -time := rec.timeTotal; +if resultFile <> \"\" then + time := rec.timeTotal; +else + time := OpenModelica.Scripting.Internal.Time.timerTock(OpenModelica.Scripting.Internal.Time.RT_CLOCK_SIMULATE_TOTAL); +end if; writeFile(\""+fixName(typeNameString(cl))+".res\",\"{\\\"time\\\":\"+String(time)+\", \\\"success\\\":\"+String(success)+\", \\\"messages\\\":\\\"\"+messages+\"\\\", \\\"shouldPass\\\":\"+String(shouldPass)+\"}\n\"); ") for cl in allClasses); getErrorString(); diff --git a/Examples/ComplianceSuite.py b/Examples/ComplianceSuite.py index 217a86a451..a8d0991954 100755 --- a/Examples/ComplianceSuite.py +++ b/Examples/ComplianceSuite.py @@ -54,7 +54,9 @@ def readTest(f, expectedFailures): if expectedFailuresFile: with open(expectedFailuresFile) as fin: expectedFailures = set(l.strip() for l in fin.readlines()) + print("=== Expected Failures ===") print(expectedFailures) + print("=== End Expected Failures ===") res = [readTest(f, expectedFailures) for f in natsorted(glob.glob("*.res"))]