mirror-llvm-project/libc/test/integration/startup/linux/args_test.cpp
Pavel Labath cc623d6e99
[libc][test] Add EXPECT_STREQ and ASSERT_STREQ macros for integration tests (#212729)
Add EXPECT_STREQ and ASSERT_STREQ macros to IntegrationTest/test.h using
cpp::string_view. Note that, unlike the unit test macro (but like
googletest), this version treats NULL as distinct from "". The
inconsistency is unfortunate, but I think it's important as the code is
used for testing functions like getenv(), where "" and NULL have very
different meanings.

We should probably follow this up with a change to make the unit test
macro behave the same way.

Update integration tests to use the new macros instead of handrolled
string equality functions (my_streq), strcmp, inline_strcmp, or
string_view wrappers.
2026-07-30 15:46:02 +02:00

29 lines
928 B
C++

//===-- Loader test to check args to main ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "test/IntegrationTest/test.h"
TEST_MAIN(int argc, char **argv, char **envp) {
ASSERT_TRUE(argc == 4);
ASSERT_STREQ(argv[1], "1");
ASSERT_STREQ(argv[2], "2");
ASSERT_STREQ(argv[3], "3");
bool found_france = false;
bool found_germany = false;
for (; *envp != nullptr; ++envp) {
if (LIBC_NAMESPACE::cpp::string_view(*envp) == "FRANCE=Paris")
found_france = true;
if (LIBC_NAMESPACE::cpp::string_view(*envp) == "GERMANY=Berlin")
found_germany = true;
}
ASSERT_TRUE(found_france && found_germany);
return 0;
}