Skip to content

Commit 66c68a2

Browse files
committed
Fixed #732, quote strings starting with whitespace characters
1 parent 19d7875 commit 66c68a2

File tree

5 files changed

+46
-8
lines changed

5 files changed

+46
-8
lines changed

YamlDotNet.Benchmark/Program.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
using BenchmarkDotNet.Running;
2-
using YamlDotNet.Benchmark;
1+
using YamlDotNet.Serialization;
32

4-
BenchmarkSwitcher.FromAssembly(typeof(YamlStreamBenchmark).Assembly).Run(args);
3+
var serializer = new SerializerBuilder()
4+
.WithQuotingNecessaryStrings()
5+
.Build();
6+
7+
var s = "\t, something";
8+
var yaml = serializer.Serialize(s);
9+
Console.WriteLine(yaml);
10+
var deserializer = new DeserializerBuilder().Build();
11+
var value = deserializer.Deserialize(yaml);

YamlDotNet.Test/Serialization/SerializationTests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2429,6 +2429,36 @@ public void SerializeEnumAsNumber()
24292429
Assert.Equal(TestEnumAsNumber.Test1 | TestEnumAsNumber.Test2, v);
24302430
}
24312431

2432+
[Fact]
2433+
public void TabsGetQuotedWhenQuoteNecessaryStringsIsOn()
2434+
{
2435+
var serializer = new SerializerBuilder()
2436+
.WithQuotingNecessaryStrings()
2437+
.Build();
2438+
2439+
var s = "\t, something";
2440+
var yaml = serializer.Serialize(s);
2441+
Console.WriteLine(yaml);
2442+
var deserializer = new DeserializerBuilder().Build();
2443+
var value = deserializer.Deserialize(yaml);
2444+
Assert.Equal(s, value);
2445+
}
2446+
2447+
[Fact]
2448+
public void SpacesGetQuotedWhenQuoteNecessaryStringsIsOn()
2449+
{
2450+
var serializer = new SerializerBuilder()
2451+
.WithQuotingNecessaryStrings()
2452+
.Build();
2453+
2454+
var s = " , something";
2455+
var yaml = serializer.Serialize(s);
2456+
Console.WriteLine(yaml);
2457+
var deserializer = new DeserializerBuilder().Build();
2458+
var value = deserializer.Deserialize(yaml);
2459+
Assert.Equal(s, value);
2460+
}
2461+
24322462
[Flags]
24332463
private enum TestEnumAsNumber
24342464
{

YamlDotNet/Serialization/EventEmitters/TypeAssigningEventEmitter.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public sealed class TypeAssigningEventEmitter : ChainedEventEmitter
4545
+ @"|[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?" // float number
4646
+ @"|[-+]?(\.inf|\.Inf|\.INF)"
4747
+ @"|\.nan|\.NaN|\.NAN"
48+
+ @"|\s.*"
4849
+ @")$";
4950

5051
/// <summary>

tools/build/AutoNumberToStringConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS
2929

3030
if (reader.TokenType == JsonTokenType.String)
3131
{
32-
return reader.GetString();
32+
return reader.GetString()!;
3333
}
3434

3535
using var document = JsonDocument.ParseValue(ref reader);

tools/build/BuildDefinition.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static async Task<GitVersion> ResolveVersion(Options options, PreviousRel
6666
};
6767
jsonOptions.Converters.Add(new AutoNumberToStringConverter());
6868

69-
version = JsonSerializer.Deserialize<GitVersion>(versionJson, jsonOptions);
69+
version = JsonSerializer.Deserialize<GitVersion>(versionJson, jsonOptions)!;
7070

7171
// Workaround to prevent issues with some consumers of the NuGet API that build
7272
// links manually instead of following the links that come in the response.
@@ -290,7 +290,7 @@ public static async Task LinkPullRequestsToReleases(GitVersion version)
290290

291291
var release = await releaseResponse.EnsureSuccessStatusCode().Content.ReadAsAsync<GitHubApiModels.Release>();
292292

293-
var linkedIssues = Regex.Matches(release.body, @"#(\d+)").Select(m => m.Groups[1].Value);
293+
var linkedIssues = Regex.Matches(release.body ?? string.Empty, @"#(\d+)").Select(m => m.Groups[1].Value);
294294
WriteVerbose($"Found the following issues / pull requests: {string.Join(",", linkedIssues)}");
295295

296296
foreach (var issueNumber in linkedIssues)
@@ -342,12 +342,12 @@ public static Task Document(Options options)
342342

343343
const string ns = "http://microsoft.com/schemas/VisualStudio/TeamTest/2010";
344344

345-
var testDefinitions = report.Root
345+
var testDefinitions = report.Root!
346346
.Element(XName.Get("TestDefinitions", ns))!
347347
.Elements(XName.Get("UnitTest", ns))
348348
.Select(e =>
349349
{
350-
var testMethod = e.Element(XName.Get("TestMethod", ns));
350+
var testMethod = e.Element(XName.Get("TestMethod", ns))!;
351351

352352
var sampleClassName = testMethod.Attribute("className")!.Value;
353353
var sampleMethodName = testMethod.Attribute("name")!.Value;

0 commit comments

Comments
 (0)