blob: 7c2debbb1987a1e639557355fa55d025463b61fe [file] [log] [blame]
# Copyright 2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from portage.tests import TestCase
from portage.tests.resolver.ResolverPlayground import ResolverPlayground, ResolverPlaygroundTestCase
class UseAliasesTestCase(TestCase):
def testUseAliases(self):
ebuilds = {
"dev-libs/A-1": {"DEPEND": "dev-libs/K[x]", "RDEPEND": "dev-libs/K[x]", "EAPI": "5"},
"dev-libs/B-1": {"DEPEND": "dev-libs/L[x]", "RDEPEND": "dev-libs/L[x]", "EAPI": "5"},
"dev-libs/C-1": {"DEPEND": "dev-libs/M[xx]", "RDEPEND": "dev-libs/M[xx]", "EAPI": "5"},
"dev-libs/D-1": {"DEPEND": "dev-libs/N[-x]", "RDEPEND": "dev-libs/N[-x]", "EAPI": "5"},
"dev-libs/E-1": {"DEPEND": "dev-libs/O[-xx]", "RDEPEND": "dev-libs/O[-xx]", "EAPI": "5"},
"dev-libs/F-1": {"DEPEND": "dev-libs/P[-xx]", "RDEPEND": "dev-libs/P[-xx]", "EAPI": "5"},
"dev-libs/G-1": {"DEPEND": "dev-libs/Q[x-y]", "RDEPEND": "dev-libs/Q[x-y]", "EAPI": "5"},
"dev-libs/H-1": {"DEPEND": "=dev-libs/R-1*[yy]", "RDEPEND": "=dev-libs/R-1*[yy]", "EAPI": "5"},
"dev-libs/H-2": {"DEPEND": "=dev-libs/R-2*[yy]", "RDEPEND": "=dev-libs/R-2*[yy]", "EAPI": "5"},
"dev-libs/I-1": {"DEPEND": "dev-libs/S[y-z]", "RDEPEND": "dev-libs/S[y-z]", "EAPI": "5"},
"dev-libs/I-2": {"DEPEND": "dev-libs/S[y_z]", "RDEPEND": "dev-libs/S[y_z]", "EAPI": "5"},
"dev-libs/J-1": {"DEPEND": "dev-libs/T[x]", "RDEPEND": "dev-libs/T[x]", "EAPI": "5"},
"dev-libs/K-1": {"IUSE": "+x", "EAPI": "5"},
"dev-libs/K-2::repo1": {"IUSE": "+X", "EAPI": "5-progress"},
"dev-libs/L-1": {"IUSE": "+x", "EAPI": "5"},
"dev-libs/M-1::repo1": {"IUSE": "X", "EAPI": "5-progress"},
"dev-libs/N-1": {"IUSE": "x", "EAPI": "5"},
"dev-libs/N-2::repo1": {"IUSE": "X", "EAPI": "5-progress"},
"dev-libs/O-1": {"IUSE": "x", "EAPI": "5"},
"dev-libs/P-1::repo1": {"IUSE": "+X", "EAPI": "5-progress"},
"dev-libs/Q-1::repo2": {"IUSE": "X.Y", "EAPI": "5-progress"},
"dev-libs/R-1::repo1": {"IUSE": "Y", "EAPI": "5-progress"},
"dev-libs/R-2::repo1": {"IUSE": "y", "EAPI": "5-progress"},
"dev-libs/S-1::repo2": {"IUSE": "Y.Z", "EAPI": "5-progress"},
"dev-libs/S-2::repo2": {"IUSE": "Y.Z", "EAPI": "5-progress"},
"dev-libs/T-1::repo1": {"IUSE": "+X", "EAPI": "5"},
}
installed = {
"dev-libs/L-2::repo1": {"IUSE": "+X", "USE": "X", "EAPI": "5-progress"},
"dev-libs/O-2::repo1": {"IUSE": "X", "USE": "", "EAPI": "5-progress"},
}
repo_configs = {
"repo1": {
"use.aliases": ("X x xx",),
"package.use.aliases": (
"=dev-libs/R-1* Y yy",
"=dev-libs/R-2* y yy",
)
},
"repo2": {
"eapi": ("5-progress",),
"use.aliases": ("X.Y x-y",),
"package.use.aliases": (
"=dev-libs/S-1* Y.Z y-z",
"=dev-libs/S-2* Y.Z y_z",
),
},
}
test_cases = (
ResolverPlaygroundTestCase(
["dev-libs/A"],
success = True,
mergelist = ["dev-libs/K-2", "dev-libs/A-1"]),
ResolverPlaygroundTestCase(
["dev-libs/B"],
success = True,
mergelist = ["dev-libs/B-1"]),
ResolverPlaygroundTestCase(
["dev-libs/C"],
options = {"--autounmask": True},
success = False,
mergelist = ["dev-libs/M-1", "dev-libs/C-1"],
use_changes = {"dev-libs/M-1": {"X": True}}),
ResolverPlaygroundTestCase(
["dev-libs/D"],
success = True,
mergelist = ["dev-libs/N-2", "dev-libs/D-1"]),
ResolverPlaygroundTestCase(
["dev-libs/E"],
success = True,
mergelist = ["dev-libs/E-1"]),
ResolverPlaygroundTestCase(
["dev-libs/F"],
options = {"--autounmask": True},
success = False,
mergelist = ["dev-libs/P-1", "dev-libs/F-1"],
use_changes = {"dev-libs/P-1": {"X": False}}),
ResolverPlaygroundTestCase(
["dev-libs/G"],
options = {"--autounmask": True},
success = False,
mergelist = ["dev-libs/Q-1", "dev-libs/G-1"],
use_changes = {"dev-libs/Q-1": {"X.Y": True}}),
ResolverPlaygroundTestCase(
["=dev-libs/H-1*"],
options = {"--autounmask": True},
success = False,
mergelist = ["dev-libs/R-1", "dev-libs/H-1"],
use_changes = {"dev-libs/R-1": {"Y": True}}),
ResolverPlaygroundTestCase(
["=dev-libs/H-2*"],
options = {"--autounmask": True},
success = False,
mergelist = ["dev-libs/R-2", "dev-libs/H-2"],
use_changes = {"dev-libs/R-2": {"y": True}}),
ResolverPlaygroundTestCase(
["=dev-libs/I-1*"],
options = {"--autounmask": True},
success = False,
mergelist = ["dev-libs/S-1", "dev-libs/I-1"],
use_changes = {"dev-libs/S-1": {"Y.Z": True}}),
ResolverPlaygroundTestCase(
["=dev-libs/I-2*"],
options = {"--autounmask": True},
success = False,
mergelist = ["dev-libs/S-2", "dev-libs/I-2"],
use_changes = {"dev-libs/S-2": {"Y.Z": True}}),
ResolverPlaygroundTestCase(
["dev-libs/J"],
success = False),
)
playground = ResolverPlayground(ebuilds=ebuilds, installed=installed, repo_configs=repo_configs)
try:
for test_case in test_cases:
playground.run_TestCase(test_case)
self.assertEqual(test_case.test_success, True, test_case.fail_msg)
finally:
playground.cleanup()