From 8fa514f9404f1e06db8356d16911b34b3bab7ba2 Mon Sep 17 00:00:00 2001 From: Carl Johnsen Date: Wed, 28 Jan 2026 09:54:32 +0100 Subject: [PATCH] Made the default keys of the rsync json be parsed in kebab-case, and added a test for the sync-on-warnings flag --- .../Builtin/RemoteSynchronizationModule.cs | 6 +++++- .../UnitTest/RemoteSynchronizationModuleTests.cs | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs b/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs index 323fe21e4..b742be1d1 100644 --- a/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs +++ b/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs @@ -180,7 +180,11 @@ public class RemoteSynchronizationModule : IGenericCallbackModule try { - var deserializeOpts = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; + var deserializeOpts = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + PropertyNamingPolicy = JsonNamingPolicy.KebabCaseLower + }; var toplevel = JsonSerializer.Deserialize(jsonContent, deserializeOpts); if (toplevel is null) diff --git a/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs b/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs index 7fbb0c640..6f283bfd6 100644 --- a/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs +++ b/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs @@ -379,6 +379,21 @@ namespace Duplicati.UnitTest Assert.AreEqual(0, destinations.Count); } + [Test] + [Category("RemoteSync")] + public void TestConfigure_SyncOnWarnings() + { + var options = new Dictionary + { + ["remote-sync-json-config"] = $"{{\"sync-on-warnings\": false, \"destinations\": [{{\"url\": \"file://{dest1}\"}}]}}" + }; + + module.Configure(options); + + var syncOnWarnings = module.GetType().GetField("m_syncOnWarnings", BINDING_FLAGS).GetValue(module); + Assert.IsFalse((bool)syncOnWarnings); + } + [Test] [Category("RemoteSync")] public void TestShouldTriggerSync_Scheduled_Initial()