Remove locale tests that depend on enviroment variables.
authorEric Fiselier <eric@efcs.ca>
Mon, 18 Jul 2016 06:15:55 +0000 (06:15 +0000)
committerEric Fiselier <eric@efcs.ca>
Mon, 18 Jul 2016 06:15:55 +0000 (06:15 +0000)
Constructing a std::locale object from an empty string selects the language
from the current environment variables. If the environment variables name
a locale that doesn't exist, or isn't installed, then the construction of
facets using that locale may throw.

This patch removes tests that use 'std::locale l("")'.

The optimal solution would be to manually set the environment variables
in the test. Unfortunately there is no portable way to do this.

llvm-svn: 275772

libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/types.pass.cpp

index 34af418..0e99097 100644 (file)
 #include <cassert>
 
 #include "platform_support.h" // locale name macros
-#include "assert_checkpoint.h"
 
 int main()
 {
     {
-        CHECKPOINT("constructing en-US.UTF-8");
         std::locale l(LOCALE_en_US_UTF_8);
         {
             assert(std::has_facet<std::ctype_byname<char> >(l));
@@ -47,21 +45,6 @@ int main()
         }
     }
     {
-        CHECKPOINT("constructing default locale");
-        std::locale l("");
-        {
-            assert(std::has_facet<std::ctype_byname<char> >(l));
-            assert(&std::use_facet<std::ctype<char> >(l)
-                == &std::use_facet<std::ctype_byname<char> >(l));
-        }
-        {
-            assert(std::has_facet<std::ctype_byname<wchar_t> >(l));
-            assert(&std::use_facet<std::ctype<wchar_t> >(l)
-                == &std::use_facet<std::ctype_byname<wchar_t> >(l));
-        }
-    }
-    {
-        CHECKPOINT("constructing C locale");
         std::locale l("C");
         {
             assert(std::has_facet<std::ctype_byname<char> >(l));