From 010a8621170652d61039fad376485aee3846c999 Mon Sep 17 00:00:00 2001 From: Christoph Bergmeister Date: Tue, 6 Nov 2018 19:56:20 +0000 Subject: [PATCH] Fix Parsing of settings that occurs when using turkish culture --- Engine/Settings.cs | 2 +- Tests/Engine/InvokeFormatter.tests.ps1 | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Engine/Settings.cs b/Engine/Settings.cs index 4f9dcd546..eba05b0b3 100644 --- a/Engine/Settings.cs +++ b/Engine/Settings.cs @@ -395,7 +395,7 @@ private void parseSettingsHashtable(Hashtable settingsHashtable) var settings = GetDictionaryFromHashtable(settingsHashtable); foreach (var settingKey in settings.Keys) { - var key = settingKey.ToLower(); + var key = settingKey.ToLowerInvariant(); // Invariant is important to also work with turkish culture, see https://github.com/PowerShell/PSScriptAnalyzer/issues/1095 object val = settings[key]; switch (key) { diff --git a/Tests/Engine/InvokeFormatter.tests.ps1 b/Tests/Engine/InvokeFormatter.tests.ps1 index a4d841657..894237d68 100644 --- a/Tests/Engine/InvokeFormatter.tests.ps1 +++ b/Tests/Engine/InvokeFormatter.tests.ps1 @@ -85,6 +85,17 @@ function foo { Invoke-Formatter -ScriptDefinition $def | Should -Be $expected } + + It "Does not throw when using turkish culture - https://github.com/PowerShell/PSScriptAnalyzer/issues/1095" { + $initialCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture + try { + [System.Threading.Thread]::CurrentThread.CurrentCulture = [cultureinfo]::CreateSpecificCulture('tr-TR') + Invoke-Formatter ' foo' | Should -Be 'foo' + } + finally { + [System.Threading.Thread]::CurrentThread.CurrentCulture = $initialCulture + } + } } }