diff options
author | Justin DeMartino <jjdemartino@google.com> | 2020-09-21 13:23:58 -0700 |
---|---|---|
committer | Justin DeMartino <jjdemartino@google.com> | 2020-09-21 13:23:58 -0700 |
commit | 7e4fe6a28b718ab97c08811566238af2893ca65b (patch) | |
tree | 5413a5ec890b5a1ac4fbbe4548b5014e41a2591b /tests/unistd_test.cpp | |
parent | dcdcb3fa15004669823a3a118189d9d72ff30852 (diff) | |
parent | ab08b955a34423d53b28a6210e7530e67241af4a (diff) |
Merge SP1A.200921.001
Change-Id: Id2ab019914bb555dadf52c46b8403c0d5fb3c20a
Diffstat (limited to 'tests/unistd_test.cpp')
-rw-r--r-- | tests/unistd_test.cpp | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp index 6b2856169..43d50f888 100644 --- a/tests/unistd_test.cpp +++ b/tests/unistd_test.cpp @@ -1350,6 +1350,11 @@ TEST(UNISTD_TEST, execve_failure) { ASSERT_EQ(EACCES, errno); } +static void append_llvm_cov_env_var(std::string& env_str) { + if (getenv("LLVM_PROFILE_FILE") != nullptr) + env_str.append("__LLVM_PROFILE_RT_INIT_ONCE=__LLVM_PROFILE_RT_INIT_ONCE\n"); +} + TEST(UNISTD_TEST, execve_args) { // int execve(const char* path, char* argv[], char* envp[]); @@ -1361,7 +1366,12 @@ TEST(UNISTD_TEST, execve_args) { // Test environment variable setting too. eth.SetArgs({"printenv", nullptr}); eth.SetEnv({"A=B", nullptr}); - eth.Run([&]() { execve(BIN_DIR "printenv", eth.GetArgs(), eth.GetEnv()); }, 0, "A=B\n"); + + std::string expected_output("A=B\n"); + append_llvm_cov_env_var(expected_output); + + eth.Run([&]() { execve(BIN_DIR "printenv", eth.GetArgs(), eth.GetEnv()); }, 0, + expected_output.c_str()); } TEST(UNISTD_TEST, execl_failure) { @@ -1386,8 +1396,13 @@ TEST(UNISTD_TEST, execle_failure) { TEST(UNISTD_TEST, execle) { ExecTestHelper eth; eth.SetEnv({"A=B", nullptr}); + + std::string expected_output("A=B\n"); + append_llvm_cov_env_var(expected_output); + // int execle(const char* path, const char* arg, ..., char* envp[]); - eth.Run([&]() { execle(BIN_DIR "printenv", "printenv", nullptr, eth.GetEnv()); }, 0, "A=B\n"); + eth.Run([&]() { execle(BIN_DIR "printenv", "printenv", nullptr, eth.GetEnv()); }, 0, + expected_output.c_str()); } TEST(UNISTD_TEST, execv_failure) { @@ -1450,7 +1465,11 @@ TEST(UNISTD_TEST, execvpe) { // Test environment variable setting too. eth.SetArgs({"printenv", nullptr}); eth.SetEnv({"A=B", nullptr}); - eth.Run([&]() { execvpe("printenv", eth.GetArgs(), eth.GetEnv()); }, 0, "A=B\n"); + + std::string expected_output("A=B\n"); + append_llvm_cov_env_var(expected_output); + + eth.Run([&]() { execvpe("printenv", eth.GetArgs(), eth.GetEnv()); }, 0, expected_output.c_str()); } TEST(UNISTD_TEST, execvpe_ENOEXEC) { @@ -1538,7 +1557,11 @@ TEST(UNISTD_TEST, fexecve_args) { ASSERT_NE(-1, printenv_fd); eth.SetArgs({"printenv", nullptr}); eth.SetEnv({"A=B", nullptr}); - eth.Run([&]() { fexecve(printenv_fd, eth.GetArgs(), eth.GetEnv()); }, 0, "A=B\n"); + + std::string expected_output("A=B\n"); + append_llvm_cov_env_var(expected_output); + + eth.Run([&]() { fexecve(printenv_fd, eth.GetArgs(), eth.GetEnv()); }, 0, expected_output.c_str()); close(printenv_fd); } |