aboutsummaryrefslogtreecommitdiffstats
path: root/tests/libgen_basename_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/libgen_basename_test.cpp')
-rw-r--r--tests/libgen_basename_test.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/libgen_basename_test.cpp b/tests/libgen_basename_test.cpp
index 91ae960fe3..1202af6e2b 100644
--- a/tests/libgen_basename_test.cpp
+++ b/tests/libgen_basename_test.cpp
@@ -18,6 +18,7 @@
#define _GNU_SOURCE 1
#endif
+#if !defined(MUSL)
#include <string.h>
#if defined(basename)
@@ -28,9 +29,11 @@ static const char* gnu_basename(const char* in) {
return basename(in);
}
+#endif
+
#include <libgen.h>
-#if !defined(basename)
+#if !defined(basename) && !defined(MUSL)
#error basename should be defined at this point
#endif
@@ -41,12 +44,14 @@ static char* posix_basename(char* in) {
#include <errno.h>
#include <gtest/gtest.h>
+#if !defined(MUSL)
static void __TestGnuBasename(const char* in, const char* expected_out, int line) {
errno = 0;
const char* out = gnu_basename(in);
ASSERT_STREQ(expected_out, out) << "(" << line << "): " << in << std::endl;
ASSERT_EQ(0, errno) << "(" << line << "): " << in << std::endl;
}
+#endif
static void __TestPosixBasename(const char* in, const char* expected_out, int line) {
char* writable_in = (in != nullptr) ? strdup(in) : nullptr;
@@ -61,6 +66,7 @@ static void __TestPosixBasename(const char* in, const char* expected_out, int li
#define TestPosixBasename(in, expected) __TestPosixBasename(in, expected, __LINE__)
TEST(libgen_basename, gnu_basename) {
+#if !defined(MUSL)
// GNU's basename doesn't accept NULL
// TestGnuBasename(NULL, ".");
TestGnuBasename("", "");
@@ -73,6 +79,9 @@ TEST(libgen_basename, gnu_basename) {
TestGnuBasename("..", "..");
TestGnuBasename("///", "");
TestGnuBasename("//usr//lib//", "");
+#else
+ GTEST_SKIP() << "musl doesn't have GNU basename";
+ #endif
}
TEST(libgen_basename, posix_basename) {