aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2014-11-23 13:03:21 -0800
committerZac Medico <zmedico@gentoo.org>2014-11-27 00:45:40 -0800
commitb9c06a6a2dd4ccc875f8b9dd3139ea582e1e5621 (patch)
treeec652b12899c28caf41f2050520fb0b1e59a61b5 /pym/portage/tests/ebuild
parentForce the SELinux user during relabel operation (530192) (diff)
downloadportage-b9c06a6a2dd4ccc875f8b9dd3139ea582e1e5621.tar.gz
portage-b9c06a6a2dd4ccc875f8b9dd3139ea582e1e5621.tar.bz2
portage-b9c06a6a2dd4ccc875f8b9dd3139ea582e1e5621.zip
make.defaults: negative incrementals in USE_EXPAND (530222)
Previously, USE_EXPAND variable settings in profile make.defaults only supported positive incremental settings. This patch adds support for negative settings like PYTHON_TARGETS="-python3_3", which brings behavior into alignment with PMS. Notably, this patch does not change behavior for settings in make.conf. In make.conf, settings to USE_EXPAND variables remain entirely non-incremental. PMS does not govern make.conf behavior. X-Gentoo-Bug: 530222 X-Gentoo-Url: https://bugs.gentoo.org/show_bug.cgi?id=530222 Acked-by: Brian Dolbec <dolsen@gentoo.org>
Diffstat (limited to 'pym/portage/tests/ebuild')
-rw-r--r--pym/portage/tests/ebuild/test_use_expand_incremental.py132
1 files changed, 132 insertions, 0 deletions
diff --git a/pym/portage/tests/ebuild/test_use_expand_incremental.py b/pym/portage/tests/ebuild/test_use_expand_incremental.py
new file mode 100644
index 000000000..a58f08cb9
--- /dev/null
+++ b/pym/portage/tests/ebuild/test_use_expand_incremental.py
@@ -0,0 +1,132 @@
+# Copyright 2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+from __future__ import unicode_literals
+
+import io
+
+from portage import os, _encodings
+from portage.dep import Atom
+from portage.package.ebuild.config import config
+from portage.tests import TestCase
+from portage.tests.resolver.ResolverPlayground import ResolverPlayground
+from portage.util import ensure_dirs
+
+class UseExpandIncrementalTestCase(TestCase):
+
+ def testUseExpandIncremental(self):
+
+ profiles = (
+ (
+ 'base',
+ {
+ "eapi": ("5",),
+ "parent": ("..",),
+ "make.defaults": (
+ "INPUT_DEVICES=\"keyboard mouse\"",
+ "PYTHON_TARGETS=\"python2_7 python3_3\"",
+ ("USE_EXPAND=\"INPUT_DEVICES PYTHON_TARGETS "
+ "VIDEO_CARDS\""),
+ )
+ }
+ ),
+ (
+ 'default/linux',
+ {
+ "eapi": ("5",),
+ "make.defaults": (
+ "VIDEO_CARDS=\"dummy fbdev v4l\"",
+ )
+ }
+ ),
+ (
+ 'default/linux/x86',
+ {
+ "eapi": ("5",),
+ "make.defaults": (
+ # Test negative incremental for bug 530222.
+ "PYTHON_TARGETS=\"-python3_3\"",
+ ),
+ "parent": ("../../../base",
+ "../../../mixins/python/3.4",
+ ".."
+ )
+ }
+ ),
+ (
+ 'mixins/python/3.4',
+ {
+ "eapi": ("5",),
+ "make.defaults": (
+ "PYTHON_TARGETS=\"python3_4\"",
+ )
+ }
+ ),
+ )
+
+ # USE_EXPAND variable settings in make.conf will cause
+ # profile settings for the same variable to be discarded
+ # (non-incremental behavior). PMS does not govern make.conf
+ # behavior.
+ user_config = {
+ "make.conf" : (
+ "VIDEO_CARDS=\"intel\"",
+ )
+ }
+
+ ebuilds = {
+ "x11-base/xorg-drivers-1.15": {
+ "EAPI": "5",
+ "IUSE": ("input_devices_keyboard input_devices_mouse "
+ "videos_cards_dummy video_cards_fbdev "
+ "video_cards_v4l video_cards_intel")
+ },
+ "sys-apps/portage-2.2.14": {
+ "EAPI": "5",
+ "IUSE": ("python_targets_python2_7 "
+ "python_targets_python3_3 python_targets_python3_4")
+ },
+ }
+
+ package_expected_use = (
+ ("x11-base/xorg-drivers-1.15", ("input_devices_keyboard",
+ "input_devices_mouse", "video_cards_intel",)),
+ ("sys-apps/portage-2.2.14", ("python_targets_python2_7",
+ "python_targets_python3_4"))
+ )
+
+ playground = ResolverPlayground(debug=False,
+ ebuilds=ebuilds, user_config=user_config)
+ try:
+ repo_dir = (playground.settings.repositories.
+ get_location_for_name("test_repo"))
+ profile_root = os.path.join(repo_dir, "profiles")
+
+ for p, data in profiles:
+ prof_path = os.path.join(profile_root, p)
+ ensure_dirs(prof_path)
+ for k, v in data.items():
+ with io.open(os.path.join(prof_path, k), mode="w",
+ encoding=_encodings["repo.content"]) as f:
+ for line in v:
+ f.write("%s\n" % line)
+
+ # The config must be reloaded in order to account
+ # for the above profile customizations.
+ playground.reload_config()
+
+ depgraph = playground.run(
+ ["=x11-base/xorg-drivers-1.15"]).depgraph
+ settings = config(clone=playground.settings)
+
+ for cpv, expected_use in package_expected_use:
+ pkg, existing_node = depgraph._select_package(
+ playground.eroot, Atom("=" + cpv))
+ settings.setcpv(pkg)
+ expected = frozenset(expected_use)
+ got = frozenset(settings["PORTAGE_USE"].split())
+ self.assertEqual(got, expected,
+ "%s != %s" % (got, expected))
+
+ finally:
+ playground.cleanup()