diff --git a/Adaptation/FileHandlers/pcl/Convert.cs b/Adaptation/FileHandlers/pcl/Convert.cs index fb723dc..3fedd48 100644 --- a/Adaptation/FileHandlers/pcl/Convert.cs +++ b/Adaptation/FileHandlers/pcl/Convert.cs @@ -75,6 +75,7 @@ internal class Convert string[] txtFiles = Directory.GetFiles(sourcePath, $"{sourceFileNameWithoutExtension}_*.txt", SearchOption.TopDirectoryOnly); if (txtFiles.Length != 0) { + txtFiles = (from l in txtFiles orderby l.Length, l select l).ToArray(); foreach (string txtFile in txtFiles) { sourceFiles.Add(txtFile); diff --git a/Adaptation/MET08DDUPSFS6420.Tests.csproj b/Adaptation/MET08DDUPSFS6420.Tests.csproj index 496f8fa..e79870e 100644 --- a/Adaptation/MET08DDUPSFS6420.Tests.csproj +++ b/Adaptation/MET08DDUPSFS6420.Tests.csproj @@ -87,16 +87,16 @@ - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/Adaptation/MET08DDUPSFS6420.yml b/Adaptation/MET08DDUPSFS6420.yml index 60c1b2c..e8cb633 100644 --- a/Adaptation/MET08DDUPSFS6420.yml +++ b/Adaptation/MET08DDUPSFS6420.yml @@ -38,7 +38,25 @@ stages: displayName: "Echo Check" - script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear' - displayName: "Nuget Clear" + displayName: "Nuget Nuget Clear" + enabled: false + + - task: CopyFiles@2 + displayName: 'Copy GhostPCL Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\GhostPCL' + OverWrite: true + enabled: true + + - task: CopyFiles@2 + displayName: 'Copy LincPDFC Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\LincPDFC' + OverWrite: true enabled: false - script: | @@ -181,7 +199,25 @@ stages: displayName: "Echo Check" - script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear' - displayName: "Nuget Clear" + displayName: "Nuget Nuget Clear" + enabled: false + + - task: CopyFiles@2 + displayName: 'Copy GhostPCL Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\GhostPCL' + OverWrite: true + enabled: true + + - task: CopyFiles@2 + displayName: 'Copy LincPDFC Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\LincPDFC' + OverWrite: true enabled: false - script: | diff --git a/Adaptation/Shared/ProcessDataStandardFormat.cs b/Adaptation/Shared/ProcessDataStandardFormat.cs index a86241d..bdcc49e 100644 --- a/Adaptation/Shared/ProcessDataStandardFormat.cs +++ b/Adaptation/Shared/ProcessDataStandardFormat.cs @@ -136,6 +136,7 @@ internal class ProcessDataStandardFormat internal static ProcessDataStandardFormat GetProcessDataStandardFormat(string reportFullPath, string[]? lines = null, int columnsLine = 6) { ProcessDataStandardFormat result; + long? sequence; string segment; string[] segments; bool addToFooter = false; @@ -186,13 +187,25 @@ internal class ProcessDataStandardFormat } string? linesOne = lines.Length > 0 && body.Count == 0 && columns.Count == 0 ? lines[1] : null; logistics = GetLogistics(footer, linesOne: linesOne); + if (logistics.Count == 0) + sequence = null; + else + { + segments = logistics[0].Split(new string[] { "SEQUENCE=" }, StringSplitOptions.None); + sequence = segments.Length < 2 || !long.TryParse(segments[1].Split(';')[0], out long s) ? null : s; + } + if (sequence is null && !string.IsNullOrEmpty(reportFullPath)) + { + FileInfo fileInfo = new(reportFullPath); + sequence = fileInfo.LastWriteTime.Ticks; + } result = new(body: body.AsReadOnly(), columns: columns.AsReadOnly(), footer: footer.AsReadOnly(), header: header.AsReadOnly(), inputPDSF: null, logistics: logistics, - sequence: null); + sequence: sequence); return result; } @@ -236,7 +249,7 @@ internal class ProcessDataStandardFormat private static ProcessDataStandardFormat GetProcessDataStandardFormat(DateTime lastWriteTime, int columnsLine, string path, string[]? lines) { ProcessDataStandardFormat result; - long sequence; + long? sequence; string[] segments; bool addToFooter = false; List body = new(); @@ -268,12 +281,13 @@ internal class ProcessDataStandardFormat } logistics = GetLogistics(footer, linesOne: null); if (logistics.Count == 0) - sequence = lastWriteTime.Ticks; + sequence = null; else { segments = logistics[0].Split(new string[] { "SEQUENCE=" }, StringSplitOptions.None); - sequence = segments.Length < 2 || !long.TryParse(segments[1].Split(';')[0], out long s) ? lastWriteTime.Ticks : s; + sequence = segments.Length < 2 || !long.TryParse(segments[1].Split(';')[0], out long s) ? null : s; } + sequence ??= lastWriteTime.Ticks; result = new(body: body.AsReadOnly(), columns: new(columns), footer: footer.AsReadOnly(), @@ -302,7 +316,7 @@ internal class ProcessDataStandardFormat segments = bodyLine.Split('\t').ToList(); for (int c = 0; c < segments.Count; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":\"").Append(value).Append("\","); } _ = stringBuilder.Remove(stringBuilder.Length - 1, 1); @@ -378,7 +392,7 @@ internal class ProcessDataStandardFormat break; for (int c = 0; c < segments.Length; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); line += string.Concat('"', processDataStandardFormat.InputPDSF.Columns[c].Trim('"'), '"', ':', '"', value, '"', ','); } line = string.Concat(line.Substring(0, line.Length - 1), '}'); @@ -518,7 +532,7 @@ internal class ProcessDataStandardFormat { for (int c = 1; c < segments.Length; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":\"").Append(value).Append("\","); } } @@ -526,7 +540,7 @@ internal class ProcessDataStandardFormat { for (int c = 1; c < segments.Length; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); if (string.IsNullOrEmpty(value)) _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":").Append(value).Append("null,"); else if (value.All(char.IsDigit)) diff --git a/Adaptation/_Tests/Extract/Production/v2.60.0/TENCOR2.cs b/Adaptation/_Tests/Extract/Production/v2.60.0/TENCOR2.cs index f164e4e..7d3b8bb 100644 --- a/Adaptation/_Tests/Extract/Production/v2.60.0/TENCOR2.cs +++ b/Adaptation/_Tests/Extract/Production/v2.60.0/TENCOR2.cs @@ -54,5 +54,22 @@ public class TENCOR2 NonThrowTryCatch(); } +#if DEBUG + [Ignore] +#endif + [TestMethod] + public void Production__v2_60_0__TENCOR2__pcl638860965797666706__TwoRuns() + { + string check = "*.pcl"; + bool validatePDSF = false; + _TENCOR2.Production__v2_60_0__TENCOR2__pcl(); + MethodBase methodBase = new StackFrame().GetMethod(); + string[] variables = _TENCOR2.AdaptationTesting.GetVariables(methodBase, check, validatePDSF); + IFileRead fileRead = _TENCOR2.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false); + Logistics logistics = new(fileRead); + _ = Shared.AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF); + NonThrowTryCatch(); + } + } #endif \ No newline at end of file