diff --git a/src/include/musl/gnu/libc-version.h b/src/include/musl/gnu/libc-version.h new file mode 100644 index 0000000000..328b53e166 --- /dev/null +++ b/src/include/musl/gnu/libc-version.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +#include + +static inline const char* gnu_get_libc_version(void) { + return ""; +} diff --git a/src/test/test-condition.c b/src/test/test-condition.c index 11b3a42418..1bae2e3dd8 100644 --- a/src/test/test-condition.c +++ b/src/test/test-condition.c @@ -669,12 +669,14 @@ TEST(condition_test_version) { condition_free(condition); /* Test glibc version */ + bool has = !isempty(gnu_get_libc_version()); + ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc > 1", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_EQ(condition_test(condition, environ), has); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc < 2", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_EQ(condition_test(condition, environ), !has); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc < 9999", false, false))); @@ -686,15 +688,27 @@ TEST(condition_test_version) { condition_free(condition); v = strjoina("glibc = ", gnu_get_libc_version()); - ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + if (has) + ASSERT_OK_POSITIVE(condition_test(condition, environ)); + else + ASSERT_ERROR(condition_test(condition, environ), EINVAL); condition_free(condition); v = strjoina("glibc != ", gnu_get_libc_version()); - ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + if (has) + ASSERT_OK_ZERO(condition_test(condition, environ)); + else + ASSERT_ERROR(condition_test(condition, environ), EINVAL); + condition_free(condition); + + ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc $= ?*", false, false))); + ASSERT_OK_EQ(condition_test(condition, environ), has); + condition_free(condition); + + ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc !$= ?*", false, false))); + ASSERT_OK_EQ(condition_test(condition, environ), !has); condition_free(condition); }