diff --git a/src/Scripting/VisualBasicTest/CommandLineRunnerTests.vb b/src/Scripting/VisualBasicTest/CommandLineRunnerTests.vb index 67ab0cc1d1a5d927be65e955b191e77c814ffd40..b1948b8d63638009d4dcef7cfdfc09e900aacdc6 100644 --- a/src/Scripting/VisualBasicTest/CommandLineRunnerTests.vb +++ b/src/Scripting/VisualBasicTest/CommandLineRunnerTests.vb @@ -121,48 +121,35 @@ End Class", "1").EmitToArray()) - Public Sub TestDisplayResultsWithCurrentUICulture1() - Dim logoAndHelpPrompt = String.Format(VBScriptingResources.LogoLine1, s_compilerVersion) + vbNewLine + VBScriptingResources.LogoLine2 + " - -" + ScriptingResources.HelpPrompt - ' The runner starts with DefaultThreadCurrentUICulture set to fr-FR (via UseCulture attribute), - ' switches to en-US and after that to de-DE. A DateTime should be printed with the following formats: - ' fr-FR: #01/01/0001 00:00:00# - ' en-US: #1/1/0001 12:00:00 AM# - ' de-DE: #01.01.0001 00:00:00# - Dim runner = CreateRunner(args:={}, input:="Imports System.Globalization -Dim d = New System.DateTime() -? d -? System.Math.PI -System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(""en-US"") -? d + ' Save the current thread culture as it is changed in the test. + ' If the culture is not restored after the test all following tests + ' would run in the en-GB culture. + Dim currentCulture = CultureInfo.DefaultThreadCurrentCulture + Dim currentUICulture = CultureInfo.DefaultThreadCurrentUICulture + Try + Dim runner = CreateRunner(args:={}, input:="Imports System.Globalization +System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(""en-GB"") ? System.Math.PI System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(""de-DE"") -? d ? System.Math.PI") - runner.RunInteractive() + runner.RunInteractive() - AssertEx.AssertEqualToleratingWhitespaceDifferences( -logoAndHelpPrompt + " + AssertEx.AssertEqualToleratingWhitespaceDifferences( + s_logoAndHelpPrompt + " > Imports System.Globalization -> Dim d = New System.DateTime() -> ? d -#01/01/0001 00:00:00# -> ? System.Math.PI -3,1415926535897931 -> System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(""en-US"") -> ? d -#1/1/0001 12:00:00 AM# +> System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(""en-GB"") > ? System.Math.PI 3.1415926535897931 > System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(""de-DE"") -> ? d -#01.01.0001 00:00:00# > ? System.Math.PI 3,1415926535897931 >", runner.Console.Out.ToString()) + Finally + CultureInfo.DefaultThreadCurrentCulture = currentCulture + CultureInfo.DefaultThreadCurrentUICulture = currentUICulture + End Try End Sub diff --git a/src/Test/Utilities/Portable/Assert/UseCultureAttribute.cs b/src/Test/Utilities/Portable/Assert/UseCultureAttribute.cs index 760f76034f6d91f536b6a192b113d88803eac591..cb485d7ea1538d135478355a74e10643860b8621 100644 --- a/src/Test/Utilities/Portable/Assert/UseCultureAttribute.cs +++ b/src/Test/Utilities/Portable/Assert/UseCultureAttribute.cs @@ -24,12 +24,8 @@ public class UseCultureAttribute : BeforeAfterTestAttribute { private readonly Lazy _culture; private readonly Lazy _uiCulture; - private readonly Lazy _defaultThreadCulture; - private readonly Lazy _defaultThreadUICulture; private CultureInfo _originalCulture; private CultureInfo _originalUICulture; - private CultureInfo _originalDefaultThreadCulture; - private CultureInfo _originalDefaultThreadUICulture; /// /// Replaces the culture and UI culture of the current thread with @@ -55,8 +51,6 @@ public UseCultureAttribute(string culture) /// The name of the UI culture. public UseCultureAttribute(string culture, string uiCulture) { - _defaultThreadCulture = new Lazy(() => CultureInfo.DefaultThreadCurrentCulture); - _defaultThreadUICulture = new Lazy(() => CultureInfo.DefaultThreadCurrentUICulture); #if NET46 || NET461 _culture = new Lazy(() => new CultureInfo(culture, useUserOverride: false)); _uiCulture = new Lazy(() => new CultureInfo(uiCulture, useUserOverride: false)); @@ -79,9 +73,6 @@ public UseCultureAttribute(string culture, string uiCulture) /// public CultureInfo UICulture => _uiCulture.Value; - public CultureInfo DefaultThreadCulture => _defaultThreadCulture.Value; - public CultureInfo DefaultThreadUICulture => _defaultThreadUICulture.Value; - /// /// Stores the current and /// and replaces them with the new cultures defined in the constructor. @@ -91,10 +82,6 @@ public override void Before(MethodInfo methodUnderTest) { _originalCulture = CultureInfo.CurrentCulture; _originalUICulture = CultureInfo.CurrentUICulture; - _originalDefaultThreadCulture = CultureInfo.DefaultThreadCurrentCulture; - _originalDefaultThreadUICulture = CultureInfo.DefaultThreadCurrentUICulture; - CultureInfo.DefaultThreadCurrentCulture = Culture; - CultureInfo.DefaultThreadCurrentUICulture = Culture; #if NET46 || NET461 || NETCOREAPP2_0 CultureInfo.CurrentCulture = Culture; @@ -104,6 +91,8 @@ public override void Before(MethodInfo methodUnderTest) CultureInfo.CurrentCulture.ClearCachedData(); CultureInfo.CurrentUICulture.ClearCachedData(); #endif +#else + throw new NotSupportedException("Cannot set the current culture on this framework target."); #endif } @@ -114,8 +103,6 @@ public override void Before(MethodInfo methodUnderTest) /// The method under test public override void After(MethodInfo methodUnderTest) { - CultureInfo.DefaultThreadCurrentCulture = _originalDefaultThreadCulture; - CultureInfo.DefaultThreadCurrentUICulture = _originalDefaultThreadUICulture; #if NET46 || NET461 || NETCOREAPP2_0 CultureInfo.CurrentCulture = _originalCulture; CultureInfo.CurrentUICulture = _originalUICulture; @@ -124,6 +111,8 @@ public override void After(MethodInfo methodUnderTest) CultureInfo.CurrentCulture.ClearCachedData(); CultureInfo.CurrentUICulture.ClearCachedData(); #endif +#else + throw new NotSupportedException("Cannot set the current culture on this framework target."); #endif } }