diff --git a/tests/posix/getentropy/CMakeLists.txt b/tests/posix/c_lib_ext/CMakeLists.txt similarity index 52% rename from tests/posix/getentropy/CMakeLists.txt rename to tests/posix/c_lib_ext/CMakeLists.txt index 27970bfe2a6..24c7cfd2194 100644 --- a/tests/posix/getentropy/CMakeLists.txt +++ b/tests/posix/c_lib_ext/CMakeLists.txt @@ -1,10 +1,12 @@ -# Copyright (c) 2024 Google LLC -# # SPDX-License-Identifier: Apache-2.0 cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(getentropy) +project(posix_c_lib_ext) FILE(GLOB app_sources src/*.c) + target_sources(app PRIVATE ${app_sources}) + +target_include_directories(app PRIVATE ${ZEPHYR_BASE}/lib/posix/options/getopt) +target_compile_options(app PRIVATE -U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=200809L) diff --git a/tests/posix/getentropy/prj.conf b/tests/posix/c_lib_ext/prj.conf similarity index 75% rename from tests/posix/getentropy/prj.conf rename to tests/posix/c_lib_ext/prj.conf index 9d73893e003..7e8b0675c52 100644 --- a/tests/posix/getentropy/prj.conf +++ b/tests/posix/c_lib_ext/prj.conf @@ -1,3 +1,5 @@ -CONFIG_ENTROPY_GENERATOR=y -CONFIG_POSIX_C_LIB_EXT=y CONFIG_ZTEST=y + +CONFIG_POSIX_C_LIB_EXT=y +CONFIG_GETOPT_LONG=y +CONFIG_ENTROPY_GENERATOR=y diff --git a/tests/posix/common/src/fnmatch.c b/tests/posix/c_lib_ext/src/fnmatch.c similarity index 97% rename from tests/posix/common/src/fnmatch.c rename to tests/posix/c_lib_ext/src/fnmatch.c index b18841080d5..66b6aadf86d 100644 --- a/tests/posix/common/src/fnmatch.c +++ b/tests/posix/c_lib_ext/src/fnmatch.c @@ -4,15 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include - +#include #include /* * Adapted from * https://git.musl-libc.org/cgit/libc-testsuite/tree/fnmatch.c */ -ZTEST(fnmatch, test_fnmatch) +ZTEST(posix_c_lib_ext, test_fnmatch) { /* Note: commented out lines indicate known problems to be addressed in #55186 */ @@ -82,5 +81,3 @@ ZTEST(fnmatch, test_fnmatch) zassert_ok(fnmatch("a*b", "a.b", FNM_PATHNAME | FNM_PERIOD)); zassert_ok(fnmatch("a[.]b", "a.b", FNM_PATHNAME | FNM_PERIOD)); } - -ZTEST_SUITE(fnmatch, NULL, NULL, NULL, NULL, NULL); diff --git a/tests/posix/getentropy/src/main.c b/tests/posix/c_lib_ext/src/getentropy.c similarity index 67% rename from tests/posix/getentropy/src/main.c rename to tests/posix/c_lib_ext/src/getentropy.c index 010207e678d..f04e54becb0 100644 --- a/tests/posix/getentropy/src/main.c +++ b/tests/posix/c_lib_ext/src/getentropy.c @@ -4,13 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include #include -#include - -ZTEST(getentropy_test_suite, test_getentropy_too_large) +ZTEST(posix_c_lib_ext, test_getentropy_too_large) { - uint8_t buf[256 + 1] = { 0 }; + uint8_t buf[256 + 1] = {0}; int ret; ret = getentropy(buf, sizeof(buf)); @@ -18,7 +17,7 @@ ZTEST(getentropy_test_suite, test_getentropy_too_large) zassert_equal(errno, EIO); } -ZTEST(getentropy_test_suite, test_getentropy_null_buffer) +ZTEST(posix_c_lib_ext, test_getentropy_null_buffer) { int ret; @@ -27,18 +26,18 @@ ZTEST(getentropy_test_suite, test_getentropy_null_buffer) zassert_equal(errno, EFAULT); } -ZTEST(getentropy_test_suite, test_getentropy_max_size) +ZTEST(posix_c_lib_ext, test_getentropy_max_size) { - uint8_t buf[256] = { 0 }; + uint8_t buf[256] = {0}; int ret; ret = getentropy(buf, sizeof(buf)); zassert_equal(ret, 0); } -ZTEST(getentropy_test_suite, test_getentropy) +ZTEST(posix_c_lib_ext, test_getentropy) { - uint8_t zero[16] = { 0 }; + uint8_t zero[16] = {0}; uint8_t buf1[16]; uint8_t buf2[16]; int ret; @@ -53,5 +52,3 @@ ZTEST(getentropy_test_suite, test_getentropy) zassert_true(memcmp(buf2, zero, sizeof(zero)) != 0); zassert_true(memcmp(buf1, buf2, sizeof(buf1)) != 0); } - -ZTEST_SUITE(getentropy_test_suite, NULL, NULL, NULL, NULL, NULL); diff --git a/tests/posix/getopt/src/main.c b/tests/posix/c_lib_ext/src/getopt.c similarity index 71% rename from tests/posix/getopt/src/main.c rename to tests/posix/c_lib_ext/src/getopt.c index 158d0dd085e..4fa9a670f06 100644 --- a/tests/posix/getopt/src/main.c +++ b/tests/posix/c_lib_ext/src/getopt.c @@ -9,27 +9,17 @@ * */ -#include -#include -#include -#include #include +#include -ZTEST_SUITE(getopt_test_suite, NULL, NULL, NULL, NULL, NULL); +#include +#include +#include -ZTEST(getopt_test_suite, test_getopt_basic) +ZTEST(posix_c_lib_ext, test_getopt_basic) { static const char *const nargv[] = { - "cmd_name", - "-b", - "-a", - "-h", - "-c", - "-l", - "-h", - "-a", - "-i", - "-w", + "cmd_name", "-b", "-a", "-h", "-c", "-l", "-h", "-a", "-i", "-w", }; static const char *accepted_opt = "abchw"; static const char *expected = "bahc?ha?w"; @@ -63,7 +53,7 @@ enum getopt_idx { GETOPT_IDX_OPTARG }; -ZTEST(getopt_test_suite, test_getopt) +ZTEST(posix_c_lib_ext, test_getopt) { struct getopt_state *state; static const char *test_opts = "ac:"; @@ -96,8 +86,7 @@ ZTEST(getopt_test_suite, test_getopt) zassert_equal(0, strcmp(argv[GETOPT_IDX_OPTARG], state->optarg), "unexpected optarg result"); /* Non thread safe usage: */ - zassert_equal(0, strcmp(argv[GETOPT_IDX_OPTARG], optarg), - "unexpected optarg result"); + zassert_equal(0, strcmp(argv[GETOPT_IDX_OPTARG], optarg), "unexpected optarg result"); } enum getopt_long_idx { @@ -107,7 +96,7 @@ enum getopt_long_idx { GETOPT_LONG_IDX_OPTARG }; -ZTEST(getopt_test_suite, test_getopt_long) +ZTEST(posix_c_lib_ext, test_getopt_long) { /* Below test is based on example * https://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Option-Example.html @@ -120,16 +109,16 @@ ZTEST(getopt_test_suite, test_getopt_long) int c; struct option long_options[] = { /* These options set a flag. */ - {"verbose", no_argument, &verbose_flag, 1}, - {"brief", no_argument, &verbose_flag, 0}, + {"verbose", no_argument, &verbose_flag, 1}, + {"brief", no_argument, &verbose_flag, 0}, /* These options don’t set a flag. * We distinguish them by their indices. */ - {"add", no_argument, 0, 'a'}, - {"create", required_argument, 0, 'c'}, - {"delete", required_argument, 0, 'd'}, - {"long", required_argument, 0, 'e'}, - {0, 0, 0, 0} + {"add", no_argument, 0, 'a'}, + {"create", required_argument, 0, 'c'}, + {"delete", required_argument, 0, 'd'}, + {"long", required_argument, 0, 'e'}, + {0, 0, 0, 0}, }; static const char *accepted_opt = "ac:d:e:"; @@ -170,64 +159,51 @@ ZTEST(getopt_test_suite, test_getopt_long) /* Get state of the current thread */ getopt_init(); argv = (char **)argv1; - c = getopt_long(argc1, argv, accepted_opt, - long_options, &option_index); + c = getopt_long(argc1, argv, accepted_opt, long_options, &option_index); zassert_equal(verbose_flag, 1, "verbose flag expected"); c = getopt_long(argc1, argv, accepted_opt, long_options, &option_index); state = getopt_state_get(); zassert_equal('c', c, "unexpected option"); - zassert_equal(0, strcmp(state->optarg, argv[GETOPT_LONG_IDX_OPTARG]), - "unexpected optarg"); - c = getopt_long(argc1, argv, accepted_opt, - long_options, &option_index); + zassert_equal(0, strcmp(state->optarg, argv[GETOPT_LONG_IDX_OPTARG]), "unexpected optarg"); + c = getopt_long(argc1, argv, accepted_opt, long_options, &option_index); zassert_equal(-1, c, "getopt_long shall return -1"); /* Test scenario 2 */ argv = (char **)argv2; getopt_init(); - c = getopt_long(argc2, argv, accepted_opt, - long_options, &option_index); + c = getopt_long(argc2, argv, accepted_opt, long_options, &option_index); zassert_equal(verbose_flag, 0, "verbose flag expected"); - c = getopt_long(argc2, argv, accepted_opt, - long_options, &option_index); + c = getopt_long(argc2, argv, accepted_opt, long_options, &option_index); zassert_equal('d', c, "unexpected option"); state = getopt_state_get(); - zassert_equal(0, strcmp(state->optarg, argv[GETOPT_LONG_IDX_OPTARG]), - "unexpected optarg"); - c = getopt_long(argc2, argv, accepted_opt, - long_options, &option_index); + zassert_equal(0, strcmp(state->optarg, argv[GETOPT_LONG_IDX_OPTARG]), "unexpected optarg"); + c = getopt_long(argc2, argv, accepted_opt, long_options, &option_index); zassert_equal(-1, c, "getopt_long shall return -1"); /* Test scenario 3 */ argv = (char **)argv3; getopt_init(); - c = getopt_long(argc3, argv, accepted_opt, - long_options, &option_index); + c = getopt_long(argc3, argv, accepted_opt, long_options, &option_index); zassert_equal(verbose_flag, 0, "verbose flag expected"); - c = getopt_long(argc3, argv, accepted_opt, - long_options, &option_index); + c = getopt_long(argc3, argv, accepted_opt, long_options, &option_index); zassert_equal('a', c, "unexpected option"); - c = getopt_long(argc3, argv, accepted_opt, - long_options, &option_index); + c = getopt_long(argc3, argv, accepted_opt, long_options, &option_index); zassert_equal(-1, c, "getopt_long shall return -1"); /* Test scenario 4 */ argv = (char **)argv4; getopt_init(); - c = getopt_long(argc4, argv, accepted_opt, - long_options, &option_index); + c = getopt_long(argc4, argv, accepted_opt, long_options, &option_index); zassert_equal(verbose_flag, 0, "verbose flag expected"); - c = getopt_long(argc4, argv, accepted_opt, - long_options, &option_index); + c = getopt_long(argc4, argv, accepted_opt, long_options, &option_index); /* Function was called with option '-l'. It is expected it will be * NOT evaluated to '--long' which has flag 'e'. */ zassert_not_equal('e', c, "unexpected option match"); - c = getopt_long(argc4, argv, accepted_opt, - long_options, &option_index); + c = getopt_long(argc4, argv, accepted_opt, long_options, &option_index); } -ZTEST(getopt_test_suite, test_getopt_long_only) +ZTEST(posix_c_lib_ext, test_getopt_long_only) { /* Below test is based on example * https://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Option-Example.html @@ -240,16 +216,16 @@ ZTEST(getopt_test_suite, test_getopt_long_only) int c; struct option long_options[] = { /* These options set a flag. */ - {"verbose", no_argument, &verbose_flag, 1}, - {"brief", no_argument, &verbose_flag, 0}, + {"verbose", no_argument, &verbose_flag, 1}, + {"brief", no_argument, &verbose_flag, 0}, /* These options don’t set a flag. * We distinguish them by their indices. */ - {"add", no_argument, 0, 'a'}, - {"create", required_argument, 0, 'c'}, - {"delete", required_argument, 0, 'd'}, - {"long", required_argument, 0, 'e'}, - {0, 0, 0, 0} + {"add", no_argument, 0, 'a'}, + {"create", required_argument, 0, 'c'}, + {"delete", required_argument, 0, 'd'}, + {"long", required_argument, 0, 'e'}, + {0, 0, 0, 0}, }; static const char *accepted_opt = "ac:d:e:"; @@ -289,62 +265,48 @@ ZTEST(getopt_test_suite, test_getopt_long_only) /* Test scenario 1 */ argv = (char **)argv1; getopt_init(); - c = getopt_long_only(argc1, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc1, argv, accepted_opt, long_options, &option_index); zassert_equal(verbose_flag, 1, "verbose flag expected"); - c = getopt_long_only(argc1, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc1, argv, accepted_opt, long_options, &option_index); state = getopt_state_get(); zassert_equal('c', c, "unexpected option"); - zassert_equal(0, strcmp(state->optarg, argv[GETOPT_LONG_IDX_OPTARG]), - "unexpected optarg"); - c = getopt_long_only(argc1, argv, accepted_opt, - long_options, &option_index); + zassert_equal(0, strcmp(state->optarg, argv[GETOPT_LONG_IDX_OPTARG]), "unexpected optarg"); + c = getopt_long_only(argc1, argv, accepted_opt, long_options, &option_index); zassert_equal(-1, c, "getopt_long_only shall return -1"); /* Test scenario 2 */ argv = (char **)argv2; getopt_init(); state = getopt_state_get(); - c = getopt_long_only(argc2, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc2, argv, accepted_opt, long_options, &option_index); zassert_equal(verbose_flag, 0, "verbose flag expected"); - c = getopt_long_only(argc2, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc2, argv, accepted_opt, long_options, &option_index); state = getopt_state_get(); zassert_equal('d', c, "unexpected option"); - zassert_equal(0, strcmp(state->optarg, argv[GETOPT_LONG_IDX_OPTARG]), - "unexpected optarg"); - c = getopt_long_only(argc2, argv, accepted_opt, - long_options, &option_index); + zassert_equal(0, strcmp(state->optarg, argv[GETOPT_LONG_IDX_OPTARG]), "unexpected optarg"); + c = getopt_long_only(argc2, argv, accepted_opt, long_options, &option_index); zassert_equal(-1, c, "getopt_long_only shall return -1"); /* Test scenario 3 */ argv = (char **)argv3; getopt_init(); - c = getopt_long_only(argc3, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc3, argv, accepted_opt, long_options, &option_index); zassert_equal(verbose_flag, 0, "verbose flag expected"); - c = getopt_long_only(argc3, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc3, argv, accepted_opt, long_options, &option_index); zassert_equal('a', c, "unexpected option"); - c = getopt_long_only(argc3, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc3, argv, accepted_opt, long_options, &option_index); zassert_equal(-1, c, "getopt_long_only shall return -1"); /* Test scenario 4 */ argv = (char **)argv4; getopt_init(); - c = getopt_long_only(argc4, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc4, argv, accepted_opt, long_options, &option_index); zassert_equal(verbose_flag, 0, "verbose flag expected"); - c = getopt_long_only(argc4, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc4, argv, accepted_opt, long_options, &option_index); /* Function was called with option '-l'. It is expected it will be * evaluated to '--long' which has flag 'e'. */ zassert_equal('e', c, "unexpected option"); - c = getopt_long_only(argc4, argv, accepted_opt, - long_options, &option_index); + c = getopt_long_only(argc4, argv, accepted_opt, long_options, &option_index); } diff --git a/tests/posix/c_lib_ext/src/main.c b/tests/posix/c_lib_ext/src/main.c new file mode 100644 index 00000000000..e5ea2e2d026 --- /dev/null +++ b/tests/posix/c_lib_ext/src/main.c @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2024 Marvin Ouma + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +ZTEST_SUITE(posix_c_lib_ext, NULL, NULL, NULL, NULL, NULL); diff --git a/tests/posix/getentropy/testcase.yaml b/tests/posix/c_lib_ext/testcase.yaml similarity index 72% rename from tests/posix/getentropy/testcase.yaml rename to tests/posix/c_lib_ext/testcase.yaml index c34d8d04343..8c6859289e8 100644 --- a/tests/posix/getentropy/testcase.yaml +++ b/tests/posix/c_lib_ext/testcase.yaml @@ -3,32 +3,34 @@ common: not CONFIG_NATIVE_LIBC tags: - posix - - getentropy + - c_lib_ext # 1 tier0 platform per supported architecture platform_key: - arch - simulation + min_flash: 64 + min_ram: 32 tests: - portability.posix.getentropy: + portability.posix.c_lib_ext: extra_configs: - CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=256 - portability.posix.getentropy.armclang_std_libc: + portability.posix.c_lib_ext.armclang_std_libc: toolchain_allow: armclang extra_configs: - CONFIG_ARMCLANG_STD_LIBC=y - portability.posix.getentropy.arcmwdtlib: + portability.posix.c_lib_ext.arcmwdtlib: toolchain_allow: arcmwdt extra_configs: - CONFIG_ARCMWDT_LIBC=y - portability.posix.getentropy.minimal: + portability.posix.c_lib_ext.minimal: extra_configs: - CONFIG_MINIMAL_LIBC=y - CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=256 - portability.posix.getentropy.newlib: + portability.posix.c_lib_ext.newlib: filter: TOOLCHAIN_HAS_NEWLIB == 1 extra_configs: - CONFIG_NEWLIB_LIBC=y - portability.posix.getentropy.picolibc: + portability.posix.c_lib_ext.picolibc: tags: picolibc filter: CONFIG_PICOLIBC_SUPPORTED extra_configs: diff --git a/tests/posix/getopt/CMakeLists.txt b/tests/posix/getopt/CMakeLists.txt deleted file mode 100644 index a8d0f3c98c3..00000000000 --- a/tests/posix/getopt/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(getopt) - -FILE(GLOB app_sources src/*.c) -target_sources(app PRIVATE ${app_sources}) diff --git a/tests/posix/getopt/boards/hifive1.conf b/tests/posix/getopt/boards/hifive1.conf deleted file mode 100644 index 9c6cd44a398..00000000000 --- a/tests/posix/getopt/boards/hifive1.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_NEWLIB_LIBC_MIN_REQUIRED_HEAP_SIZE=1024 diff --git a/tests/posix/getopt/boards/nucleo_c031c6.conf b/tests/posix/getopt/boards/nucleo_c031c6.conf deleted file mode 100644 index 9784fa5ef9b..00000000000 --- a/tests/posix/getopt/boards/nucleo_c031c6.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_NEWLIB_LIBC_MIN_REQUIRED_HEAP_SIZE=4096 diff --git a/tests/posix/getopt/prj.conf b/tests/posix/getopt/prj.conf deleted file mode 100644 index dc97b22a9b5..00000000000 --- a/tests/posix/getopt/prj.conf +++ /dev/null @@ -1,5 +0,0 @@ -CONFIG_POSIX_C_LIB_EXT=y -CONFIG_GETOPT_LONG=y -CONFIG_LOG=n -CONFIG_ZTEST=y -CONFIG_TEST_LOGGING_DEFAULTS=n diff --git a/tests/posix/getopt/testcase.yaml b/tests/posix/getopt/testcase.yaml deleted file mode 100644 index 2b5e1f977d8..00000000000 --- a/tests/posix/getopt/testcase.yaml +++ /dev/null @@ -1,29 +0,0 @@ -common: - filter: not CONFIG_NATIVE_LIBC - tags: - - posix - - getopt - # 1 tier0 platform per supported architecture - platform_key: - - arch - - simulation - min_flash: 64 - min_ram: 32 -tests: - portability.posix.getopt: {} - portability.posix.getopt.minimal: - extra_configs: - - CONFIG_MINIMAL_LIBC=y - portability.posix.getopt.newlib: - filter: TOOLCHAIN_HAS_NEWLIB == 1 - extra_configs: - - CONFIG_NEWLIB_LIBC=y - portability.posix.getopt.picolibc: - tags: picolibc - filter: CONFIG_PICOLIBC_SUPPORTED - extra_configs: - - CONFIG_PICOLIBC=y - portability.posix.getopt.logger: - extra_configs: - - CONFIG_LOG=y - build_only: true