From ef8bec5f8c3d7b60d2d5148f3386f00c3a29ffc2 Mon Sep 17 00:00:00 2001 From: chegJH Date: Tue, 10 May 2022 18:06:53 +0800 Subject: [PATCH 07/16] Adapt to bionic libc, improve lcov coverage Signed-off-by: chegJH --- src/utils/cutils/CMakeLists.txt | 4 ++++ test/cutils/utils_pwgr/passwd_sample | 1 + test/cutils/utils_pwgr/utils_pwgr_ut.cc | 24 ++++++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/src/utils/cutils/CMakeLists.txt b/src/utils/cutils/CMakeLists.txt index 0ecad671..30414d91 100644 --- a/src/utils/cutils/CMakeLists.txt +++ b/src/utils/cutils/CMakeLists.txt @@ -2,6 +2,10 @@ aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} local_cutils_srcs) add_subdirectory(map) +if (NOT ANDROID) + list(REMOVE_ITEM local_cutils_srcs "${CMAKE_CURRENT_SOURCE_DIR}/utils_pwgr.c") +endif() + set(CUTILS_SRCS ${local_cutils_srcs} ${MAP_SRCS} diff --git a/test/cutils/utils_pwgr/passwd_sample b/test/cutils/utils_pwgr/passwd_sample index d4f3250d..76853454 100644 --- a/test/cutils/utils_pwgr/passwd_sample +++ b/test/cutils/utils_pwgr/passwd_sample @@ -3,6 +3,7 @@ bin:x:1:1:bin:/bin:/sbin/nologin bin:x:-1:1:bin:/bin:/sbin/nologin uidonly:x:1::bin:/bin:/sbin/nologin ::::1:1:bin:/bin:/sbin/nologin +root:x: #npt:*:66:77::/etc/ntp:/sbin/nologin npt:*:66:77::/etc/ntp:/sbin/nologin diff --git a/test/cutils/utils_pwgr/utils_pwgr_ut.cc b/test/cutils/utils_pwgr/utils_pwgr_ut.cc index 1a121f88..1ed8eaa1 100644 --- a/test/cutils/utils_pwgr/utils_pwgr_ut.cc +++ b/test/cutils/utils_pwgr/utils_pwgr_ut.cc @@ -24,6 +24,7 @@ TEST(utils_pwgr, test_getpwent_r) struct passwd pw; struct passwd *ppw = nullptr; + struct passwd *ppw_alter = &pw; char buf[BUFSIZ]; std::vector> testcase = { @@ -36,6 +37,17 @@ TEST(utils_pwgr, test_getpwent_r) std::make_tuple("-npt", "*", 0, 0, "", "/etc/ntp", "/sbin/nologin") }; + ASSERT_EQ(util_getpwent_r(NULL, &pw, buf, sizeof(buf), &ppw), -1); + ASSERT_EQ(util_getpwent_r(f_pw, &pw, NULL, 0, &ppw), -1); + ASSERT_EQ(util_getpwent_r(f_pw, &pw, NULL, 1, &ppw), -1); + ASSERT_EQ(util_getpwent_r(f_pw, &pw, buf, sizeof(buf), &ppw_alter), -1); + + while (!feof(f_pw)) { + (void)getc(f_pw); + } + ASSERT_EQ(util_getpwent_r(f_pw, &pw, buf, sizeof(buf), &ppw), ENOENT); + rewind(f_pw); + for (const auto &elem : testcase) { ASSERT_EQ(util_getpwent_r(f_pw, &pw, buf, sizeof(buf), &ppw), 0); ASSERT_STREQ(pw.pw_name, std::get<0>(elem).c_str()); @@ -61,6 +73,7 @@ TEST(utils_pwgr, test_getgrent_r) struct group gr{0}; struct group *pgr = nullptr; + struct group *pgr_alter = &gr; char buf[BUFSIZ]; size_t i = 0; size_t j = 0; @@ -80,6 +93,17 @@ TEST(utils_pwgr, test_getgrent_r) std::make_tuple("adm", "x", 4), }; + ASSERT_EQ(util_getgrent_r(NULL, &gr, buf, sizeof(buf), &pgr), -1); + ASSERT_EQ(util_getgrent_r(f_gr, &gr, NULL, 0, &pgr), -1); + ASSERT_EQ(util_getgrent_r(f_gr, &gr, NULL, 1, &pgr), -1); + ASSERT_EQ(util_getgrent_r(f_gr, &gr, buf, sizeof(buf), &pgr_alter), -1); + + while (!feof(f_gr)) { + (void)getc(f_gr); + } + ASSERT_EQ(util_getgrent_r(f_gr, &gr, buf, sizeof(buf), &pgr), ENOENT); + rewind(f_gr); + for (; i < string_list.size(); ++i) { ASSERT_EQ(util_getgrent_r(f_gr, &gr, buf, sizeof(buf), &pgr), 0); ASSERT_STREQ(gr.gr_name, std::get<0>(testcase[i]).c_str()); -- 2.20.1