From 114cd74486a2e83b4a01263031eab8ec401502ea Mon Sep 17 00:00:00 2001 From: Michiel Oda Date: Tue, 4 Jun 2024 09:28:16 +0200 Subject: [PATCH 1/8] Add initial part --- .../QActions/QAction/CheckFileEncoding.cs | 56 +++++++ Protocol/ErrorMessages.xml | 24 +++ .../QActions/QAction/CheckFileEncoding.cs | 98 +++++++++++ .../CheckFileEncoding/CheckFileEncoding.cs | 158 ++++++++++++++++++ .../Samples/Codefix/InvalidFileEncoding.xml | 6 + .../InvalidFileEncoding/Directory.Build.props | 9 + .../Internal/.editorconfig | 11 ++ .../InvalidFileEncoding.sln | 56 +++++++ .../QAction_1/QAction_1.cs | 15 ++ .../QAction_1/QAction_1.csproj | 18 ++ .../QAction_2/QAction_2.cs | 28 ++++ .../QAction_2/QAction_2.csproj | 18 ++ .../QAction_Helper/Directory.Build.props | 5 + .../QAction_Helper/QAction_Helper.cs | 35 ++++ .../QAction_Helper/QAction_Helper.csproj | 15 ++ .../Codefix/InvalidFileEncoding/protocol.xml | 10 ++ .../Validate/Invalid/InvalidFileEncoding.xml | 6 + .../InvalidFileEncoding/Directory.Build.props | 9 + .../Internal/.editorconfig | 11 ++ .../InvalidFileEncoding.sln | 56 +++++++ .../QAction_1/QAction_1.cs | Bin 0 -> 550 bytes .../QAction_1/QAction_1.csproj | 18 ++ .../QAction_2/QAction_2.cs | 28 ++++ .../QAction_2/QAction_2.csproj | 18 ++ .../QAction_Helper/Directory.Build.props | 5 + .../QAction_Helper/QAction_Helper.cs | 35 ++++ .../QAction_Helper/QAction_Helper.csproj | 15 ++ .../Invalid/InvalidFileEncoding/protocol.xml | 10 ++ .../Samples/Validate/Valid/Valid.xml | 6 + .../Valid/Valid/Directory.Build.props | 9 + .../Valid/Valid/Internal/.editorconfig | 11 ++ .../Valid/Valid/QAction_1/QAction_1.cs | 14 ++ .../Valid/Valid/QAction_1/QAction_1.csproj | 18 ++ .../Valid/Valid/QAction_2/QAction_2.cs | 28 ++++ .../Valid/Valid/QAction_2/QAction_2.csproj | 18 ++ .../QAction_Helper/Directory.Build.props | 5 + .../Valid/QAction_Helper/QAction_Helper.cs | 35 ++++ .../QAction_Helper/QAction_Helper.csproj | 15 ++ .../Samples/Validate/Valid/Valid/Valid.sln | 56 +++++++ .../Samples/Validate/Valid/Valid/protocol.xml | 10 ++ 40 files changed, 998 insertions(+) create mode 100644 Protocol/Error Messages/Protocol/QActions/QAction/CheckFileEncoding.cs create mode 100644 Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding.xml create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Directory.Build.props create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Internal/.editorconfig create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/InvalidFileEncoding.sln create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.csproj create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.csproj create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/Directory.Build.props create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/protocol.xml create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding.xml create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/Directory.Build.props create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/Internal/.editorconfig create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/InvalidFileEncoding.sln create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_1/QAction_1.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_1/QAction_1.csproj create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_2/QAction_2.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_2/QAction_2.csproj create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/Directory.Build.props create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/protocol.xml create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid.xml create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Directory.Build.props create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Internal/.editorconfig create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_1/QAction_1.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_1/QAction_1.csproj create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_2/QAction_2.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_2/QAction_2.csproj create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/Directory.Build.props create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/QAction_Helper.cs create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/QAction_Helper.csproj create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Valid.sln create mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/protocol.xml diff --git a/Protocol/Error Messages/Protocol/QActions/QAction/CheckFileEncoding.cs b/Protocol/Error Messages/Protocol/QActions/QAction/CheckFileEncoding.cs new file mode 100644 index 00000000..5b0f85ca --- /dev/null +++ b/Protocol/Error Messages/Protocol/QActions/QAction/CheckFileEncoding.cs @@ -0,0 +1,56 @@ +// This is auto-generated code by Validator Management Tool. Do not modify. +namespace Skyline.DataMiner.CICD.Validators.Protocol.Tests.Protocol.QActions.QAction.CheckFileEncoding +{ + using System; + using System.Collections.Generic; + + using Skyline.DataMiner.CICD.Models.Protocol.Read; + using Skyline.DataMiner.CICD.Validators.Common.Interfaces; + using Skyline.DataMiner.CICD.Validators.Common.Model; + using Skyline.DataMiner.CICD.Validators.Protocol.Common; + using Skyline.DataMiner.CICD.Validators.Protocol.Interfaces; + + internal static class Error + { + public static IValidationResult InvalidFileEncoding(IValidate test, IReadable referenceNode, IReadable positionNode, string invalidFileEncoding, string qactionId) + { + return new ValidationResult + { + Test = test, + CheckId = CheckId.CheckFileEncoding, + ErrorId = ErrorIds.InvalidFileEncoding, + FullId = "3.40.1", + Category = Category.QAction, + Severity = Severity.Minor, + Certainty = Certainty.Certain, + Source = Source.Validator, + FixImpact = FixImpact.NonBreaking, + GroupDescription = "", + Description = String.Format("Invalid file encoding '{0}' detected. QAction ID '{1}'.", invalidFileEncoding, qactionId), + HowToFix = "", + ExampleCode = "", + Details = "Each file in a QAction needs to be UTF-8 as otherwise certain characters could be converted to invalid characters.", + HasCodeFix = true, + + PositionNode = positionNode, + ReferenceNode = referenceNode, + }; + } + } + + internal static class ErrorIds + { + public const uint InvalidFileEncoding = 1; + } + + /// + /// Contains the identifiers of the checks. + /// + public static class CheckId + { + /// + /// The check identifier. + /// + public const uint CheckFileEncoding = 40; + } +} \ No newline at end of file diff --git a/Protocol/ErrorMessages.xml b/Protocol/ErrorMessages.xml index 414be354..8ef6d8ac 100644 --- a/Protocol/ErrorMessages.xml +++ b/Protocol/ErrorMessages.xml @@ -12128,6 +12128,30 @@ + + CheckFileEncoding + + + InvalidFileEncoding + + + Invalid file encoding '{0}' detected. QAction ID '{1}'. + + invalidFileEncoding + qactionId + + + Minor + Certain + Validator + NonBreaking + True + + +
+
+
+
diff --git a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs new file mode 100644 index 00000000..5e4a1c65 --- /dev/null +++ b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs @@ -0,0 +1,98 @@ +namespace Skyline.DataMiner.CICD.Validators.Protocol.Tests.Protocol.QActions.QAction.CheckFileEncoding +{ + using System.Collections.Generic; + using System.IO; + using System.Text; + + using Skyline.DataMiner.CICD.FileSystem; + using Skyline.DataMiner.CICD.Models.Protocol; + using Skyline.DataMiner.CICD.Models.Protocol.Read; + using Skyline.DataMiner.CICD.Validators.Common.Interfaces; + using Skyline.DataMiner.CICD.Validators.Common.Model; + using Skyline.DataMiner.CICD.Validators.Protocol.Common; + using Skyline.DataMiner.CICD.Validators.Protocol.Common.Attributes; + using Skyline.DataMiner.CICD.Validators.Protocol.Common.Extensions; + using Skyline.DataMiner.CICD.Validators.Protocol.Interfaces; + + [Test(CheckId.CheckFileEncoding, Category.QAction)] + internal class CheckFileEncoding : IValidate, ICodeFix/*, ICompare*/ + { + public List Validate(ValidatorContext context) + { + List results = new List(); + + foreach ((CompiledQActionProject projectData, IQActionsQAction qaction) in context.EachQActionProject(true)) + { + var project = projectData.Project; + string projectDirectory = FileSystem.Instance.Path.GetDirectoryName(project.FilePath); + + string[] csharpFiles = FileSystem.Instance.Directory.GetFiles(projectDirectory, "*.cs", SearchOption.AllDirectories); + + foreach (string csharpFile in csharpFiles) + { + using (StreamReader sr = new StreamReader(csharpFile)) + { + // Have a look in the file, so it can detect the encoding. + sr.Peek(); + + if (!sr.CurrentEncoding.Equals(Encoding.UTF8)) + { + results.Add(Error.InvalidFileEncoding(this, qaction, qaction, sr.CurrentEncoding.EncodingName, qaction.Id.RawValue) + .WithExtraData(ExtraData.InvalidFileEncoding, csharpFile)); + } + } + } + } + + return results; + } + + public ICodeFixResult Fix(CodeFixContext context) + { + CodeFixResult result = new CodeFixResult(); + + switch (context.Result.ErrorId) + { + case ErrorIds.InvalidFileEncoding: + if (context.Result.ExtraData.TryGetValue(ExtraData.InvalidFileEncoding, out object csharpFile) && csharpFile is string filePath) + { + string tempPath = Path.GetTempFileName(); + using (StreamReader sr = new StreamReader(filePath)) + using (StreamWriter sw = new StreamWriter(tempPath, false, Encoding.UTF8)) + { + // Have a look in the file, so it can detect the encoding. + sr.Peek(); + + int charsRead; + char[] buffer = new char[128 * 1024]; + while ((charsRead = sr.ReadBlock(buffer, 0, buffer.Length)) > 0) + { + sw.Write(buffer, 0, charsRead); + } + } + File.Delete(filePath); + File.Move(tempPath, filePath); + } + break; + + default: + result.Message = $"This error ({context.Result.ErrorId}) isn't implemented."; + break; + } + + return result; + } + + ////public List Compare(MajorChangeCheckContext context) + ////{ + //// List results = new List(); + + //// return results; + ////} + } + + internal enum ExtraData + { + InvalidFileEncoding, + } +} \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs new file mode 100644 index 00000000..3de03056 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs @@ -0,0 +1,158 @@ +namespace ProtocolTests.Protocol.QActions.QAction.CheckFileEncoding +{ + using System; + using System.Collections.Generic; + + using FluentAssertions; + + using Microsoft.VisualStudio.TestTools.UnitTesting; + + using Skyline.DataMiner.CICD.Validators.Common.Interfaces; + using Skyline.DataMiner.CICD.Validators.Common.Model; + using Skyline.DataMiner.CICD.Validators.Protocol.Common; + using Skyline.DataMiner.CICD.Validators.Protocol.Interfaces; + using Skyline.DataMiner.CICD.Validators.Protocol.Tests.Protocol.QActions.QAction.CheckFileEncoding; + + [TestClass] + public class Validate + { + private readonly IValidate check = new CheckFileEncoding(); + + #region Valid Checks + + [TestMethod] + [Ignore] + public void QAction_CheckFileEncoding_Valid_Xml() + { + Generic.ValidateData data = new Generic.ValidateData + { + TestType = Generic.TestType.Valid, + FileName = "Valid", + ExpectedResults = new List() + }; + + Generic.Validate(check, data); + } + + [TestMethod] + public void QAction_CheckFileEncoding_Valid() + { + Generic.ValidateData data = new Generic.ValidateData + { + TestType = Generic.TestType.Valid, + FileName = "Valid", + IsSolution = true, + ExpectedResults = new List() + }; + + Generic.Validate(check, data); + } + + #endregion + + #region Invalid Checks + + [TestMethod] + [Ignore] + public void QAction_CheckFileEncoding_InvalidFileEncoding_Xml() + { + Generic.ValidateData data = new Generic.ValidateData + { + TestType = Generic.TestType.Invalid, + FileName = "InvalidFileEncoding", + ExpectedResults = new List + { + //Error.InvalidFileEncoding(null, null, null, "invalidFileEncoding", "qactionId"), + } + }; + + Generic.Validate(check, data); + } + + [TestMethod] + public void QAction_CheckFileEncoding_InvalidFileEncoding() + { + Generic.ValidateData data = new Generic.ValidateData + { + TestType = Generic.TestType.Invalid, + FileName = "InvalidFileEncoding", + IsSolution = true, + ExpectedResults = new List + { + Error.InvalidFileEncoding(null, null, null, "Unicode", "1"), + } + }; + + Generic.Validate(check, data); + } + + #endregion + } + + [TestClass] + public class CodeFix + { + private readonly ICodeFix check = new CheckFileEncoding(); + + [TestMethod] + [Ignore] + public void QAction_CheckFileEncoding_InvalidFileEncoding_Xml() + { + Generic.FixData data = new Generic.FixData + { + FileNameBase = "InvalidFileEncoding", + }; + + Generic.Fix(check, data); + } + + [TestMethod] + public void QAction_CheckFileEncoding_InvalidFileEncoding() + { + Generic.FixData data = new Generic.FixData + { + FileNameBase = "InvalidFileEncoding", + //IsSolution = true, + }; + + Generic.Fix(check, data); + } + } + + [TestClass] + public class ErrorMessages + { + [TestMethod] + public void QAction_CheckFileEncoding_InvalidFileEncoding() + { + // Create ErrorMessage + var message = Error.InvalidFileEncoding(null, null, null, "invalidFileEncoding", "qactionId"); + + var expected = new ValidationResult + { + Severity = Severity.Minor, + Certainty = Certainty.Certain, + FixImpact = FixImpact.NonBreaking, + GroupDescription = "", + Description = "Invalid file encoding 'invalidFileEncoding' detected. QAction ID 'qactionId'.", + Details = "Each file in a QAction needs to be UTF-8 as otherwise certain characters could be converted to invalid characters.", + HasCodeFix = true, + }; + + // Assert + message.Should().BeEquivalentTo(expected, Generic.ExcludePropertiesForErrorMessages); + } + } + + [TestClass] + public class Attribute + { + private readonly IRoot check = new CheckFileEncoding(); + + [TestMethod] + public void QAction_CheckFileEncoding_CheckCategory() => Generic.CheckCategory(check, Category.QAction); + + [TestMethod] + public void QAction_CheckFileEncoding_CheckId() => Generic.CheckId(check, CheckId.CheckFileEncoding); + } +} \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding.xml b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding.xml new file mode 100644 index 00000000..ecc4abbf --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Directory.Build.props b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Directory.Build.props new file mode 100644 index 00000000..7c08a058 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Directory.Build.props @@ -0,0 +1,9 @@ + + + x86 + true + + + $(DefineConstants);DCFv1;DBInfo;ALARM_SQUASHING + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Internal/.editorconfig b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Internal/.editorconfig new file mode 100644 index 00000000..a612a7a0 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Internal/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +indent_style = tab +indent_size = 4 +tab_width = 4 +end_of_line = crlf +trim_trailing_whitespace = true + +[*.cs] +dotnet_sort_system_directives_first = true \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/InvalidFileEncoding.sln b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/InvalidFileEncoding.sln new file mode 100644 index 00000000..01146865 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/InvalidFileEncoding.sln @@ -0,0 +1,56 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33502.453 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Internal", "Internal", "{5FDED38C-902D-4C4E-B1E5-6553D226B172}" + ProjectSection(SolutionItems) = preProject + Internal\.editorconfig = Internal\.editorconfig + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "QActions", "QActions", "{AC3D9A76-D651-4315-8089-E2F4D03C16EE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3EBD5AC2-944D-4D63-B287-35C58321507F}" + ProjectSection(SolutionItems) = preProject + protocol.xml = protocol.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{04305366-A409-4B24-87F4-754FC9135DA1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_Helper", "QAction_Helper\QAction_Helper.csproj", "{7587A42C-1C69-454F-B74A-1E791305FEFE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_1", "QAction_1\QAction_1.csproj", "{9C642B48-58B3-4766-8EC3-47F60FFDF1A8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_2", "QAction_2\QAction_2.csproj", "{A6F83612-702E-4AAD-96EE-B90495C56516}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Release|Any CPU.Build.0 = Release|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Release|Any CPU.Build.0 = Release|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {7587A42C-1C69-454F-B74A-1E791305FEFE} = {5FDED38C-902D-4C4E-B1E5-6553D226B172} + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8} = {AC3D9A76-D651-4315-8089-E2F4D03C16EE} + {A6F83612-702E-4AAD-96EE-B90495C56516} = {AC3D9A76-D651-4315-8089-E2F4D03C16EE} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5992B01D-BB76-478F-B72B-91AB66E2FA29} + EndGlobalSection +EndGlobal diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.cs new file mode 100644 index 00000000..0d6ebd12 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.cs @@ -0,0 +1,15 @@ +namespace Skyline.Protocol +{ + using System; + using System.Collections.Generic; + using System.Globalization; + using System.Text; + + namespace MyExtension + { + public class MyClass + { + private string test = "╚╦"; + } + } +} \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.csproj new file mode 100644 index 00000000..1b1ab681 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.csproj @@ -0,0 +1,18 @@ + + + net48 + True + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.cs new file mode 100644 index 00000000..7fc1b5cd --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; + +using Skyline.DataMiner.Scripting; + +/// +/// DataMiner QAction Class: After Startup. +/// +public static class QAction +{ + /// + /// The QAction entry point. + /// + /// Link with SLProtocol process. + public static void Run(SLProtocol protocol) + { + try + { + + } + catch (Exception ex) + { + protocol.Log($"QA{protocol.QActionID}|{protocol.GetTriggerParameter()}|Run|Exception thrown:{Environment.NewLine}{ex}", LogType.Error, LogLevel.NoLogging); + } + } +} diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.csproj new file mode 100644 index 00000000..bc491e17 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.csproj @@ -0,0 +1,18 @@ + + + net48 + True + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/Directory.Build.props b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/Directory.Build.props new file mode 100644 index 00000000..60bd6c14 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/Directory.Build.props @@ -0,0 +1,5 @@ + + + x86 + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs new file mode 100644 index 00000000..2d1e2ebc --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs @@ -0,0 +1,35 @@ +// This is auto-generated code by DIS. Do not modify. +using System.ComponentModel; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +namespace Skyline.DataMiner.Scripting +{ +public static class Parameter +{ + public class Write + { + } +} +public class WriteParameters +{ + public SLProtocolExt Protocol; + public WriteParameters(SLProtocolExt protocol) + { + Protocol = protocol; + } +} +public interface SLProtocolExt : SLProtocol +{ + WriteParameters Write { get; set; } +} +public class ConcreteSLProtocolExt : ConcreteSLProtocol, SLProtocolExt +{ + public WriteParameters Write { get; set; } + public ConcreteSLProtocolExt() + { + Write = new WriteParameters(this); + } +} +} diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj new file mode 100644 index 00000000..c1144e71 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj @@ -0,0 +1,15 @@ + + + net48 + Skyline Communications + © Skyline Communications + + + + + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/protocol.xml b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/protocol.xml new file mode 100644 index 00000000..8bbb1378 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/protocol.xml @@ -0,0 +1,10 @@ + + + Invalid Connector + 1.0.0.1 + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding.xml b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding.xml new file mode 100644 index 00000000..ecc4abbf --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/Directory.Build.props b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/Directory.Build.props new file mode 100644 index 00000000..7c08a058 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/Directory.Build.props @@ -0,0 +1,9 @@ + + + x86 + true + + + $(DefineConstants);DCFv1;DBInfo;ALARM_SQUASHING + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/Internal/.editorconfig b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/Internal/.editorconfig new file mode 100644 index 00000000..a612a7a0 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/Internal/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +indent_style = tab +indent_size = 4 +tab_width = 4 +end_of_line = crlf +trim_trailing_whitespace = true + +[*.cs] +dotnet_sort_system_directives_first = true \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/InvalidFileEncoding.sln b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/InvalidFileEncoding.sln new file mode 100644 index 00000000..01146865 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/InvalidFileEncoding.sln @@ -0,0 +1,56 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33502.453 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Internal", "Internal", "{5FDED38C-902D-4C4E-B1E5-6553D226B172}" + ProjectSection(SolutionItems) = preProject + Internal\.editorconfig = Internal\.editorconfig + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "QActions", "QActions", "{AC3D9A76-D651-4315-8089-E2F4D03C16EE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3EBD5AC2-944D-4D63-B287-35C58321507F}" + ProjectSection(SolutionItems) = preProject + protocol.xml = protocol.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{04305366-A409-4B24-87F4-754FC9135DA1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_Helper", "QAction_Helper\QAction_Helper.csproj", "{7587A42C-1C69-454F-B74A-1E791305FEFE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_1", "QAction_1\QAction_1.csproj", "{9C642B48-58B3-4766-8EC3-47F60FFDF1A8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_2", "QAction_2\QAction_2.csproj", "{A6F83612-702E-4AAD-96EE-B90495C56516}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Release|Any CPU.Build.0 = Release|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Release|Any CPU.Build.0 = Release|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {7587A42C-1C69-454F-B74A-1E791305FEFE} = {5FDED38C-902D-4C4E-B1E5-6553D226B172} + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8} = {AC3D9A76-D651-4315-8089-E2F4D03C16EE} + {A6F83612-702E-4AAD-96EE-B90495C56516} = {AC3D9A76-D651-4315-8089-E2F4D03C16EE} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5992B01D-BB76-478F-B72B-91AB66E2FA29} + EndGlobalSection +EndGlobal diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_1/QAction_1.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_1/QAction_1.cs new file mode 100644 index 0000000000000000000000000000000000000000..61c92679e81b87af193c0b9f2bf41fd927458a74 GIT binary patch literal 550 zcma)3O$&lR5PjEz{=*`8^$$cR2~R;#r*67bNPeLfS@_qhH@j?TbdY7-nPuMd&71eD zK#UwmG^m(qW(qr8&>=&Lf^~o`YLsXhnvr3FIiBXL*e&NuymX%px?|N6nPWMrD?n&? zGh#H6DXW4U0V2MLhMI4BGFwEAB@)gfGdy@Z&Z&C#{O6r0+b{FFN&oq^p<8RyFKWdJ z(LY3u-Ev$NeM^i+O@7TRCc0rRjN!K)GC8beoIy@y{JEJqWq;znIA-@Dn~)cU6~n{9 QKl$E|myWd`skT**4+)l2XaE2J literal 0 HcmV?d00001 diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_1/QAction_1.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_1/QAction_1.csproj new file mode 100644 index 00000000..1b1ab681 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_1/QAction_1.csproj @@ -0,0 +1,18 @@ + + + net48 + True + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_2/QAction_2.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_2/QAction_2.cs new file mode 100644 index 00000000..7fc1b5cd --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_2/QAction_2.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; + +using Skyline.DataMiner.Scripting; + +/// +/// DataMiner QAction Class: After Startup. +/// +public static class QAction +{ + /// + /// The QAction entry point. + /// + /// Link with SLProtocol process. + public static void Run(SLProtocol protocol) + { + try + { + + } + catch (Exception ex) + { + protocol.Log($"QA{protocol.QActionID}|{protocol.GetTriggerParameter()}|Run|Exception thrown:{Environment.NewLine}{ex}", LogType.Error, LogLevel.NoLogging); + } + } +} diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_2/QAction_2.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_2/QAction_2.csproj new file mode 100644 index 00000000..bc491e17 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_2/QAction_2.csproj @@ -0,0 +1,18 @@ + + + net48 + True + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/Directory.Build.props b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/Directory.Build.props new file mode 100644 index 00000000..60bd6c14 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/Directory.Build.props @@ -0,0 +1,5 @@ + + + x86 + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs new file mode 100644 index 00000000..2d1e2ebc --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs @@ -0,0 +1,35 @@ +// This is auto-generated code by DIS. Do not modify. +using System.ComponentModel; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +namespace Skyline.DataMiner.Scripting +{ +public static class Parameter +{ + public class Write + { + } +} +public class WriteParameters +{ + public SLProtocolExt Protocol; + public WriteParameters(SLProtocolExt protocol) + { + Protocol = protocol; + } +} +public interface SLProtocolExt : SLProtocol +{ + WriteParameters Write { get; set; } +} +public class ConcreteSLProtocolExt : ConcreteSLProtocol, SLProtocolExt +{ + public WriteParameters Write { get; set; } + public ConcreteSLProtocolExt() + { + Write = new WriteParameters(this); + } +} +} diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj new file mode 100644 index 00000000..c1144e71 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj @@ -0,0 +1,15 @@ + + + net48 + Skyline Communications + © Skyline Communications + + + + + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/protocol.xml b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/protocol.xml new file mode 100644 index 00000000..8bbb1378 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Invalid/InvalidFileEncoding/protocol.xml @@ -0,0 +1,10 @@ + + + Invalid Connector + 1.0.0.1 + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid.xml b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid.xml new file mode 100644 index 00000000..ecc4abbf --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Directory.Build.props b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Directory.Build.props new file mode 100644 index 00000000..7c08a058 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Directory.Build.props @@ -0,0 +1,9 @@ + + + x86 + true + + + $(DefineConstants);DCFv1;DBInfo;ALARM_SQUASHING + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Internal/.editorconfig b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Internal/.editorconfig new file mode 100644 index 00000000..a612a7a0 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Internal/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +indent_style = tab +indent_size = 4 +tab_width = 4 +end_of_line = crlf +trim_trailing_whitespace = true + +[*.cs] +dotnet_sort_system_directives_first = true \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_1/QAction_1.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_1/QAction_1.cs new file mode 100644 index 00000000..13ee4a7c --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_1/QAction_1.cs @@ -0,0 +1,14 @@ +namespace Skyline.Protocol +{ + using System; + using System.Collections.Generic; + using System.Globalization; + using System.Text; + + namespace MyExtension + { + public class MyClass + { + } + } +} \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_1/QAction_1.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_1/QAction_1.csproj new file mode 100644 index 00000000..1b1ab681 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_1/QAction_1.csproj @@ -0,0 +1,18 @@ + + + net48 + True + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_2/QAction_2.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_2/QAction_2.cs new file mode 100644 index 00000000..7fc1b5cd --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_2/QAction_2.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; + +using Skyline.DataMiner.Scripting; + +/// +/// DataMiner QAction Class: After Startup. +/// +public static class QAction +{ + /// + /// The QAction entry point. + /// + /// Link with SLProtocol process. + public static void Run(SLProtocol protocol) + { + try + { + + } + catch (Exception ex) + { + protocol.Log($"QA{protocol.QActionID}|{protocol.GetTriggerParameter()}|Run|Exception thrown:{Environment.NewLine}{ex}", LogType.Error, LogLevel.NoLogging); + } + } +} diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_2/QAction_2.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_2/QAction_2.csproj new file mode 100644 index 00000000..bc491e17 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_2/QAction_2.csproj @@ -0,0 +1,18 @@ + + + net48 + True + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/Directory.Build.props b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/Directory.Build.props new file mode 100644 index 00000000..60bd6c14 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/Directory.Build.props @@ -0,0 +1,5 @@ + + + x86 + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/QAction_Helper.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/QAction_Helper.cs new file mode 100644 index 00000000..2d1e2ebc --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/QAction_Helper.cs @@ -0,0 +1,35 @@ +// This is auto-generated code by DIS. Do not modify. +using System.ComponentModel; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +namespace Skyline.DataMiner.Scripting +{ +public static class Parameter +{ + public class Write + { + } +} +public class WriteParameters +{ + public SLProtocolExt Protocol; + public WriteParameters(SLProtocolExt protocol) + { + Protocol = protocol; + } +} +public interface SLProtocolExt : SLProtocol +{ + WriteParameters Write { get; set; } +} +public class ConcreteSLProtocolExt : ConcreteSLProtocol, SLProtocolExt +{ + public WriteParameters Write { get; set; } + public ConcreteSLProtocolExt() + { + Write = new WriteParameters(this); + } +} +} diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/QAction_Helper.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/QAction_Helper.csproj new file mode 100644 index 00000000..c1144e71 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/QAction_Helper/QAction_Helper.csproj @@ -0,0 +1,15 @@ + + + net48 + Skyline Communications + © Skyline Communications + + + + + + + + + + \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Valid.sln b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Valid.sln new file mode 100644 index 00000000..01146865 --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/Valid.sln @@ -0,0 +1,56 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33502.453 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Internal", "Internal", "{5FDED38C-902D-4C4E-B1E5-6553D226B172}" + ProjectSection(SolutionItems) = preProject + Internal\.editorconfig = Internal\.editorconfig + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "QActions", "QActions", "{AC3D9A76-D651-4315-8089-E2F4D03C16EE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3EBD5AC2-944D-4D63-B287-35C58321507F}" + ProjectSection(SolutionItems) = preProject + protocol.xml = protocol.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{04305366-A409-4B24-87F4-754FC9135DA1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_Helper", "QAction_Helper\QAction_Helper.csproj", "{7587A42C-1C69-454F-B74A-1E791305FEFE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_1", "QAction_1\QAction_1.csproj", "{9C642B48-58B3-4766-8EC3-47F60FFDF1A8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_2", "QAction_2\QAction_2.csproj", "{A6F83612-702E-4AAD-96EE-B90495C56516}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7587A42C-1C69-454F-B74A-1E791305FEFE}.Release|Any CPU.Build.0 = Release|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Release|Any CPU.Build.0 = Release|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6F83612-702E-4AAD-96EE-B90495C56516}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {7587A42C-1C69-454F-B74A-1E791305FEFE} = {5FDED38C-902D-4C4E-B1E5-6553D226B172} + {9C642B48-58B3-4766-8EC3-47F60FFDF1A8} = {AC3D9A76-D651-4315-8089-E2F4D03C16EE} + {A6F83612-702E-4AAD-96EE-B90495C56516} = {AC3D9A76-D651-4315-8089-E2F4D03C16EE} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5992B01D-BB76-478F-B72B-91AB66E2FA29} + EndGlobalSection +EndGlobal diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/protocol.xml b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/protocol.xml new file mode 100644 index 00000000..7804aa2c --- /dev/null +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Validate/Valid/Valid/protocol.xml @@ -0,0 +1,10 @@ + + + Valid Connector + 1.0.0.1 + + + + + + \ No newline at end of file From 2a0a42f67f6e72c39b47ca7eb697e0494799245f Mon Sep 17 00:00:00 2001 From: Michiel Oda Date: Tue, 4 Jun 2024 10:14:36 +0200 Subject: [PATCH 2/8] Disable codefix test as the fix breaks the tests --- .../CheckFileEncoding/CheckFileEncoding.cs | 18 +----- .../InvalidFileEncoding/Directory.Build.props | 9 --- .../Internal/.editorconfig | 11 ---- .../InvalidFileEncoding.sln | 56 ------------------- .../QAction_1/QAction_1.cs | 15 ----- .../QAction_1/QAction_1.csproj | 18 ------ .../QAction_2/QAction_2.cs | 28 ---------- .../QAction_2/QAction_2.csproj | 18 ------ .../QAction_Helper/Directory.Build.props | 5 -- .../QAction_Helper/QAction_Helper.cs | 35 ------------ .../QAction_Helper/QAction_Helper.csproj | 15 ----- .../Codefix/InvalidFileEncoding/protocol.xml | 10 ---- 12 files changed, 3 insertions(+), 235 deletions(-) delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Directory.Build.props delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Internal/.editorconfig delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/InvalidFileEncoding.sln delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.cs delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.csproj delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.cs delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.csproj delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/Directory.Build.props delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj delete mode 100644 ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/protocol.xml diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs index 3de03056..dd4e3040 100644 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs @@ -21,7 +21,7 @@ public class Validate #region Valid Checks [TestMethod] - [Ignore] + [Ignore("Isn't really relevant and causes other checks to fail")] public void QAction_CheckFileEncoding_Valid_Xml() { Generic.ValidateData data = new Generic.ValidateData @@ -53,7 +53,7 @@ public void QAction_CheckFileEncoding_Valid() #region Invalid Checks [TestMethod] - [Ignore] + [Ignore("Isn't really relevant and causes other checks to fail")] public void QAction_CheckFileEncoding_InvalidFileEncoding_Xml() { Generic.ValidateData data = new Generic.ValidateData @@ -95,24 +95,12 @@ public class CodeFix private readonly ICodeFix check = new CheckFileEncoding(); [TestMethod] - [Ignore] - public void QAction_CheckFileEncoding_InvalidFileEncoding_Xml() - { - Generic.FixData data = new Generic.FixData - { - FileNameBase = "InvalidFileEncoding", - }; - - Generic.Fix(check, data); - } - - [TestMethod] + [Ignore("Unable to test as actual files are being modified, breaking the test")] public void QAction_CheckFileEncoding_InvalidFileEncoding() { Generic.FixData data = new Generic.FixData { FileNameBase = "InvalidFileEncoding", - //IsSolution = true, }; Generic.Fix(check, data); diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Directory.Build.props b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Directory.Build.props deleted file mode 100644 index 7c08a058..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Directory.Build.props +++ /dev/null @@ -1,9 +0,0 @@ - - - x86 - true - - - $(DefineConstants);DCFv1;DBInfo;ALARM_SQUASHING - - \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Internal/.editorconfig b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Internal/.editorconfig deleted file mode 100644 index a612a7a0..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/Internal/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -root = true - -[*] -indent_style = tab -indent_size = 4 -tab_width = 4 -end_of_line = crlf -trim_trailing_whitespace = true - -[*.cs] -dotnet_sort_system_directives_first = true \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/InvalidFileEncoding.sln b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/InvalidFileEncoding.sln deleted file mode 100644 index 01146865..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/InvalidFileEncoding.sln +++ /dev/null @@ -1,56 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.5.33502.453 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Internal", "Internal", "{5FDED38C-902D-4C4E-B1E5-6553D226B172}" - ProjectSection(SolutionItems) = preProject - Internal\.editorconfig = Internal\.editorconfig - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "QActions", "QActions", "{AC3D9A76-D651-4315-8089-E2F4D03C16EE}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3EBD5AC2-944D-4D63-B287-35C58321507F}" - ProjectSection(SolutionItems) = preProject - protocol.xml = protocol.xml - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{04305366-A409-4B24-87F4-754FC9135DA1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_Helper", "QAction_Helper\QAction_Helper.csproj", "{7587A42C-1C69-454F-B74A-1E791305FEFE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_1", "QAction_1\QAction_1.csproj", "{9C642B48-58B3-4766-8EC3-47F60FFDF1A8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QAction_2", "QAction_2\QAction_2.csproj", "{A6F83612-702E-4AAD-96EE-B90495C56516}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7587A42C-1C69-454F-B74A-1E791305FEFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7587A42C-1C69-454F-B74A-1E791305FEFE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7587A42C-1C69-454F-B74A-1E791305FEFE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7587A42C-1C69-454F-B74A-1E791305FEFE}.Release|Any CPU.Build.0 = Release|Any CPU - {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9C642B48-58B3-4766-8EC3-47F60FFDF1A8}.Release|Any CPU.Build.0 = Release|Any CPU - {A6F83612-702E-4AAD-96EE-B90495C56516}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A6F83612-702E-4AAD-96EE-B90495C56516}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A6F83612-702E-4AAD-96EE-B90495C56516}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A6F83612-702E-4AAD-96EE-B90495C56516}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {7587A42C-1C69-454F-B74A-1E791305FEFE} = {5FDED38C-902D-4C4E-B1E5-6553D226B172} - {9C642B48-58B3-4766-8EC3-47F60FFDF1A8} = {AC3D9A76-D651-4315-8089-E2F4D03C16EE} - {A6F83612-702E-4AAD-96EE-B90495C56516} = {AC3D9A76-D651-4315-8089-E2F4D03C16EE} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {5992B01D-BB76-478F-B72B-91AB66E2FA29} - EndGlobalSection -EndGlobal diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.cs deleted file mode 100644 index 0d6ebd12..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Skyline.Protocol -{ - using System; - using System.Collections.Generic; - using System.Globalization; - using System.Text; - - namespace MyExtension - { - public class MyClass - { - private string test = "╚╦"; - } - } -} \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.csproj deleted file mode 100644 index 1b1ab681..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_1/QAction_1.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - net48 - True - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.cs deleted file mode 100644 index 7fc1b5cd..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Text; - -using Skyline.DataMiner.Scripting; - -/// -/// DataMiner QAction Class: After Startup. -/// -public static class QAction -{ - /// - /// The QAction entry point. - /// - /// Link with SLProtocol process. - public static void Run(SLProtocol protocol) - { - try - { - - } - catch (Exception ex) - { - protocol.Log($"QA{protocol.QActionID}|{protocol.GetTriggerParameter()}|Run|Exception thrown:{Environment.NewLine}{ex}", LogType.Error, LogLevel.NoLogging); - } - } -} diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.csproj deleted file mode 100644 index bc491e17..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_2/QAction_2.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - net48 - True - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/Directory.Build.props b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/Directory.Build.props deleted file mode 100644 index 60bd6c14..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/Directory.Build.props +++ /dev/null @@ -1,5 +0,0 @@ - - - x86 - - \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs deleted file mode 100644 index 2d1e2ebc..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.cs +++ /dev/null @@ -1,35 +0,0 @@ -// This is auto-generated code by DIS. Do not modify. -using System.ComponentModel; -using System.Collections; -using System.Collections.Generic; -using System.Linq; - -namespace Skyline.DataMiner.Scripting -{ -public static class Parameter -{ - public class Write - { - } -} -public class WriteParameters -{ - public SLProtocolExt Protocol; - public WriteParameters(SLProtocolExt protocol) - { - Protocol = protocol; - } -} -public interface SLProtocolExt : SLProtocol -{ - WriteParameters Write { get; set; } -} -public class ConcreteSLProtocolExt : ConcreteSLProtocol, SLProtocolExt -{ - public WriteParameters Write { get; set; } - public ConcreteSLProtocolExt() - { - Write = new WriteParameters(this); - } -} -} diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj deleted file mode 100644 index c1144e71..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/QAction_Helper/QAction_Helper.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - net48 - Skyline Communications - © Skyline Communications - - - - - - - - - - \ No newline at end of file diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/protocol.xml b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/protocol.xml deleted file mode 100644 index 8bbb1378..00000000 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/Samples/Codefix/InvalidFileEncoding/protocol.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - Invalid Connector - 1.0.0.1 - - - - - - \ No newline at end of file From 11a6ee047826f2136f5c804969f6c702664672d3 Mon Sep 17 00:00:00 2001 From: Michiel Oda Date: Tue, 4 Jun 2024 11:13:26 +0200 Subject: [PATCH 3/8] Improve error message & taking in account bin/obj folder --- Protocol/Common/ValidatorContext.cs | 5 ++++ .../QActions/QAction/CheckFileEncoding.cs | 4 +-- Protocol/ErrorMessages.xml | 5 ++-- .../Protocol/QActions/CheckAssemblies.cs | 5 +--- .../CSharpCoreInterAppBrokerSupport.cs | 5 +--- .../QActions/QAction/CheckFileEncoding.cs | 29 +++++++++++++++++-- .../CheckFileEncoding/CheckFileEncoding.cs | 6 ++-- 7 files changed, 41 insertions(+), 18 deletions(-) diff --git a/Protocol/Common/ValidatorContext.cs b/Protocol/Common/ValidatorContext.cs index dcd767df..dfac2d7f 100644 --- a/Protocol/Common/ValidatorContext.cs +++ b/Protocol/Common/ValidatorContext.cs @@ -39,5 +39,10 @@ public ValidatorContext(IProtocolInputData input, ValidatorSettings validatorSet public CrossData.CrossData CrossData { get; } = new CrossData.CrossData(); internal HelperCollection Helpers { get; } + + public bool HasQActionsAndIsSolution => + ProtocolModel?.Protocol?.QActions != null && + InputData?.QActionCompilationModel?.IsSolutionBased == true && + CompiledQActions != null; } } \ No newline at end of file diff --git a/Protocol/Error Messages/Protocol/QActions/QAction/CheckFileEncoding.cs b/Protocol/Error Messages/Protocol/QActions/QAction/CheckFileEncoding.cs index 5b0f85ca..94e85416 100644 --- a/Protocol/Error Messages/Protocol/QActions/QAction/CheckFileEncoding.cs +++ b/Protocol/Error Messages/Protocol/QActions/QAction/CheckFileEncoding.cs @@ -12,7 +12,7 @@ namespace Skyline.DataMiner.CICD.Validators.Protocol.Tests.Protocol.QActions.QAc internal static class Error { - public static IValidationResult InvalidFileEncoding(IValidate test, IReadable referenceNode, IReadable positionNode, string invalidFileEncoding, string qactionId) + public static IValidationResult InvalidFileEncoding(IValidate test, IReadable referenceNode, IReadable positionNode, string invalidFileEncoding, string fileName, string qactionId) { return new ValidationResult { @@ -26,7 +26,7 @@ public static IValidationResult InvalidFileEncoding(IValidate test, IReadable re Source = Source.Validator, FixImpact = FixImpact.NonBreaking, GroupDescription = "", - Description = String.Format("Invalid file encoding '{0}' detected. QAction ID '{1}'.", invalidFileEncoding, qactionId), + Description = String.Format("Invalid file encoding '{0}' detected in file '{1}'. QAction ID '{2}'.", invalidFileEncoding, fileName, qactionId), HowToFix = "", ExampleCode = "", Details = "Each file in a QAction needs to be UTF-8 as otherwise certain characters could be converted to invalid characters.", diff --git a/Protocol/ErrorMessages.xml b/Protocol/ErrorMessages.xml index 8ef6d8ac..c1ca0c5e 100644 --- a/Protocol/ErrorMessages.xml +++ b/Protocol/ErrorMessages.xml @@ -12135,10 +12135,11 @@ InvalidFileEncoding - Invalid file encoding '{0}' detected. QAction ID '{1}'. + Invalid file encoding '{0}' detected in file '{1}'. QAction ID '{2}'. invalidFileEncoding - qactionId + fileName + qactionId Minor diff --git a/Protocol/Tests/Protocol/QActions/CheckAssemblies.cs b/Protocol/Tests/Protocol/QActions/CheckAssemblies.cs index deee1d9c..8f1792b1 100644 --- a/Protocol/Tests/Protocol/QActions/CheckAssemblies.cs +++ b/Protocol/Tests/Protocol/QActions/CheckAssemblies.cs @@ -20,10 +20,7 @@ public List Validate(ValidatorContext context) { List results = new List(); - if (context?.ProtocolModel?.Protocol?.QActions == null || - context.InputData?.QActionCompilationModel == null || - !context.InputData.QActionCompilationModel.IsSolutionBased || - context.CompiledQActions == null) + if (!context.HasQActionsAndIsSolution) { // Early skip when no QActions are present or when it is not solution based. return results; diff --git a/Protocol/Tests/Protocol/QActions/QAction/CSharpCoreInterAppBrokerSupport.cs b/Protocol/Tests/Protocol/QActions/QAction/CSharpCoreInterAppBrokerSupport.cs index 43fac0a9..9ceb044e 100644 --- a/Protocol/Tests/Protocol/QActions/QAction/CSharpCoreInterAppBrokerSupport.cs +++ b/Protocol/Tests/Protocol/QActions/QAction/CSharpCoreInterAppBrokerSupport.cs @@ -29,10 +29,7 @@ public List Validate(ValidatorContext context) { List results = new List(); - if (context?.ProtocolModel?.Protocol?.QActions == null || - context.InputData?.QActionCompilationModel == null || - !context.InputData.QActionCompilationModel.IsSolutionBased || - context.CompiledQActions == null) + if (!context.HasQActionsAndIsSolution) { // Early skip when no QActions are present or when it is not solution based. return results; diff --git a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs index 5e4a1c65..34ef0f35 100644 --- a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs +++ b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs @@ -2,6 +2,7 @@ namespace Skyline.DataMiner.CICD.Validators.Protocol.Tests.Protocol.QActions.QAc { using System.Collections.Generic; using System.IO; + using System.Linq; using System.Text; using Skyline.DataMiner.CICD.FileSystem; @@ -21,12 +22,23 @@ public List Validate(ValidatorContext context) { List results = new List(); + if (!context.HasQActionsAndIsSolution) + { + // Early skip when no QActions are present or when it is not solution based. + return results; + } + foreach ((CompiledQActionProject projectData, IQActionsQAction qaction) in context.EachQActionProject(true)) { var project = projectData.Project; string projectDirectory = FileSystem.Instance.Path.GetDirectoryName(project.FilePath); - string[] csharpFiles = FileSystem.Instance.Directory.GetFiles(projectDirectory, "*.cs", SearchOption.AllDirectories); + string binFolder = FileSystem.Instance.Path.Combine(projectDirectory, "bin"); + string objFolder = FileSystem.Instance.Path.Combine(projectDirectory, "obj"); + + // Get all C# files whilst filtering out the bin & obj folder + var csharpFiles = FileSystem.Instance.Directory.EnumerateFiles(projectDirectory, "*.cs", SearchOption.AllDirectories) + .Where(file => !file.StartsWith(binFolder) && !file.StartsWith(objFolder)).ToList(); foreach (string csharpFile in csharpFiles) { @@ -37,7 +49,8 @@ public List Validate(ValidatorContext context) if (!sr.CurrentEncoding.Equals(Encoding.UTF8)) { - results.Add(Error.InvalidFileEncoding(this, qaction, qaction, sr.CurrentEncoding.EncodingName, qaction.Id.RawValue) + string fileName = FileSystem.Instance.Path.GetFileName(csharpFile); + results.Add(Error.InvalidFileEncoding(this, qaction, qaction, sr.CurrentEncoding.EncodingName, fileName, qaction.Id.RawValue) .WithExtraData(ExtraData.InvalidFileEncoding, csharpFile)); } } @@ -54,7 +67,9 @@ public ICodeFixResult Fix(CodeFixContext context) switch (context.Result.ErrorId) { case ErrorIds.InvalidFileEncoding: - if (context.Result.ExtraData.TryGetValue(ExtraData.InvalidFileEncoding, out object csharpFile) && csharpFile is string filePath) + if (context.Result.ExtraData.TryGetValue(ExtraData.InvalidFileEncoding, out object csharpFile) && + csharpFile is string filePath && + FileSystem.Instance.File.Exists(filePath)) { string tempPath = Path.GetTempFileName(); using (StreamReader sr = new StreamReader(filePath)) @@ -70,9 +85,17 @@ public ICodeFixResult Fix(CodeFixContext context) sw.Write(buffer, 0, charsRead); } } + File.Delete(filePath); File.Move(tempPath, filePath); + + result.Success = true; + } + else + { + result.Message = "Unable to locate file."; } + break; default: diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs index dd4e3040..5da539a3 100644 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs @@ -79,7 +79,7 @@ public void QAction_CheckFileEncoding_InvalidFileEncoding() IsSolution = true, ExpectedResults = new List { - Error.InvalidFileEncoding(null, null, null, "Unicode", "1"), + Error.InvalidFileEncoding(null, null, null, "Unicode", "QAction_1.cs", "1"), } }; @@ -114,7 +114,7 @@ public class ErrorMessages public void QAction_CheckFileEncoding_InvalidFileEncoding() { // Create ErrorMessage - var message = Error.InvalidFileEncoding(null, null, null, "invalidFileEncoding", "qactionId"); + var message = Error.InvalidFileEncoding(null, null, null, "Unicode", "QAction_1", "1"); var expected = new ValidationResult { @@ -122,7 +122,7 @@ public void QAction_CheckFileEncoding_InvalidFileEncoding() Certainty = Certainty.Certain, FixImpact = FixImpact.NonBreaking, GroupDescription = "", - Description = "Invalid file encoding 'invalidFileEncoding' detected. QAction ID 'qactionId'.", + Description = "Invalid file encoding 'Unicode' detected in file 'QAction_1.cs'. QAction ID '1'.", Details = "Each file in a QAction needs to be UTF-8 as otherwise certain characters could be converted to invalid characters.", HasCodeFix = true, }; From 74b65d0e09a491ad85527ea3a804725c9b18d350 Mon Sep 17 00:00:00 2001 From: Michiel Oda Date: Tue, 4 Jun 2024 11:28:26 +0200 Subject: [PATCH 4/8] Fix unit test --- .../QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs index 5da539a3..809602bd 100644 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs @@ -114,7 +114,7 @@ public class ErrorMessages public void QAction_CheckFileEncoding_InvalidFileEncoding() { // Create ErrorMessage - var message = Error.InvalidFileEncoding(null, null, null, "Unicode", "QAction_1", "1"); + var message = Error.InvalidFileEncoding(null, null, null, "Unicode", "QAction_1.cs", "1"); var expected = new ValidationResult { From ad0d9b28d9fc10c49d677c24bdda8c08125672c5 Mon Sep 17 00:00:00 2001 From: Michiel Oda Date: Tue, 4 Jun 2024 11:52:58 +0200 Subject: [PATCH 5/8] Fix SonarCloud remark --- .../Tests/Protocol/QActions/QAction/CheckFileEncoding.cs | 6 ++++-- .../QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs | 3 +-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs index 34ef0f35..564de0e2 100644 --- a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs +++ b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs @@ -63,15 +63,16 @@ public List Validate(ValidatorContext context) public ICodeFixResult Fix(CodeFixContext context) { CodeFixResult result = new CodeFixResult(); + var fs = FileSystem.Instance; switch (context.Result.ErrorId) { case ErrorIds.InvalidFileEncoding: if (context.Result.ExtraData.TryGetValue(ExtraData.InvalidFileEncoding, out object csharpFile) && csharpFile is string filePath && - FileSystem.Instance.File.Exists(filePath)) + fs.File.Exists(filePath)) { - string tempPath = Path.GetTempFileName(); + string tempPath = fs.Path.Combine(fs.Path.GetTempPath(), fs.Path.GetRandomFileName()); using (StreamReader sr = new StreamReader(filePath)) using (StreamWriter sw = new StreamWriter(tempPath, false, Encoding.UTF8)) { @@ -86,6 +87,7 @@ csharpFile is string filePath && } } + // TODO: With update FileSystem, swap to use the ones in FileSystem. File.Delete(filePath); File.Move(tempPath, filePath); diff --git a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs index 809602bd..613cd58c 100644 --- a/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs +++ b/ProtocolTests/Protocol/QActions/QAction/CheckFileEncoding/CheckFileEncoding.cs @@ -1,12 +1,11 @@ namespace ProtocolTests.Protocol.QActions.QAction.CheckFileEncoding { - using System; using System.Collections.Generic; using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; - + using Skyline.DataMiner.CICD.Validators.Common.Interfaces; using Skyline.DataMiner.CICD.Validators.Common.Model; using Skyline.DataMiner.CICD.Validators.Protocol.Common; From 609facff772eddf3d0b34af828abe04342e523a0 Mon Sep 17 00:00:00 2001 From: Michiel Oda Date: Thu, 13 Jun 2024 11:53:24 +0200 Subject: [PATCH 6/8] Update to latest version of FileSystem NuGet --- Common/Common.csproj | 1 + .../Tests/Protocol/QActions/QAction/CheckFileEncoding.cs | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Common/Common.csproj b/Common/Common.csproj index b00476e6..1333b5a4 100644 --- a/Common/Common.csproj +++ b/Common/Common.csproj @@ -19,6 +19,7 @@ + diff --git a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs index 564de0e2..a2831667 100644 --- a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs +++ b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs @@ -87,9 +87,8 @@ csharpFile is string filePath && } } - // TODO: With update FileSystem, swap to use the ones in FileSystem. - File.Delete(filePath); - File.Move(tempPath, filePath); + fs.File.Delete(filePath); + fs.File.Move(tempPath, filePath); result.Success = true; } From 3ff88e4e369e73702d1b94030fc0b1e6b6488348 Mon Sep 17 00:00:00 2001 From: Michiel Oda Date: Thu, 20 Jun 2024 13:13:04 +0200 Subject: [PATCH 7/8] Using the CICD.Parsers --- .../QActions/QAction/CheckFileEncoding.cs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs index a2831667..e6e8053f 100644 --- a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs +++ b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs @@ -8,6 +8,7 @@ namespace Skyline.DataMiner.CICD.Validators.Protocol.Tests.Protocol.QActions.QAc using Skyline.DataMiner.CICD.FileSystem; using Skyline.DataMiner.CICD.Models.Protocol; using Skyline.DataMiner.CICD.Models.Protocol.Read; + using Skyline.DataMiner.CICD.Parsers.Common.VisualStudio.Projects; using Skyline.DataMiner.CICD.Validators.Common.Interfaces; using Skyline.DataMiner.CICD.Validators.Common.Model; using Skyline.DataMiner.CICD.Validators.Protocol.Common; @@ -30,18 +31,11 @@ public List Validate(ValidatorContext context) foreach ((CompiledQActionProject projectData, IQActionsQAction qaction) in context.EachQActionProject(true)) { - var project = projectData.Project; - string projectDirectory = FileSystem.Instance.Path.GetDirectoryName(project.FilePath); - - string binFolder = FileSystem.Instance.Path.Combine(projectDirectory, "bin"); - string objFolder = FileSystem.Instance.Path.Combine(projectDirectory, "obj"); - - // Get all C# files whilst filtering out the bin & obj folder - var csharpFiles = FileSystem.Instance.Directory.EnumerateFiles(projectDirectory, "*.cs", SearchOption.AllDirectories) - .Where(file => !file.StartsWith(binFolder) && !file.StartsWith(objFolder)).ToList(); - - foreach (string csharpFile in csharpFiles) + Project project = Project.Load(projectData.Project.FilePath, projectData.Project.Name); + string projectDirectory = FileSystem.Instance.Path.GetDirectoryName(project.Path); + foreach (ProjectFile file in project.Files) { + string csharpFile = FileSystem.Instance.Path.Combine(projectDirectory, file.Name); using (StreamReader sr = new StreamReader(csharpFile)) { // Have a look in the file, so it can detect the encoding. From 19df8a6ac4375407e3fbff22a48327f89c76b353 Mon Sep 17 00:00:00 2001 From: Michiel Oda Date: Fri, 21 Jun 2024 09:00:10 +0200 Subject: [PATCH 8/8] CR remark --- .../QActions/QAction/CheckFileEncoding.cs | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs index e6e8053f..b29ca1a7 100644 --- a/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs +++ b/Protocol/Tests/Protocol/QActions/QAction/CheckFileEncoding.cs @@ -1,5 +1,6 @@ namespace Skyline.DataMiner.CICD.Validators.Protocol.Tests.Protocol.QActions.QAction.CheckFileEncoding { + using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -31,24 +32,31 @@ public List Validate(ValidatorContext context) foreach ((CompiledQActionProject projectData, IQActionsQAction qaction) in context.EachQActionProject(true)) { - Project project = Project.Load(projectData.Project.FilePath, projectData.Project.Name); - string projectDirectory = FileSystem.Instance.Path.GetDirectoryName(project.Path); - foreach (ProjectFile file in project.Files) + try { - string csharpFile = FileSystem.Instance.Path.Combine(projectDirectory, file.Name); - using (StreamReader sr = new StreamReader(csharpFile)) + Project project = Project.Load(projectData.Project.FilePath, projectData.Project.Name); + string projectDirectory = FileSystem.Instance.Path.GetDirectoryName(project.Path); + foreach (ProjectFile file in project.Files) { - // Have a look in the file, so it can detect the encoding. - sr.Peek(); - - if (!sr.CurrentEncoding.Equals(Encoding.UTF8)) + string csharpFile = FileSystem.Instance.Path.Combine(projectDirectory, file.Name); + using (StreamReader sr = new StreamReader(csharpFile)) { - string fileName = FileSystem.Instance.Path.GetFileName(csharpFile); - results.Add(Error.InvalidFileEncoding(this, qaction, qaction, sr.CurrentEncoding.EncodingName, fileName, qaction.Id.RawValue) - .WithExtraData(ExtraData.InvalidFileEncoding, csharpFile)); + // Have a look in the file, so it can detect the encoding. + sr.Peek(); + + if (!sr.CurrentEncoding.Equals(Encoding.UTF8)) + { + string fileName = FileSystem.Instance.Path.GetFileName(csharpFile); + results.Add(Error.InvalidFileEncoding(this, qaction, qaction, sr.CurrentEncoding.EncodingName, fileName, qaction.Id.RawValue) + .WithExtraData(ExtraData.InvalidFileEncoding, csharpFile)); + } } } } + catch (FileNotFoundException) + { + // Can happen in legacy style projects. In case the file mentioned in the csproj does not exist. + } } return results;