ProcessTest.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //===- unittest/Support/ProcessTest.cpp -----------------------------------===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. #include "llvm/Support/Process.h"
  9. #include "gtest/gtest.h"
  10. #ifdef _WIN32
  11. #include <windows.h>
  12. #endif
  13. namespace {
  14. using namespace llvm;
  15. using namespace sys;
  16. TEST(ProcessTest, GetRandomNumberTest) {
  17. const unsigned r1 = Process::GetRandomNumber();
  18. const unsigned r2 = Process::GetRandomNumber();
  19. // It should be extremely unlikely that both r1 and r2 are 0.
  20. EXPECT_NE((r1 | r2), 0u);
  21. }
  22. #ifdef _MSC_VER
  23. #define setenv(name, var, ignore) _putenv_s(name, var)
  24. #endif
  25. #if HAVE_SETENV || _MSC_VER
  26. TEST(ProcessTest, Basic) {
  27. setenv("__LLVM_TEST_ENVIRON_VAR__", "abc", true);
  28. Optional<std::string> val(Process::GetEnv("__LLVM_TEST_ENVIRON_VAR__"));
  29. EXPECT_TRUE(val.hasValue());
  30. EXPECT_STREQ("abc", val->c_str());
  31. }
  32. TEST(ProcessTest, None) {
  33. Optional<std::string> val(
  34. Process::GetEnv("__LLVM_TEST_ENVIRON_NO_SUCH_VAR__"));
  35. EXPECT_FALSE(val.hasValue());
  36. }
  37. #endif
  38. #ifdef _WIN32
  39. TEST(ProcessTest, EmptyVal) {
  40. SetEnvironmentVariableA("__LLVM_TEST_ENVIRON_VAR__", "");
  41. Optional<std::string> val(Process::GetEnv("__LLVM_TEST_ENVIRON_VAR__"));
  42. EXPECT_TRUE(val.hasValue());
  43. EXPECT_STREQ("", val->c_str());
  44. }
  45. TEST(ProcessTest, Wchar) {
  46. SetEnvironmentVariableW(L"__LLVM_TEST_ENVIRON_VAR__", L"abcdefghijklmnopqrs");
  47. Optional<std::string> val(Process::GetEnv("__LLVM_TEST_ENVIRON_VAR__"));
  48. EXPECT_TRUE(val.hasValue());
  49. EXPECT_STREQ("abcdefghijklmnopqrs", val->c_str());
  50. }
  51. #endif
  52. } // end anonymous namespace