Skip to content

Commit

Permalink
fix: invariant culture for version field
Browse files Browse the repository at this point in the history
Writing version field depends on current system culture
version: '1.13.0' for `en-US`
version: 1.13.0 for `en-GB`

existing workaround:
set DOTNET_SYSTEM_GLOBALIZATION_INVARIANT environment variable
https://learn.microsoft.com/en-us/dotnet/core/runtime-config/globalization#invariant-mode
  • Loading branch information
Ne4to committed Sep 19, 2022
1 parent cb1b084 commit a389eb6
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ internal static string GetYamlCompatibleString(this string input)
if (decimal.TryParse(input, NumberStyles.Float, CultureInfo.InvariantCulture, out var _) ||
IsHexadecimalNotation(input) ||
bool.TryParse(input, out var _) ||
DateTime.TryParse(input, out var _))
DateTime.TryParse(input, CultureInfo.InvariantCulture, DateTimeStyles.None, out var _))
{
return $"'{input}'";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,5 +148,26 @@ public void WriteStringWithNewlineCharactersInArrayAsYamlWorks(string input, str
// Assert
actual.Should().Be(expected);
}

[Theory]
[InlineData("1.8.0", " '1.8.0'", "en-US")]
[InlineData("1.8.0", " '1.8.0'", "en-GB")]
[InlineData("1.13.0", " '1.13.0'", "en-US")]
[InlineData("1.13.0", " '1.13.0'", "en-GB")]
public void WriteStringAsYamlDoesNotDependOnSystemCulture(string input, string expected, string culture)
{
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo(culture);

// Arrange
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
var writer = new OpenApiYamlWriter(outputStringWriter);

// Act
writer.WriteValue(input);
var actual = outputStringWriter.GetStringBuilder().ToString();

// Assert
actual.Should().Be(expected);
}
}
}

0 comments on commit a389eb6

Please sign in to comment.