Remove locale tests that depend on enviroment variables.

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.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@275772 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier
2016-07-18 06:15:55 +00:00
parent b9c20327ac
commit 066feb8249

View File

@@ -28,12 +28,10 @@
#include <cassert> #include <cassert>
#include "platform_support.h" // locale name macros #include "platform_support.h" // locale name macros
#include "assert_checkpoint.h"
int main() int main()
{ {
{ {
CHECKPOINT("constructing en-US.UTF-8");
std::locale l(LOCALE_en_US_UTF_8); std::locale l(LOCALE_en_US_UTF_8);
{ {
assert(std::has_facet<std::ctype_byname<char> >(l)); 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"); std::locale l("C");
{ {
assert(std::has_facet<std::ctype_byname<char> >(l)); assert(std::has_facet<std::ctype_byname<char> >(l));