Kaynağa Gözat

refactor(config): SharedConfigStore.Read 统一用 root.Elements + 补 null/转义测试

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
huangjie 2 gün önce
ebeveyn
işleme
8f3d096

+ 25 - 0
ivf_tl_operate_2.0/ivf_tl_Operate.Tests/SharedConfigStoreTests.cs

@@ -56,5 +56,30 @@ namespace ivf_tl_Operate.Tests
             }
             finally { File.Delete(path); }
         }
+
+        [Fact]
+        public void Write_null_value_reads_back_empty_string()
+        {
+            var path = TempFile();
+            try
+            {
+                SharedConfigStore.Write(path, "urlIp", null);
+                Assert.Equal("", SharedConfigStore.Read(path, "urlIp"));
+            }
+            finally { File.Delete(path); }
+        }
+
+        [Fact]
+        public void Write_value_with_xml_special_chars_roundtrips()
+        {
+            var path = TempFile();
+            try
+            {
+                var v = "http://a&b<c>\"d\"";
+                SharedConfigStore.Write(path, "urlIp", v);
+                Assert.Equal(v, SharedConfigStore.Read(path, "urlIp"));
+            }
+            finally { File.Delete(path); }
+        }
     }
 }

+ 3 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/Helpers/SharedConfigStore.cs

@@ -18,7 +18,9 @@ namespace ivf_tl_Operate.Helpers
             try
             {
                 var doc = XDocument.Load(path);
-                foreach (var add in doc.Descendants("add"))
+                var root = doc.Root;
+                if (root == null) return null;
+                foreach (var add in root.Elements("add"))
                 {
                     if ((string)add.Attribute("key") == key)
                         return (string)add.Attribute("value");