Author: ericwf Date: Mon May 2 19:36:57 2016 New Revision: 268346 URL: http://llvm.org/viewvc/llvm-project?rev=268346&view=rev Log: Guard use of <unistd.h> in test.
Modified: libcxx/trunk/test/std/numerics/rand/rand.device/ctor.pass.cpp Modified: libcxx/trunk/test/std/numerics/rand/rand.device/ctor.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/numerics/rand/rand.device/ctor.pass.cpp?rev=268346&r1=268345&r2=268346&view=diff ============================================================================== --- libcxx/trunk/test/std/numerics/rand/rand.device/ctor.pass.cpp (original) +++ libcxx/trunk/test/std/numerics/rand/rand.device/ctor.pass.cpp Mon May 2 19:36:57 2016 @@ -22,7 +22,11 @@ #include <random> #include <system_error> #include <cassert> + +#if !defined(_WIN32) #include <unistd.h> +#endif + bool is_valid_random_device(const std::string &token) { #if defined(_LIBCPP_USING_DEV_RANDOM) @@ -41,32 +45,19 @@ void check_random_device_invalid(const s try { std::random_device r(token); assert(false); - } catch (const std::system_error &e) { + } catch (const std::system_error&) { } } -int main() { - { std::random_device r; } +int main() { { - int ec; - ec = close(STDIN_FILENO); - assert(!ec); - ec = close(STDOUT_FILENO); - assert(!ec); - ec = close(STDERR_FILENO); - assert(!ec); std::random_device r; } - { std::string token = "wrong file"; - if (is_valid_random_device(token)) - check_random_device_valid(token); - else - check_random_device_invalid(token); + check_random_device_invalid(token); } - { std::string token = "/dev/urandom"; if (is_valid_random_device(token)) @@ -74,7 +65,6 @@ int main() { else check_random_device_invalid(token); } - { std::string token = "/dev/random"; if (is_valid_random_device(token)) @@ -82,4 +72,19 @@ int main() { else check_random_device_invalid(token); } +#if !defined(_WIN32) +// Test that random_device(const string&) properly handles getting +// a file descriptor with the value '0'. Do this by closing the standard +// streams so that the descriptor '0' is available. + { + int ec; + ec = close(STDIN_FILENO); + assert(!ec); + ec = close(STDOUT_FILENO); + assert(!ec); + ec = close(STDERR_FILENO); + assert(!ec); + std::random_device r; + } +#endif // !defined(_WIN32) } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits