[libc-commits] [libc] [libc][stdlib] Simplify getenv_test by using strcmp instead of custom helper (PR #163055)

via libc-commits libc-commits at lists.llvm.org
Wed Nov 5 10:09:39 PST 2025


================
@@ -7,43 +7,24 @@
 //===----------------------------------------------------------------------===//
 
 #include "src/stdlib/getenv.h"
+#include "src/string/strcmp.h"
 
 #include "test/IntegrationTest/test.h"
 
-static bool my_streq(const char *lhs, const char *rhs) {
-  if (lhs == rhs)
-    return true;
-  if (((lhs == static_cast<char *>(nullptr)) &&
-       (rhs != static_cast<char *>(nullptr))) ||
-      ((lhs != static_cast<char *>(nullptr)) &&
-       (rhs == static_cast<char *>(nullptr)))) {
-    return false;
-  }
-  const char *l, *r;
-  for (l = lhs, r = rhs; *l != '\0' && *r != '\0'; ++l, ++r)
-    if (*l != *r)
-      return false;
-
-  return *l == '\0' && *r == '\0';
-}
-
 TEST_MAIN([[maybe_unused]] int argc, [[maybe_unused]] char **argv,
           [[maybe_unused]] char **envp) {
-  ASSERT_TRUE(
-      my_streq(LIBC_NAMESPACE::getenv(""), static_cast<char *>(nullptr)));
-  ASSERT_TRUE(
-      my_streq(LIBC_NAMESPACE::getenv("="), static_cast<char *>(nullptr)));
-  ASSERT_TRUE(my_streq(LIBC_NAMESPACE::getenv("MISSING ENV VARIABLE"),
-                       static_cast<char *>(nullptr)));
-  ASSERT_FALSE(
-      my_streq(LIBC_NAMESPACE::getenv("PATH"), static_cast<char *>(nullptr)));
-  ASSERT_TRUE(my_streq(LIBC_NAMESPACE::getenv("FRANCE"), "Paris"));
-  ASSERT_FALSE(my_streq(LIBC_NAMESPACE::getenv("FRANCE"), "Berlin"));
-  ASSERT_TRUE(my_streq(LIBC_NAMESPACE::getenv("GERMANY"), "Berlin"));
-  ASSERT_TRUE(
-      my_streq(LIBC_NAMESPACE::getenv("FRANC"), static_cast<char *>(nullptr)));
-  ASSERT_TRUE(my_streq(LIBC_NAMESPACE::getenv("FRANCE1"),
-                       static_cast<char *>(nullptr)));
+  ASSERT_TRUE(LIBC_NAMESPACE::getenv("") == nullptr);
+  ASSERT_TRUE(LIBC_NAMESPACE::getenv("=") == nullptr);
+  ASSERT_TRUE(LIBC_NAMESPACE::getenv("MISSING ENV VARIABLE") == nullptr);
+  ASSERT_FALSE(LIBC_NAMESPACE::getenv("PATH") == nullptr);
+  ASSERT_EQ(LIBC_NAMESPACE::strcmp(LIBC_NAMESPACE::getenv("FRANCE"), "Paris"),
+            0);
+  ASSERT_NE(LIBC_NAMESPACE::strcmp(LIBC_NAMESPACE::getenv("FRANCE"), "Berlin"),
+            0);
+  ASSERT_EQ(LIBC_NAMESPACE::strcmp(LIBC_NAMESPACE::getenv("GERMANY"), "Berlin"),
+            0);
----------------
lntue wrote:

Can you use `inline_strcmp` from https://github.com/llvm/llvm-project/blob/main/libc/src/string/memory_utils/inline_strcmp.h instead, so that this test won't depend on `libc.src.string.strcmp` entrypoint?

https://github.com/llvm/llvm-project/pull/163055


More information about the libc-commits mailing list