aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'pym/gentoolkit')
-rwxr-xr-xpym/gentoolkit/merge_driver_ekeyword/test_merge_driver_ekeyword.py48
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/Makefile44
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/A.ebuild52
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/B.ebuild57
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/common-ancestor.ebuild52
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/expected.ebuild57
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/A.ebuild19
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/B.ebuild19
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/common-ancestor.ebuild19
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/expected.ebuild19
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/A.ebuild73
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/B.ebuild73
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/common-ancestor.ebuild73
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/A.ebuild19
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/B.ebuild19
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/common-ancestor.ebuild19
-rw-r--r--pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/expected.ebuild19
17 files changed, 681 insertions, 0 deletions
diff --git a/pym/gentoolkit/merge_driver_ekeyword/test_merge_driver_ekeyword.py b/pym/gentoolkit/merge_driver_ekeyword/test_merge_driver_ekeyword.py
new file mode 100755
index 0000000..b820030
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/test_merge_driver_ekeyword.py
@@ -0,0 +1,48 @@
+#!/usr/bin/python
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+"""Unittests for merge_driver_ekeyword"""
+
+import itertools
+import os
+import pathlib
+import pytest
+import shutil
+import tempfile
+
+from gentoolkit.merge_driver_ekeyword import merge_driver_ekeyword
+
+
+TESTDIR = pathlib.Path(__file__).parent / "tests"
+TESTDIRS = [os.path.dirname(x) for x in TESTDIR.rglob("common-ancestor.ebuild")]
+TESTDATA = itertools.product(TESTDIRS, (False, True))
+
+
+def file_contents(filename):
+ with open(filename) as file:
+ return file.readlines()
+
+
+@pytest.mark.parametrize("testdir,reverse", TESTDATA)
+def test_merge(testdir, reverse):
+ with tempfile.TemporaryDirectory() as tmpdir:
+ shutil.copytree(testdir, tmpdir, dirs_exist_ok=True)
+
+ O = os.path.join(tmpdir, "common-ancestor.ebuild")
+ if reverse:
+ A = os.path.join(tmpdir, "B.ebuild")
+ B = os.path.join(tmpdir, "A.ebuild")
+ else:
+ A = os.path.join(tmpdir, "A.ebuild")
+ B = os.path.join(tmpdir, "B.ebuild")
+ P = "expected.ebuild"
+ expected = os.path.join(tmpdir, P)
+
+ # A.ebuild and B.ebuild can be merged iff expected.ebuild exists.
+ if os.path.exists(expected):
+ assert 0 == merge_driver_ekeyword.main([O, A, B, P])
+ assert file_contents(expected) == file_contents(A)
+ else:
+ assert -1 == merge_driver_ekeyword.merge_keywords(O, A, B, P)
+ assert -1 == merge_driver_ekeyword.merge_keywords(O, B, A, P)
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/Makefile b/pym/gentoolkit/merge_driver_ekeyword/tests/Makefile
new file mode 100644
index 0000000..7c54308
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/Makefile
@@ -0,0 +1,44 @@
+TESTS = \
+ single-KEYWORDS-conflict \
+ multiple-KEYWORDS-conflict \
+ conflict-near-KEYWORDS \
+ non-KEYWORDS-conflict \
+ $(NULL)
+
+.PHONY: $(TESTS)
+
+all: $(TESTS)
+
+GENTOO-is-set:
+ @if [ -z "$(GENTOO)" ]; then \
+ echo GENTOO must be set to the path to gentoo.git; \
+ exit 1; \
+ fi
+
+single-KEYWORDS-conflict: GENTOO-is-set
+ mkdir -p $@
+ git -C "$(GENTOO)" show 27aaf96d86ce53c80c967130a31cf0bec5a07c27:x11-apps/xconsole/xconsole-1.1.0.ebuild > $@/common-ancestor.ebuild
+ sed -e 's/~arm ~arm64/arm ~arm64/' $@/common-ancestor.ebuild > $@/A.ebuild
+ sed -e 's/~arm ~arm64/~arm arm64/' $@/common-ancestor.ebuild > $@/B.ebuild
+ sed -e 's/~arm ~arm64/arm arm64/' $@/common-ancestor.ebuild > $@/expected.ebuild
+
+multiple-KEYWORDS-conflict: GENTOO-is-set
+ mkdir -p $@
+ git -C "$(GENTOO)" show 27aaf96d86ce53c80c967130a31cf0bec5a07c27:x11-apps/xconsole/xconsole-1.1.0.ebuild > $@/common-ancestor.ebuild
+ sed -e 's/~arm64/arm64/' -e 's/~ppc64/ppc64/' $@/common-ancestor.ebuild > $@/A.ebuild
+ sed -e 's/~amd64/amd64/' -e 's/~sparc/sparc/' $@/common-ancestor.ebuild > $@/B.ebuild
+ sed -e 's/~arm64/arm64/' -e 's/~ppc64/ppc64/' -e 's/~amd64/amd64/' -e 's/~sparc/sparc/' $@/common-ancestor.ebuild > $@/expected.ebuild
+
+conflict-near-KEYWORDS: GENTOO-is-set
+ mkdir -p $@
+ git -C "$(GENTOO)" show 128496a4717fb4085ea09066b92f53ae47e0341a:sys-fs/squashfs-tools-ng/squashfs-tools-ng-1.3.0.ebuild > $@/common-ancestor.ebuild
+ git -C "$(GENTOO)" show 2c5cd6c4e004dc5037761c4a7a64fe956cac4bc4:sys-fs/squashfs-tools-ng/squashfs-tools-ng-1.3.0.ebuild > $@/A.ebuild
+ git -C "$(GENTOO)" show 84e655a1f462a58154b701b9b8077ebf3071e82f:sys-fs/squashfs-tools-ng/squashfs-tools-ng-1.3.0.ebuild > $@/B.ebuild
+ git -C "$(GENTOO)" show 7579afbd4aa1f2356b8de3c2870df2c49ab68d5f:sys-fs/squashfs-tools-ng/squashfs-tools-ng-1.3.0.ebuild > $@/expected.ebuild
+
+non-KEYWORDS-conflict: GENTOO-is-set
+ mkdir -p $@
+ git -C "$(GENTOO)" show f1689f39c7bc6245f7f4fc8083d41bc82f4621d9:media-gfx/eog-plugins/eog-plugins-44.0-r2.ebuild > $@/common-ancestor.ebuild
+ sed -e 's/{9..11}/{9..12}/' $@/common-ancestor.ebuild > $@/A.ebuild
+ sed -e 's/{9..11}/{10..11}/' $@/common-ancestor.ebuild > $@/B.ebuild
+ # No expected.ebuild
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/A.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/A.ebuild
new file mode 100644
index 0000000..c143cfb
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/A.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2019-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="A new set of tools for working with SquashFS images"
+HOMEPAGE="https://github.com/AgentD/squashfs-tools-ng"
+if [[ ${PV} = 9999* ]]; then
+ inherit autotools git-r3
+ EGIT_REPO_URI="https://github.com/AgentD/${PN}.git"
+else
+ KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ SRC_URI="https://infraroot.at/pub/squashfs/${P}.tar.xz"
+fi
+
+LICENSE="LGPL-3+ BSD-2 MIT tools? ( GPL-3+ )"
+SLOT="0"
+IUSE="lz4 +lzma lzo selinux +tools zstd"
+
+DEPEND="
+ app-arch/bzip2:=
+ sys-libs/zlib:=
+ lz4? ( app-arch/lz4:= )
+ lzma? ( app-arch/xz-utils )
+ lzo? ( dev-libs/lzo:2 )
+ selinux? ( sys-libs/libselinux:= )
+ zstd? ( app-arch/zstd:= )
+"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ [[ ${PV} == "9999" ]] && eautoreconf
+}
+
+src_configure() {
+ local myconf=(
+ --disable-static
+ $(use_with lz4)
+ $(use_with lzo)
+ $(use_with selinux)
+ $(use_with tools)
+ $(use_with lzma xz)
+ $(use_with zstd)
+ )
+ econf "${myconf[@]}"
+}
+
+src_install() {
+ default
+ find "${D}" -name "*.la" -delete || die
+}
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/B.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/B.ebuild
new file mode 100644
index 0000000..f936c78
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/B.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2019-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="A new set of tools for working with SquashFS images"
+HOMEPAGE="https://github.com/AgentD/squashfs-tools-ng"
+if [[ ${PV} = 9999* ]]; then
+ inherit autotools git-r3
+ EGIT_REPO_URI="https://github.com/AgentD/${PN}.git"
+else
+ inherit libtool
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ SRC_URI="https://infraroot.at/pub/squashfs/${P}.tar.xz"
+fi
+
+LICENSE="LGPL-3+ BSD-2 MIT tools? ( GPL-3+ )"
+SLOT="0"
+IUSE="lz4 +lzma lzo selinux +tools zstd"
+
+DEPEND="
+ app-arch/bzip2:=
+ sys-libs/zlib:=
+ lz4? ( app-arch/lz4:= )
+ lzma? ( app-arch/xz-utils )
+ lzo? ( dev-libs/lzo:2 )
+ selinux? ( sys-libs/libselinux:= )
+ zstd? ( app-arch/zstd:= )
+"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ if [[ ${PV} = "9999" ]]; then
+ eautoreconf
+ else
+ elibtoolize
+ fi
+}
+
+src_configure() {
+ local myconf=(
+ --disable-static
+ $(use_with lz4)
+ $(use_with lzo)
+ $(use_with selinux)
+ $(use_with tools)
+ $(use_with lzma xz)
+ $(use_with zstd)
+ )
+ econf "${myconf[@]}"
+}
+
+src_install() {
+ default
+ find "${D}" -name "*.la" -delete || die
+}
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/common-ancestor.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/common-ancestor.ebuild
new file mode 100644
index 0000000..161eca8
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/common-ancestor.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2019-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="A new set of tools for working with SquashFS images"
+HOMEPAGE="https://github.com/AgentD/squashfs-tools-ng"
+if [[ ${PV} = 9999* ]]; then
+ inherit autotools git-r3
+ EGIT_REPO_URI="https://github.com/AgentD/${PN}.git"
+else
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ SRC_URI="https://infraroot.at/pub/squashfs/${P}.tar.xz"
+fi
+
+LICENSE="LGPL-3+ BSD-2 MIT tools? ( GPL-3+ )"
+SLOT="0"
+IUSE="lz4 +lzma lzo selinux +tools zstd"
+
+DEPEND="
+ app-arch/bzip2:=
+ sys-libs/zlib:=
+ lz4? ( app-arch/lz4:= )
+ lzma? ( app-arch/xz-utils )
+ lzo? ( dev-libs/lzo:2 )
+ selinux? ( sys-libs/libselinux:= )
+ zstd? ( app-arch/zstd:= )
+"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ [[ ${PV} == "9999" ]] && eautoreconf
+}
+
+src_configure() {
+ local myconf=(
+ --disable-static
+ $(use_with lz4)
+ $(use_with lzo)
+ $(use_with selinux)
+ $(use_with tools)
+ $(use_with lzma xz)
+ $(use_with zstd)
+ )
+ econf "${myconf[@]}"
+}
+
+src_install() {
+ default
+ find "${D}" -name "*.la" -delete || die
+}
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/expected.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/expected.ebuild
new file mode 100644
index 0000000..a4168be
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/conflict-near-KEYWORDS/expected.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2019-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="A new set of tools for working with SquashFS images"
+HOMEPAGE="https://github.com/AgentD/squashfs-tools-ng"
+if [[ ${PV} = 9999* ]]; then
+ inherit autotools git-r3
+ EGIT_REPO_URI="https://github.com/AgentD/${PN}.git"
+else
+ inherit libtool
+ KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ SRC_URI="https://infraroot.at/pub/squashfs/${P}.tar.xz"
+fi
+
+LICENSE="LGPL-3+ BSD-2 MIT tools? ( GPL-3+ )"
+SLOT="0"
+IUSE="lz4 +lzma lzo selinux +tools zstd"
+
+DEPEND="
+ app-arch/bzip2:=
+ sys-libs/zlib:=
+ lz4? ( app-arch/lz4:= )
+ lzma? ( app-arch/xz-utils )
+ lzo? ( dev-libs/lzo:2 )
+ selinux? ( sys-libs/libselinux:= )
+ zstd? ( app-arch/zstd:= )
+"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ if [[ ${PV} = "9999" ]]; then
+ eautoreconf
+ else
+ elibtoolize
+ fi
+}
+
+src_configure() {
+ local myconf=(
+ --disable-static
+ $(use_with lz4)
+ $(use_with lzo)
+ $(use_with selinux)
+ $(use_with tools)
+ $(use_with lzma xz)
+ $(use_with zstd)
+ )
+ econf "${myconf[@]}"
+}
+
+src_install() {
+ default
+ find "${D}" -name "*.la" -delete || die
+}
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/A.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/A.ebuild
new file mode 100644
index 0000000..f0b7896
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/A.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+XORG_TARBALL_SUFFIX="xz"
+inherit xorg-3
+
+DESCRIPTION="monitor system console messages with X"
+
+KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXt
+ x11-libs/libX11"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/B.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/B.ebuild
new file mode 100644
index 0000000..bb84b24
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/B.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+XORG_TARBALL_SUFFIX="xz"
+inherit xorg-3
+
+DESCRIPTION="monitor system console messages with X"
+
+KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 sparc ~x86"
+
+RDEPEND="
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXt
+ x11-libs/libX11"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/common-ancestor.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/common-ancestor.ebuild
new file mode 100644
index 0000000..6f25981
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/common-ancestor.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+XORG_TARBALL_SUFFIX="xz"
+inherit xorg-3
+
+DESCRIPTION="monitor system console messages with X"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXt
+ x11-libs/libX11"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/expected.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/expected.ebuild
new file mode 100644
index 0000000..0200a4b
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/multiple-KEYWORDS-conflict/expected.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+XORG_TARBALL_SUFFIX="xz"
+inherit xorg-3
+
+DESCRIPTION="monitor system console messages with X"
+
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~riscv ~s390 sparc ~x86"
+
+RDEPEND="
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXt
+ x11-libs/libX11"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/A.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/A.ebuild
new file mode 100644
index 0000000..1cb02a7
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/A.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{9..12} )
+
+inherit gnome.org meson python-single-r1
+
+DESCRIPTION="Eye of GNOME plugins"
+HOMEPAGE="https://wiki.gnome.org/Apps/EyeOfGnome/Plugins https://gitlab.gnome.org/GNOME/eog-plugins"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+IUSE="+exif map +python test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="
+ map? ( exif )
+ python? ( ${PYTHON_REQUIRED_USE} )
+"
+
+RDEPEND="
+ >=dev-libs/glib-2.53.4:2
+ >=dev-libs/libpeas-1.14.1:0
+ >=media-gfx/eog-41.0:1
+ exif? ( >=media-libs/libexif-0.6.16 )
+ map? (
+ media-libs/libchamplain:0.12[gtk]
+ >=media-libs/clutter-1.9.4:1.0
+ >=media-libs/clutter-gtk-1.1.2:1.0
+ )
+ python? (
+ ${PYTHON_DEPS}
+ dev-libs/glib[dbus]
+ dev-libs/libpeas:0[gtk,python,${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+ ')
+ gnome-base/gsettings-desktop-schemas
+ media-gfx/eog[introspection]
+ x11-libs/gtk+:3[introspection]
+ x11-libs/pango[introspection]
+ )
+"
+DEPEND="${RDEPEND}
+ test? ( dev-libs/appstream-glib )"
+BDEPEND="
+ >=sys-devel/gettext-0.19.7
+ virtual/pkgconfig
+"
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_configure() {
+ local emesonargs=(
+ $(meson_use exif plugin_exif-display)
+ $(meson_use python plugin_export-to-folder)
+ -Dplugin_fit-to-width=true
+ $(meson_use python plugin_fullscreenbg)
+ -Dplugin_light-theme=true
+ $(meson_use map plugin_map)
+ $(meson_use python plugin_maximize-windows)
+ -Dplugin_postasa=false
+ -Dplugin_postr=false
+ $(meson_use python plugin_pythonconsole)
+ -Dplugin_send-by-mail=true
+ $(meson_use python plugin_slideshowshuffle)
+ )
+ meson_src_configure
+}
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/B.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/B.ebuild
new file mode 100644
index 0000000..5141b5c
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/B.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{10..11} )
+
+inherit gnome.org meson python-single-r1
+
+DESCRIPTION="Eye of GNOME plugins"
+HOMEPAGE="https://wiki.gnome.org/Apps/EyeOfGnome/Plugins https://gitlab.gnome.org/GNOME/eog-plugins"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+IUSE="+exif map +python test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="
+ map? ( exif )
+ python? ( ${PYTHON_REQUIRED_USE} )
+"
+
+RDEPEND="
+ >=dev-libs/glib-2.53.4:2
+ >=dev-libs/libpeas-1.14.1:0
+ >=media-gfx/eog-41.0:1
+ exif? ( >=media-libs/libexif-0.6.16 )
+ map? (
+ media-libs/libchamplain:0.12[gtk]
+ >=media-libs/clutter-1.9.4:1.0
+ >=media-libs/clutter-gtk-1.1.2:1.0
+ )
+ python? (
+ ${PYTHON_DEPS}
+ dev-libs/glib[dbus]
+ dev-libs/libpeas:0[gtk,python,${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+ ')
+ gnome-base/gsettings-desktop-schemas
+ media-gfx/eog[introspection]
+ x11-libs/gtk+:3[introspection]
+ x11-libs/pango[introspection]
+ )
+"
+DEPEND="${RDEPEND}
+ test? ( dev-libs/appstream-glib )"
+BDEPEND="
+ >=sys-devel/gettext-0.19.7
+ virtual/pkgconfig
+"
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_configure() {
+ local emesonargs=(
+ $(meson_use exif plugin_exif-display)
+ $(meson_use python plugin_export-to-folder)
+ -Dplugin_fit-to-width=true
+ $(meson_use python plugin_fullscreenbg)
+ -Dplugin_light-theme=true
+ $(meson_use map plugin_map)
+ $(meson_use python plugin_maximize-windows)
+ -Dplugin_postasa=false
+ -Dplugin_postr=false
+ $(meson_use python plugin_pythonconsole)
+ -Dplugin_send-by-mail=true
+ $(meson_use python plugin_slideshowshuffle)
+ )
+ meson_src_configure
+}
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/common-ancestor.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/common-ancestor.ebuild
new file mode 100644
index 0000000..a328d90
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/non-KEYWORDS-conflict/common-ancestor.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit gnome.org meson python-single-r1
+
+DESCRIPTION="Eye of GNOME plugins"
+HOMEPAGE="https://wiki.gnome.org/Apps/EyeOfGnome/Plugins https://gitlab.gnome.org/GNOME/eog-plugins"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+IUSE="+exif map +python test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="
+ map? ( exif )
+ python? ( ${PYTHON_REQUIRED_USE} )
+"
+
+RDEPEND="
+ >=dev-libs/glib-2.53.4:2
+ >=dev-libs/libpeas-1.14.1:0
+ >=media-gfx/eog-41.0:1
+ exif? ( >=media-libs/libexif-0.6.16 )
+ map? (
+ media-libs/libchamplain:0.12[gtk]
+ >=media-libs/clutter-1.9.4:1.0
+ >=media-libs/clutter-gtk-1.1.2:1.0
+ )
+ python? (
+ ${PYTHON_DEPS}
+ dev-libs/glib[dbus]
+ dev-libs/libpeas:0[gtk,python,${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+ ')
+ gnome-base/gsettings-desktop-schemas
+ media-gfx/eog[introspection]
+ x11-libs/gtk+:3[introspection]
+ x11-libs/pango[introspection]
+ )
+"
+DEPEND="${RDEPEND}
+ test? ( dev-libs/appstream-glib )"
+BDEPEND="
+ >=sys-devel/gettext-0.19.7
+ virtual/pkgconfig
+"
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_configure() {
+ local emesonargs=(
+ $(meson_use exif plugin_exif-display)
+ $(meson_use python plugin_export-to-folder)
+ -Dplugin_fit-to-width=true
+ $(meson_use python plugin_fullscreenbg)
+ -Dplugin_light-theme=true
+ $(meson_use map plugin_map)
+ $(meson_use python plugin_maximize-windows)
+ -Dplugin_postasa=false
+ -Dplugin_postr=false
+ $(meson_use python plugin_pythonconsole)
+ -Dplugin_send-by-mail=true
+ $(meson_use python plugin_slideshowshuffle)
+ )
+ meson_src_configure
+}
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/A.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/A.ebuild
new file mode 100644
index 0000000..a4530dc
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/A.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+XORG_TARBALL_SUFFIX="xz"
+inherit xorg-3
+
+DESCRIPTION="monitor system console messages with X"
+
+KEYWORDS="~alpha ~amd64 arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXt
+ x11-libs/libX11"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/B.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/B.ebuild
new file mode 100644
index 0000000..1b5d4c4
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/B.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+XORG_TARBALL_SUFFIX="xz"
+inherit xorg-3
+
+DESCRIPTION="monitor system console messages with X"
+
+KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXt
+ x11-libs/libX11"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/common-ancestor.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/common-ancestor.ebuild
new file mode 100644
index 0000000..6f25981
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/common-ancestor.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+XORG_TARBALL_SUFFIX="xz"
+inherit xorg-3
+
+DESCRIPTION="monitor system console messages with X"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXt
+ x11-libs/libX11"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
diff --git a/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/expected.ebuild b/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/expected.ebuild
new file mode 100644
index 0000000..2f292bd
--- /dev/null
+++ b/pym/gentoolkit/merge_driver_ekeyword/tests/single-KEYWORDS-conflict/expected.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+XORG_TARBALL_SUFFIX="xz"
+inherit xorg-3
+
+DESCRIPTION="monitor system console messages with X"
+
+KEYWORDS="~alpha ~amd64 arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXt
+ x11-libs/libX11"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"