commit: fbf7ee544f0efeb6f5a8254f6a994d1daa5a4573 Author: Fabian Groffen <grobian <AT> gentoo <DOT> org> AuthorDate: Fri Jan 3 12:39:02 2020 +0000 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org> CommitDate: Fri Jan 3 12:39:02 2020 +0000 URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=fbf7ee54
tests/qmerge: add 2-level negation INSTALL_MASK test Bug: https://bugs.gentoo.org/699376 Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org> TODO.md | 3 +++ qmerge.c | 8 ++++---- tests/qmerge/dotest | 15 ++++++++++++++- tests/qmerge/packages/Packages | 6 +++--- tests/qmerge/packages/sys-devel/qmerge-test-1.3.tbz2 | Bin 7264 -> 7289 bytes 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/TODO.md b/TODO.md index 71a0ce1..e401123 100644 --- a/TODO.md +++ b/TODO.md @@ -40,6 +40,7 @@ - test should work on local vdb (so TRAVIS can test it too) - fixup lame misnaming of force\_download (--fetch/--force) actually not-forcing things +- use xpak.h instead of shelling out to qxpak binary # qdepends - -v should lookup whether packages are installed for || cases/colouring @@ -50,6 +51,8 @@ - newer installed version available - integrate qxpak and qtbz2 with this package (the latter are confusing, and qpkg is doing parts of qtbz2's compose +- share install\_mask code from qmerge to handle negatives from + pkg\_install\_mask too # qgrep - make it use standard xarray instead of its own buf\_list diff --git a/qmerge.c b/qmerge.c index 588b868..464f45f 100644 --- a/qmerge.c +++ b/qmerge.c @@ -573,15 +573,15 @@ install_mask_pwd(int iargc, char **iargv, const struct stat * const st, int fd) } #if EBUG - printf("applying install masks:\n"); + fprintf(warnout, "applying install masks:\n"); for (cnt = 0; cnt < masksc; cnt++) { ssize_t plen = (ssize_t)masksv[cnt][0]; - printf("%3zd ", plen); + fprintf(warnout, "%3zd ", plen); if (plen < 0) plen = -plen; for (i = 1; i <= plen; i++) - printf("%s ", masksv[cnt][i]); - printf(" %zd\n", (size_t)masksv[cnt][i]); + fprintf(warnout, "%s ", masksv[cnt][i]); + fprintf(warnout, " %zd\n", (size_t)masksv[cnt][i]); } #endif diff --git a/tests/qmerge/dotest b/tests/qmerge/dotest index 23f3ca7..1bbf5f7 100755 --- a/tests/qmerge/dotest +++ b/tests/qmerge/dotest @@ -29,7 +29,7 @@ out=$(yes | qmerge -F qmerge-test) tend $? "qmerge-test: [N] basic merge" || die "${out}" [[ ${out} != *"FAIL"* ]] -tend $? "qmerge-test: [N] FAIL messages" || die "${out}" +tend $? "qmerge-test: [N] no FAIL messages" || die "${out}" order=$(echo "${out}" | awk '$1 == ">>>" && $2 ~ /^pkg_/ { printf "%s ", $NF }') [[ ${order} == "pkg_pretend pkg_setup pkg_preinst pkg_postinst " ]] @@ -105,6 +105,19 @@ tend $? "qmerge-test: [M] uninstall" || die "${out}" [[ ! -e ${ROOT}/etc ]] tend $? "qmerge-test: [M] /etc removed" || die "$(treedir "${ROOT}")" +export INSTALL_MASK="/usr -/usr/bin/dummy" +out=$(yes | qmerge -F qmerge-test) +tend $? "qmerge-test: [M] install only /usr/bin/dummy" || die "${out}" +[[ -e ${ROOT}/usr/bin/dummy ]] +tend $? "qmerge-test: [M] found /usr/bin/dummy" || die "$(treedir "${ROOT}")" +[[ ! -e ${ROOT}/usr/bin/qmerge-test ]] +tend $? "qmerge-test: [M] /usr/bin/qmerge-test absent" || die "$(treedir "${ROOT}")" + +out=$(yes | qmerge -FU qmerge-test) +tend $? "qmerge-test: [M] uninstall" || die "${out}" +[[ ! -e ${ROOT}/usr/bin/dummy ]] +tend $? "qmerge-test: [M] /usr/bin/dummy removed" || die "$(treedir "${ROOT}")" + set -e cleantmpdir diff --git a/tests/qmerge/packages/Packages b/tests/qmerge/packages/Packages index c03180c..e6fa3a2 100644 --- a/tests/qmerge/packages/Packages +++ b/tests/qmerge/packages/Packages @@ -22,9 +22,9 @@ DESC: my desc EAPI: 4 KEYWORDS: ~amd64 ~x86 LICENSE: GPL-2 -MD5: 07aef33aaacf4aeccd012712aff93f19 +MD5: 6c6633c64b0666f04df62da2f8b30d32 MTIME: 1367290147 -SHA1: 38d8ababc531e2e12783326ef73f0771371ece93 -SIZE: 7264 +SHA1: 47f731ce30149f5ab15f0c47dc19b46e4b189d60 +SIZE: 7289 REPO: local diff --git a/tests/qmerge/packages/sys-devel/qmerge-test-1.3.tbz2 b/tests/qmerge/packages/sys-devel/qmerge-test-1.3.tbz2 index feeff2e..24b6164 100644 Binary files a/tests/qmerge/packages/sys-devel/qmerge-test-1.3.tbz2 and b/tests/qmerge/packages/sys-devel/qmerge-test-1.3.tbz2 differ