From ac2f33703bfec1210cfe79b9374de10395d04dd3 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Tue, 16 Sep 2025 15:35:42 -0400 Subject: [PATCH 01/16] StringValuesConverter --- src/MDAT/MDAT.csproj | 1 + src/MDAT/MarkdownTest.cs | 1 + src/MDAT/Resolver/StringValuesConverter.cs | 62 +++++++++++++++++++++ src/MDATTests/MarkdownTestAttributeTests.cs | 12 ++++ src/MDATTests/Tests/test-string-values.md | 23 ++++++++ 5 files changed, 99 insertions(+) create mode 100644 src/MDAT/Resolver/StringValuesConverter.cs create mode 100644 src/MDATTests/Tests/test-string-values.md diff --git a/src/MDAT/MDAT.csproj b/src/MDAT/MDAT.csproj index b6eb877..53eb362 100644 --- a/src/MDAT/MDAT.csproj +++ b/src/MDAT/MDAT.csproj @@ -34,6 +34,7 @@ + diff --git a/src/MDAT/MarkdownTest.cs b/src/MDAT/MarkdownTest.cs index 56ee364..9fc6e8e 100644 --- a/src/MDAT/MarkdownTest.cs +++ b/src/MDAT/MarkdownTest.cs @@ -223,6 +223,7 @@ private static IDeserializer NewDeserializer(INodeTypeResolver resolver, string .WithTypeConverter(new ByteArayConverter(), e => e.OnBottom()) .WithTypeConverter(new SystemTextJsonYamlTypeConverter()) .WithTypeInspector(x => new SystemTextJsonTypeInspector(x)) + .WithTypeConverter(new StringValuesConverter()) .WithNodeTypeResolver(resolver) .WithNodeDeserializer(new KeyValuePairNodeDeserializer()) .IgnoreUnmatchedProperties() diff --git a/src/MDAT/Resolver/StringValuesConverter.cs b/src/MDAT/Resolver/StringValuesConverter.cs new file mode 100644 index 0000000..681ede7 --- /dev/null +++ b/src/MDAT/Resolver/StringValuesConverter.cs @@ -0,0 +1,62 @@ +using YamlDotNet.Core.Events; +using YamlDotNet.Core; +using YamlDotNet.Serialization; +using Microsoft.Extensions.Primitives; + +namespace MDAT.Resolver; + +internal class StringValuesConverter : IYamlTypeConverter +{ + private static readonly Type _sequenceStartType = typeof(SequenceStart); + private static readonly Type _sequenceEndType = typeof(SequenceEnd); + + public bool Accepts(Type type) => + type == typeof(StringValues) || type == typeof(StringValues?); + + public object? ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer) + { + List strList = new List(); + + if (parser.Current is Scalar) + { + strList.Add(GetScalarValue(parser)); + } + else if (parser.Current!.GetType() == _sequenceStartType) + { + parser.Consume(); + do + { + strList.Add(GetScalarValue(parser)); + parser.MoveNext(); + } while (parser.Current.GetType() != _sequenceEndType); + } + else + { + parser.MoveNext(); + return null; + } + + parser.MoveNext(); + + return new StringValues(strList.ToArray()); + } + + public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer) + { + throw new NotImplementedException(); + } + + private static string GetScalarValue(IParser parser) + { + Scalar? scalar; + + scalar = parser.Current as Scalar; + + if (scalar == null) + { + throw new InvalidDataException("Failed to retrieve scalar value."); + } + + return scalar.Value; + } +} \ No newline at end of file diff --git a/src/MDATTests/MarkdownTestAttributeTests.cs b/src/MDATTests/MarkdownTestAttributeTests.cs index 9ec8c25..5d6c01e 100644 --- a/src/MDATTests/MarkdownTestAttributeTests.cs +++ b/src/MDATTests/MarkdownTestAttributeTests.cs @@ -1,5 +1,6 @@ using MDATTests; using MDATTests.Models; +using Microsoft.Extensions.Primitives; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using System; @@ -396,6 +397,17 @@ public async Task Test_keypairvalues(List> input, E Task.FromResult(input), expected); } + /// + /// Test StringValues + /// + [TestMethod] + [MarkdownTest("~\\Tests\\{method}.md")] + public async Task Test_StringValues(StringValues input, Expected expected) + { + _ = await Verify.Assert(() => + Task.FromResult(input), expected); + } + /// /// Test class /// diff --git a/src/MDATTests/Tests/test-string-values.md b/src/MDATTests/Tests/test-string-values.md new file mode 100644 index 0000000..dab9b61 --- /dev/null +++ b/src/MDATTests/Tests/test-string-values.md @@ -0,0 +1,23 @@ +# Test_StringValues + +> Test StringValues + +## Case 1 + +Description + +``````yaml +input: + - un + - test +expected: + name: null + generateExpectedData: null + verify: + - type: match + jsonPath: $ + allowAdditionalProperties: false + data: + - un + - test +`````` \ No newline at end of file From 931942800dd904d70ff3065866b5b2179d3468a6 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Wed, 17 Sep 2025 08:29:44 -0400 Subject: [PATCH 02/16] MAJ MSTests --- src/MDAT/MDAT.csproj | 2 +- src/MDATTests/MDATTests.csproj | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/MDAT/MDAT.csproj b/src/MDAT/MDAT.csproj index 53eb362..8e20afb 100644 --- a/src/MDAT/MDAT.csproj +++ b/src/MDAT/MDAT.csproj @@ -36,7 +36,7 @@ - + diff --git a/src/MDATTests/MDATTests.csproj b/src/MDATTests/MDATTests.csproj index bd94373..59a0e0a 100644 --- a/src/MDATTests/MDATTests.csproj +++ b/src/MDATTests/MDATTests.csproj @@ -20,8 +20,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive From 2c3490d11357e813583c143d4fd960501f7433a2 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Thu, 18 Sep 2025 11:24:35 -0400 Subject: [PATCH 03/16] MdatConfig et AddYamlTypeConverter --- src/MDAT/MarkdownTest.cs | 5 +++++ src/MDAT/MdatConfig.cs | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 src/MDAT/MdatConfig.cs diff --git a/src/MDAT/MarkdownTest.cs b/src/MDAT/MarkdownTest.cs index 9fc6e8e..3454321 100644 --- a/src/MDAT/MarkdownTest.cs +++ b/src/MDAT/MarkdownTest.cs @@ -230,6 +230,11 @@ private static IDeserializer NewDeserializer(INodeTypeResolver resolver, string .WithAttemptingUnquotedStringTypeDeserialization() .WithTagMapping(MdatConstants.IncludeTag, typeof(IncludeRef)); + foreach(var typeConverter in MdatConfig.ListeTypeConverter) + { + _ = typeConverter.Where is { } ? deserializer.WithTypeConverter(typeConverter.TypeConverter!, typeConverter.Where) : deserializer.WithTypeConverter(typeConverter.TypeConverter!); + } + var includeNodeDeserializerOptions = new YamlIncludeNodeDeserializerOptions { DirectoryName = directoryName, diff --git a/src/MDAT/MdatConfig.cs b/src/MDAT/MdatConfig.cs new file mode 100644 index 0000000..16397de --- /dev/null +++ b/src/MDAT/MdatConfig.cs @@ -0,0 +1,19 @@ +using YamlDotNet.Serialization; + +namespace MDAT; + +public static class MdatConfig +{ + public static List ListeTypeConverter { get; set; } = new List(); + + public static void AddYamlTypeConverter(IYamlTypeConverter typeConverter, Action>? where = null) + { + ListeTypeConverter.Add(new ConfigTypeConverter() { TypeConverter = typeConverter, Where = where }); + } +} + +public class ConfigTypeConverter +{ + public IYamlTypeConverter? TypeConverter { get; set; } + public Action>? Where { get; set; } +} \ No newline at end of file From c13876397cb7ed8a7e9413d7bff0768d2a95dbec Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Thu, 25 Sep 2025 10:59:17 -0400 Subject: [PATCH 04/16] Test_AddYamlTypeConverter --- src/MDATTests/CustomResolverTests.cs | 26 ++++++++++++++++ .../StringValuesTestYamlTypeConverter .cs | 30 +++++++++++++++++++ .../Tests/test-add-yaml-type-converter.md | 21 +++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 src/MDATTests/CustomResolverTests.cs create mode 100644 src/MDATTests/Resolver/StringValuesTestYamlTypeConverter .cs create mode 100644 src/MDATTests/Tests/test-add-yaml-type-converter.md diff --git a/src/MDATTests/CustomResolverTests.cs b/src/MDATTests/CustomResolverTests.cs new file mode 100644 index 0000000..8c4fa00 --- /dev/null +++ b/src/MDATTests/CustomResolverTests.cs @@ -0,0 +1,26 @@ +using MDAT; +using MDATTests.Resolver; +using Microsoft.Extensions.Primitives; + +namespace MDATTests; + +[TestClass] +public class CustomResolverTests +{ + [ClassInitialize] + public static void ClassInitialize(TestContext testContext) + { + MdatConfig.AddYamlTypeConverter(new StringValuesTestYamlTypeConverter()); + } + + /// + /// Test StringValuesTestYamlTypeConverter + /// + [TestMethod] + [MarkdownTest("~\\Tests\\{method}.md")] + public async Task Test_AddYamlTypeConverter(StringValues input, Expected expected) + { + _ = await Verify.Assert(() => + Task.FromResult(input), expected); + } +} diff --git a/src/MDATTests/Resolver/StringValuesTestYamlTypeConverter .cs b/src/MDATTests/Resolver/StringValuesTestYamlTypeConverter .cs new file mode 100644 index 0000000..f88b254 --- /dev/null +++ b/src/MDATTests/Resolver/StringValuesTestYamlTypeConverter .cs @@ -0,0 +1,30 @@ +using Microsoft.Extensions.Primitives; +using YamlDotNet.Core; +using YamlDotNet.Core.Events; +using YamlDotNet.Serialization; + +namespace MDATTests.Resolver; + +public class StringValuesTestYamlTypeConverter : IYamlTypeConverter +{ + public bool Accepts(Type type) + { + return type == typeof(StringValues); + } + + public object ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer) + { + var scalar = parser.Consume(); + + var values = scalar.Value.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries) + .Select(s => s.Trim()) + .ToArray(); + + return new StringValues(values); + } + + public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer) + { + throw new NotImplementedException(); + } +} diff --git a/src/MDATTests/Tests/test-add-yaml-type-converter.md b/src/MDATTests/Tests/test-add-yaml-type-converter.md new file mode 100644 index 0000000..42311fa --- /dev/null +++ b/src/MDATTests/Tests/test-add-yaml-type-converter.md @@ -0,0 +1,21 @@ +# Test_AddYamlTypeConverter + +> Test StringValuesTestYamlTypeConverter + +## Case 1 + +Description + +``````yaml +input: un;test +expected: + name: null + generateExpectedData: null + verify: + - type: match + jsonPath: $ + allowAdditionalProperties: false + data: + - un + - test +`````` \ No newline at end of file From b3ed767d2ce8508871c7d3eb2d0f9522f0c347b6 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Thu, 25 Sep 2025 11:08:25 -0400 Subject: [PATCH 05/16] Ajustements --- src/MDATTests/CustomResolverTests.cs | 4 ++-- src/MDATTests/Tests/test-add-yaml-type-converter.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/MDATTests/CustomResolverTests.cs b/src/MDATTests/CustomResolverTests.cs index 8c4fa00..5e0dc96 100644 --- a/src/MDATTests/CustomResolverTests.cs +++ b/src/MDATTests/CustomResolverTests.cs @@ -11,10 +11,10 @@ public class CustomResolverTests public static void ClassInitialize(TestContext testContext) { MdatConfig.AddYamlTypeConverter(new StringValuesTestYamlTypeConverter()); - } + } /// - /// Test StringValuesTestYamlTypeConverter + /// Test AddYamlTypeConverter /// [TestMethod] [MarkdownTest("~\\Tests\\{method}.md")] diff --git a/src/MDATTests/Tests/test-add-yaml-type-converter.md b/src/MDATTests/Tests/test-add-yaml-type-converter.md index 42311fa..25f64c6 100644 --- a/src/MDATTests/Tests/test-add-yaml-type-converter.md +++ b/src/MDATTests/Tests/test-add-yaml-type-converter.md @@ -1,6 +1,6 @@ # Test_AddYamlTypeConverter -> Test StringValuesTestYamlTypeConverter +> Test AddYamlTypeConverter ## Case 1 From d83e350db1c5f9d070c0b728196d0fc0ff5a2ce2 Mon Sep 17 00:00:00 2001 From: anisite Date: Thu, 25 Sep 2025 12:28:22 -0400 Subject: [PATCH 06/16] test condition yaml json --- src/MDAT/MDAT.csproj | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/MDAT/MDAT.csproj b/src/MDAT/MDAT.csproj index 8e20afb..4fb2989 100644 --- a/src/MDAT/MDAT.csproj +++ b/src/MDAT/MDAT.csproj @@ -41,7 +41,13 @@ - + + + + + + + From 312e04eadd1bc8d6f8b526e8013ae05a5135da6e Mon Sep 17 00:00:00 2001 From: anisite Date: Thu, 25 Sep 2025 13:11:03 -0400 Subject: [PATCH 07/16] test 1.5.1 --- src/MDAT/MDAT.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/MDAT/MDAT.csproj b/src/MDAT/MDAT.csproj index 4fb2989..3e20011 100644 --- a/src/MDAT/MDAT.csproj +++ b/src/MDAT/MDAT.csproj @@ -44,9 +44,9 @@ - - - + + + From 7248291e53e062afcec34cf15f96501c543efa61 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Thu, 25 Sep 2025 13:23:56 -0400 Subject: [PATCH 08/16] Ajuster namespace nouveau test --- src/MDATTests/CustomResolverTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MDATTests/CustomResolverTests.cs b/src/MDATTests/CustomResolverTests.cs index 5e0dc96..3f1ae98 100644 --- a/src/MDATTests/CustomResolverTests.cs +++ b/src/MDATTests/CustomResolverTests.cs @@ -2,7 +2,7 @@ using MDATTests.Resolver; using Microsoft.Extensions.Primitives; -namespace MDATTests; +namespace MDAT.Tests; [TestClass] public class CustomResolverTests From 583fce2b20e76995b96d911666cb405d7e7241b7 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Thu, 25 Sep 2025 13:38:15 -0400 Subject: [PATCH 09/16] Test_AddYamlTypeConverter : DoNotParallelize --- src/MDAT/MDAT.csproj | 2 +- src/MDATTests/CustomResolverTests.cs | 4 ++++ src/MDATTests/MDATTests.csproj | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/MDAT/MDAT.csproj b/src/MDAT/MDAT.csproj index 3e20011..890d10f 100644 --- a/src/MDAT/MDAT.csproj +++ b/src/MDAT/MDAT.csproj @@ -1,7 +1,7 @@  - net6.0;net7.0;net8.0;net9.0 + net9.0 enable enable True diff --git a/src/MDATTests/CustomResolverTests.cs b/src/MDATTests/CustomResolverTests.cs index 3f1ae98..79c3037 100644 --- a/src/MDATTests/CustomResolverTests.cs +++ b/src/MDATTests/CustomResolverTests.cs @@ -2,6 +2,9 @@ using MDATTests.Resolver; using Microsoft.Extensions.Primitives; +[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)] + + namespace MDAT.Tests; [TestClass] @@ -17,6 +20,7 @@ public static void ClassInitialize(TestContext testContext) /// Test AddYamlTypeConverter /// [TestMethod] + [DoNotParallelize] [MarkdownTest("~\\Tests\\{method}.md")] public async Task Test_AddYamlTypeConverter(StringValues input, Expected expected) { diff --git a/src/MDATTests/MDATTests.csproj b/src/MDATTests/MDATTests.csproj index 59a0e0a..14645bf 100644 --- a/src/MDATTests/MDATTests.csproj +++ b/src/MDATTests/MDATTests.csproj @@ -1,7 +1,7 @@  - net6.0;net7.0;net8.0;net9.0 + net9.0 enable enable false From 2a3004b59ddca21d2c10bb32a3bba399d11f4577 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Thu, 25 Sep 2025 13:43:42 -0400 Subject: [PATCH 10/16] =?UTF-8?q?R=C3=A9activer=20autre=20frameworks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MDAT/MDAT.csproj | 2 +- src/MDATTests/MDATTests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MDAT/MDAT.csproj b/src/MDAT/MDAT.csproj index 890d10f..3e20011 100644 --- a/src/MDAT/MDAT.csproj +++ b/src/MDAT/MDAT.csproj @@ -1,7 +1,7 @@  - net9.0 + net6.0;net7.0;net8.0;net9.0 enable enable True diff --git a/src/MDATTests/MDATTests.csproj b/src/MDATTests/MDATTests.csproj index 14645bf..59a0e0a 100644 --- a/src/MDATTests/MDATTests.csproj +++ b/src/MDATTests/MDATTests.csproj @@ -1,7 +1,7 @@  - net9.0 + net6.0;net7.0;net8.0;net9.0 enable enable false From 2a71d0eb739c2c64e10ce03f2fd0ca2d5da97fe7 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Thu, 25 Sep 2025 13:56:03 -0400 Subject: [PATCH 11/16] =?UTF-8?q?D=C3=A9sactiver=20tests=20net7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MDATTests/MDATTests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MDATTests/MDATTests.csproj b/src/MDATTests/MDATTests.csproj index 59a0e0a..72037b6 100644 --- a/src/MDATTests/MDATTests.csproj +++ b/src/MDATTests/MDATTests.csproj @@ -1,7 +1,7 @@  - net6.0;net7.0;net8.0;net9.0 + net6.0;net8.0;net9.0 enable enable false From 9102681fd28e56b2874d531fd2911f47487a06b2 Mon Sep 17 00:00:00 2001 From: anisite Date: Thu, 25 Sep 2025 13:57:14 -0400 Subject: [PATCH 12/16] Update dotnet.yml --- .github/workflows/dotnet.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 8c785c5..459f5c4 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -6,6 +6,7 @@ name: .NET permissions: pull-requests: write + on: push: branches: [ "main" ] @@ -26,7 +27,10 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: 9.0.x + dotnet-version: | + 7.0.x + 8.0.x + 9.0.x - name: Restore dependencies run: dotnet restore - name: Build From 18148cd14e229c93c65615adfabad159801ccc4b Mon Sep 17 00:00:00 2001 From: anisite Date: Thu, 25 Sep 2025 13:57:27 -0400 Subject: [PATCH 13/16] Update dotnet.yml --- .github/workflows/dotnet.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 459f5c4..94b383f 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -28,6 +28,7 @@ jobs: uses: actions/setup-dotnet@v3 with: dotnet-version: | + 6.0.x 7.0.x 8.0.x 9.0.x From 248dd5006897fa21d81e4fe37ac822ec61f61cd2 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Thu, 25 Sep 2025 14:04:20 -0400 Subject: [PATCH 14/16] =?UTF-8?q?R=C3=A9activer=20tests=20net7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MDATTests/MDATTests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MDATTests/MDATTests.csproj b/src/MDATTests/MDATTests.csproj index 72037b6..59a0e0a 100644 --- a/src/MDATTests/MDATTests.csproj +++ b/src/MDATTests/MDATTests.csproj @@ -1,7 +1,7 @@  - net6.0;net8.0;net9.0 + net6.0;net7.0;net8.0;net9.0 enable enable false From 99f74c0d9e23d924389ec0318115f7da367fdb85 Mon Sep 17 00:00:00 2001 From: "Gagnon, Samuel (DPNM)" Date: Thu, 25 Sep 2025 14:08:13 -0400 Subject: [PATCH 15/16] Retrait espace inutile --- src/MDATTests/CustomResolverTests.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/MDATTests/CustomResolverTests.cs b/src/MDATTests/CustomResolverTests.cs index 79c3037..aa6143f 100644 --- a/src/MDATTests/CustomResolverTests.cs +++ b/src/MDATTests/CustomResolverTests.cs @@ -4,7 +4,6 @@ [assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)] - namespace MDAT.Tests; [TestClass] From f1b3c8746f2331906963b8f80dee58b85409ea58 Mon Sep 17 00:00:00 2001 From: anisite Date: Thu, 25 Sep 2025 14:09:07 -0400 Subject: [PATCH 16/16] bump version --- src/MDAT/MDAT.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MDAT/MDAT.csproj b/src/MDAT/MDAT.csproj index 3e20011..500dcca 100644 --- a/src/MDAT/MDAT.csproj +++ b/src/MDAT/MDAT.csproj @@ -10,7 +10,7 @@ MESS https://github.com/MTESSDev/mdAT https://github.com/MTESSDev/mdAT - 1.4.1 + 1.5.0 Markdown Auto-Tests for .net 6+, based on MSTestsV2 DataSource.