Gentoo Archives: gentoo-commits

From: Ralph Sennhauser <sera@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/java-config:master commit in: src/java_config_2/, tests/testsuite/
Date: Sat, 28 Dec 2013 13:15:46
Message-Id: 1388233590.4bf5f0fe191531185c15fb2efa48b06becbc08fd.sera@gentoo
1 commit: 4bf5f0fe191531185c15fb2efa48b06becbc08fd
2 Author: Ralph Sennhauser <sera <AT> gentoo <DOT> org>
3 AuthorDate: Fri Dec 27 16:49:15 2013 +0000
4 Commit: Ralph Sennhauser <sera <AT> gentoo <DOT> org>
5 CommitDate: Sat Dec 28 12:26:30 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/java-config.git;a=commit;h=4bf5f0fe
7
8 VersionManager: Drop dependency on Portage
9
10 Replace dep-string filtering with a much simpler but non validating
11 internal algorithm. BGO#464608
12
13 Add more tests
14
15 ---
16 src/java_config_2/VersionManager.py | 43 ++++++++++++++++++++++---------------
17 tests/testsuite/VersionManager.py | 12 ++++++++++-
18 2 files changed, 37 insertions(+), 18 deletions(-)
19
20 diff --git a/src/java_config_2/VersionManager.py b/src/java_config_2/VersionManager.py
21 index c3fcc3f..7b94a8c 100644
22 --- a/src/java_config_2/VersionManager.py
23 +++ b/src/java_config_2/VersionManager.py
24 @@ -4,9 +4,6 @@
25 # Copyright 2005-2013 Gentoo Foundation
26 # Distributed under the terms of the GNU General Public license v2
27
28 -import sys
29 -sys.path.append("/usr/lib/portage/pym")
30 -
31 from . import VM, Errors
32 from java_config_2.FileParser import *
33 import os, glob, re
34 @@ -110,23 +107,35 @@ class VersionManager:
35 def filter_depend( self, atoms ):
36 """Filter the dependency string for useful information"""
37
38 - import os
39 + def dep_string_reduce(dep_string,enabled_useflags):
40 + dest = []
41 + tokens = iter(dep_string.split())
42 + useflags = enabled_useflags.split()
43 +
44 + for token in tokens:
45 + if token[-1] == "?":
46 + if token[:-1] not in useflags:
47 + level = 0
48 + while 1:
49 + token = next(tokens)
50 + if token == "(":
51 + level+=1
52 + if token == ")":
53 + level-=1
54 + if level < 1:
55 + break
56 + continue
57 + elif token == "(" or token == ")":
58 + continue
59 + else:
60 + dest.append(token)
61 +
62 + return " ".join(dest)
63 +
64 # gjl does not use use flags
65 try:
66 use = os.environ["USE"]
67 -
68 - # Local import to avoid initializing portage elsewhere
69 - try:
70 - from portage.dep import use_reduce,paren_reduce
71 - except ImportError:
72 - from portage_dep import use_reduce,paren_reduce
73 - from portage import flatten
74 -
75 - # Normalize white space for Portage
76 - atoms = " ".join(atoms.split())
77 -
78 - # Remove conditional depends that are not turned on
79 - atoms = " ".join(flatten(use_reduce(paren_reduce(atoms),uselist=use)))
80 + atoms = dep_string_reduce(atoms, use)
81 except KeyError:
82 pass
83 return atoms
84
85 diff --git a/tests/testsuite/VersionManager.py b/tests/testsuite/VersionManager.py
86 index 3700be8..cc8a50b 100644
87 --- a/tests/testsuite/VersionManager.py
88 +++ b/tests/testsuite/VersionManager.py
89 @@ -46,11 +46,21 @@ class TestVersionManager(unittest.TestCase):
90 rmatch = "|| =virtual/jdk-1.5 =virtual/jdk-1.4 dev-java/ant-core java-virtuals/jaf"
91 self.assertEquals(self.verman.filter_depend(self.example_dep_or), rmatch)
92
93 - def test_filter_depend_use(self):
94 + def test_filter_depend_use_enabled(self):
95 os.environ["USE"] = "java"
96 rmatch = ">=virtual/jdk-1.5* dev-java/ant-core java-virtuals/jaf"
97 self.assertEquals(self.verman.filter_depend(self.example_dep_use), rmatch)
98
99 + def test_filter_depend_use_disabled(self):
100 + os.environ["USE"] = ""
101 + rmatch = "dev-java/ant-core java-virtuals/jaf"
102 + self.assertEquals(self.verman.filter_depend(self.example_dep_use), rmatch)
103 +
104 + def test_filter_depend_use_unset(self):
105 + del os.environ["USE"]
106 + rmatch = self.example_dep_use
107 + self.assertEquals(self.verman.filter_depend(self.example_dep_use), rmatch)
108 +
109 def test_version_satisfies(self):
110 vm = self.em.get_vm('sun-jdk-1.6')
111 self.assertTrue(self.verman.version_satisfies('>=virtual/jdk-1.5', vm))