Skip to content

Commit

Permalink
[libcxx][test] Portability fix for some locale-dependent tests.
Browse files Browse the repository at this point in the history
Tests for `std::system_error` constructor marked as slightly non-portable.
One (but not the only one) reason for such non-portability is that these
tests assume the default locale to be set to "C" (or "POSIX").

However, the default locale for the process depends on OS and
environment. This patch adds explicit setting of the correct
locale expected by the tests.

Thanks to Andrey Maksimov for the patch.

Differential Revision: https://reviews.llvm.org/D72456
  • Loading branch information
ldionne committed May 20, 2020
1 parent 645bba8 commit 9f19cc8
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
#include <system_error>
#include <string>
#include <cassert>
#include <clocale>

#include "test_macros.h"

int main(int, char**)
{
std::setlocale (LC_ALL, "C");
std::system_error se(static_cast<int>(std::errc::not_a_directory),
std::generic_category(), "some text");
assert(se.code() == std::make_error_code(std::errc::not_a_directory));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
#include <system_error>
#include <string>
#include <cassert>
#include <clocale>

#include "test_macros.h"

int main(int, char**)
{
std::setlocale (LC_ALL, "C");
std::string what_arg("test message");
std::system_error se(make_error_code(std::errc::not_a_directory), what_arg.c_str());
assert(se.code() == std::make_error_code(std::errc::not_a_directory));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
#include <system_error>
#include <string>
#include <cassert>
#include <clocale>

#include "test_macros.h"

int main(int, char**)
{
std::setlocale (LC_ALL, "C");
std::string what_arg("test message");
std::system_error se(make_error_code(std::errc::not_a_directory), what_arg);
assert(se.code() == std::make_error_code(std::errc::not_a_directory));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
#include <system_error>
#include <string>
#include <cassert>
#include <clocale>

#include "test_macros.h"

int main(int, char**)
{
std::setlocale (LC_ALL, "C");
std::system_error se(static_cast<int>(std::errc::not_a_directory),
std::generic_category());
assert(se.code() == std::make_error_code(std::errc::not_a_directory));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
#include <system_error>
#include <string>
#include <cassert>
#include <clocale>

#include "test_macros.h"

int main(int, char**)
{
std::setlocale (LC_ALL, "C");
std::string what_arg("test message");
std::system_error se(static_cast<int>(std::errc::not_a_directory),
std::generic_category(), what_arg.c_str());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
#include <system_error>
#include <string>
#include <cassert>
#include <clocale>

#include "test_macros.h"

int main(int, char**)
{
std::setlocale (LC_ALL, "C");
std::string what_arg("test message");
std::system_error se(static_cast<int>(std::errc::not_a_directory),
std::generic_category(), what_arg);
Expand Down

0 comments on commit 9f19cc8

Please sign in to comment.