From 4cf8c2baae08cacfceab7580fa9b6a41d82ac33f Mon Sep 17 00:00:00 2001 From: vincentcasseau Date: Wed, 5 Feb 2025 15:51:28 +0100 Subject: [PATCH 1/2] KCore - test: conditionally add test logs to compareSessionLogs --- Cassiopee/KCore/test/compareSessionLogs.py | 32 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/Cassiopee/KCore/test/compareSessionLogs.py b/Cassiopee/KCore/test/compareSessionLogs.py index 6f1dfa639..4421c6688 100644 --- a/Cassiopee/KCore/test/compareSessionLogs.py +++ b/Cassiopee/KCore/test/compareSessionLogs.py @@ -4,6 +4,7 @@ # Differences written in: compSession_DATE.txt where DATE is the current time import os import sys +from glob import glob from time import strptime, strftime # Tests to ignore in non-debug mode @@ -21,6 +22,8 @@ def parseArgs(): parser = argparse.ArgumentParser() parser.add_argument("-e", "--email", action="store_true", help="Email results. Default: print in terminal") + parser.add_argument("-f", "--full", action="store_true", + help="Show test case logs. Default: disabled") parser.add_argument("-l", "--logs", type=str, default='', help="Single-quoted logs to compare.") parser.add_argument("-p", "--prod", type=str, default='', @@ -52,8 +55,6 @@ def readGitInfo(filename): # Find a two session logs of validCassiopee for a given production def findLogs(prodname): - import os - from glob import glob validDataFolder = "/stck/cassiope/git/Cassiopee/Cassiopee/ValidData_{}".format(prodname) if not os.access(validDataFolder, os.R_OK): raise Exception("Session logs can't be retrieved in {}".format(validDataFolder)) @@ -132,6 +133,27 @@ def tests2Ignore(prod): return IGNORE_TESTS_DBG return IGNORE_TESTS_NDBG +# Get full test logs for a given list of tests +def getTestLogs(prodname, testList): + testLog = "" + modNames = [test.split('/')[0] for test in testList] + testNames = [test.split('/')[1] for test in testList] + validDataFolder = "/stck/cassiope/git/Cassiopee/Cassiopee/ValidData_{}".format(prodname) + # Read the last purged logValidCassiopee.dat file + purgedLogs = sorted(glob(os.path.join(validDataFolder, "logValidCassiopee_purged_*.dat"))) + if not purgedLogs or not os.access(purgedLogs[-1], os.R_OK): return testLog + with open(purgedLogs[-1], 'r') as f: log = f.read() + # Split log using "Running " as the delimiter + failedTests = log.split("Running ")[1:] + failedTestNames = [test.split(' ')[0] for test in failedTests] + # Add logs of cases that failed + for i, name in enumerate(testNames): + try: + pos = failedTestNames.index(name) + testLog += "{}/{}{}\n\n".format(modNames[i], failedTests[pos], 88*'*') + except ValueError: pass + return testLog + # Stringify test comparison def stringify(test='', ref='', new=''): if not test: @@ -247,6 +269,12 @@ def stringify(test='', ref='', new=''): tlog, tlog2 = getTimeFromLog(script_args.logs[1]) messageSubject = "[validCassiopee - {}] {} - State: {}".format(prod, tlog, baseState) messageText = header + compStr + baseStateMsg + + if script_args.full: + testLogs = getTestLogs(script_args.prod, failedTests) + if testLogs: + messageText += f"\n\nFailed test logs:\n{'-'*16}\n{testLogs}" + if script_args.email: if baseStateMsg: baseStateMsg = '\n\n'+baseStateMsg try: From 4252ddf4b3a3355d795e164bc69a85692d7e97b4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 5 Feb 2025 14:52:34 +0000 Subject: [PATCH 2/2] Apply autopep8 formatting --- Cassiopee/KCore/test/compareSessionLogs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cassiopee/KCore/test/compareSessionLogs.py b/Cassiopee/KCore/test/compareSessionLogs.py index 4421c6688..cf0d89589 100644 --- a/Cassiopee/KCore/test/compareSessionLogs.py +++ b/Cassiopee/KCore/test/compareSessionLogs.py @@ -133,7 +133,7 @@ def tests2Ignore(prod): return IGNORE_TESTS_DBG return IGNORE_TESTS_NDBG -# Get full test logs for a given list of tests +# Get full test logs for a given list of tests def getTestLogs(prodname, testList): testLog = "" modNames = [test.split('/')[0] for test in testList]