From 43921219075586197b7d57f3cbcd017dbb5a1c53 Mon Sep 17 00:00:00 2001 From: Christian Specht Date: Sat, 9 Dec 2023 23:33:11 +0100 Subject: [PATCH] don't throw an exception if the config file contains "unknown" properties (properties that aren't in the Config class) Fixes #76 --- src/ScmBackup.Tests.Integration/ConfigReaderTests.cs | 9 +++++++++ .../ScmBackup.Tests.Integration.csproj | 3 +++ .../settings-unknown-property.yml | 5 +++++ src/ScmBackup/Configuration/ConfigReader.cs | 5 ++++- 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/ScmBackup.Tests.Integration/settings-unknown-property.yml diff --git a/src/ScmBackup.Tests.Integration/ConfigReaderTests.cs b/src/ScmBackup.Tests.Integration/ConfigReaderTests.cs index 7128015..1db821a 100644 --- a/src/ScmBackup.Tests.Integration/ConfigReaderTests.cs +++ b/src/ScmBackup.Tests.Integration/ConfigReaderTests.cs @@ -51,5 +51,14 @@ public void ThrowsExceptionWhenConfigFileIsNotVaild() Assert.ThrowsAny(() => sut.ReadConfig()); } + + [Fact] + public void IgnoresUnknownProperties_Issue76() + { + var sut = new ConfigReader(); + sut.ConfigFileName = "settings-unknown-property.yml"; + + var config = sut.ReadConfig(); // should just ignore the unknown property and NOT throw an exception + } } } diff --git a/src/ScmBackup.Tests.Integration/ScmBackup.Tests.Integration.csproj b/src/ScmBackup.Tests.Integration/ScmBackup.Tests.Integration.csproj index a3ed3a0..df2a011 100644 --- a/src/ScmBackup.Tests.Integration/ScmBackup.Tests.Integration.csproj +++ b/src/ScmBackup.Tests.Integration/ScmBackup.Tests.Integration.csproj @@ -29,6 +29,9 @@ Always + + PreserveNewest + PreserveNewest diff --git a/src/ScmBackup.Tests.Integration/settings-unknown-property.yml b/src/ScmBackup.Tests.Integration/settings-unknown-property.yml new file mode 100644 index 0000000..e970926 --- /dev/null +++ b/src/ScmBackup.Tests.Integration/settings-unknown-property.yml @@ -0,0 +1,5 @@ +localFolder: 'c:\scm-backup' + +# this property doesn't exist in the config class: +unknownProperty: + foo: bar diff --git a/src/ScmBackup/Configuration/ConfigReader.cs b/src/ScmBackup/Configuration/ConfigReader.cs index e894e42..c2c3d2b 100644 --- a/src/ScmBackup/Configuration/ConfigReader.cs +++ b/src/ScmBackup/Configuration/ConfigReader.cs @@ -25,7 +25,10 @@ public Config ReadConfig() this.config = new Config(); var input = File.ReadAllText(this.ConfigFileName); - var deserializer = new DeserializerBuilder().WithNamingConvention(CamelCaseNamingConvention.Instance).Build(); + var deserializer = new DeserializerBuilder() + .WithNamingConvention(CamelCaseNamingConvention.Instance) + .IgnoreUnmatchedProperties() + .Build(); this.config = deserializer.Deserialize(input); }