public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/java-config:master commit in: src/java_config_2/, tests/testsuite/
@ 2013-12-28 13:15 Ralph Sennhauser
  0 siblings, 0 replies; only message in thread
From: Ralph Sennhauser @ 2013-12-28 13:15 UTC (permalink / raw
  To: gentoo-commits

commit:     4bf5f0fe191531185c15fb2efa48b06becbc08fd
Author:     Ralph Sennhauser <sera <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 27 16:49:15 2013 +0000
Commit:     Ralph Sennhauser <sera <AT> gentoo <DOT> org>
CommitDate: Sat Dec 28 12:26:30 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/java-config.git;a=commit;h=4bf5f0fe

VersionManager: Drop dependency on Portage

Replace dep-string filtering with a much simpler but non validating
internal algorithm. BGO#464608

Add more tests

---
 src/java_config_2/VersionManager.py | 43 ++++++++++++++++++++++---------------
 tests/testsuite/VersionManager.py   | 12 ++++++++++-
 2 files changed, 37 insertions(+), 18 deletions(-)

diff --git a/src/java_config_2/VersionManager.py b/src/java_config_2/VersionManager.py
index c3fcc3f..7b94a8c 100644
--- a/src/java_config_2/VersionManager.py
+++ b/src/java_config_2/VersionManager.py
@@ -4,9 +4,6 @@
 # Copyright 2005-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public license v2
 
-import sys
-sys.path.append("/usr/lib/portage/pym")
-
 from . import VM, Errors 
 from java_config_2.FileParser import *
 import os, glob, re
@@ -110,23 +107,35 @@ class VersionManager:
     def filter_depend( self, atoms ):
         """Filter the dependency string for useful information"""
 
-        import os
+        def dep_string_reduce(dep_string,enabled_useflags):
+            dest = []
+            tokens = iter(dep_string.split())
+            useflags = enabled_useflags.split()
+
+            for token in tokens:
+                if token[-1] == "?":
+                    if token[:-1] not in useflags:
+                        level = 0
+                        while 1:
+                            token = next(tokens)
+                            if token == "(":
+                                level+=1
+                            if token == ")":
+                                level-=1
+                                if level < 1:
+                                    break
+                    continue
+                elif token == "(" or token == ")":
+                    continue
+                else:
+                    dest.append(token)
+
+            return " ".join(dest)
+
         # gjl does not use use flags
         try:
             use = os.environ["USE"]
-
-            # Local import to avoid initializing portage elsewhere
-            try:
-                from portage.dep import use_reduce,paren_reduce
-            except ImportError:
-                from portage_dep import use_reduce,paren_reduce
-            from portage import flatten
-
-            # Normalize white space for Portage
-            atoms = " ".join(atoms.split())
-
-            # Remove conditional depends that are not turned on
-            atoms = " ".join(flatten(use_reduce(paren_reduce(atoms),uselist=use)))
+            atoms = dep_string_reduce(atoms, use)
         except KeyError:
             pass
         return atoms

diff --git a/tests/testsuite/VersionManager.py b/tests/testsuite/VersionManager.py
index 3700be8..cc8a50b 100644
--- a/tests/testsuite/VersionManager.py
+++ b/tests/testsuite/VersionManager.py
@@ -46,11 +46,21 @@ class TestVersionManager(unittest.TestCase):
         rmatch = "|| =virtual/jdk-1.5 =virtual/jdk-1.4 dev-java/ant-core java-virtuals/jaf"
         self.assertEquals(self.verman.filter_depend(self.example_dep_or), rmatch)
     
-    def test_filter_depend_use(self):
+    def test_filter_depend_use_enabled(self):
         os.environ["USE"] = "java"
         rmatch = ">=virtual/jdk-1.5* dev-java/ant-core java-virtuals/jaf"
         self.assertEquals(self.verman.filter_depend(self.example_dep_use), rmatch)
 
+    def test_filter_depend_use_disabled(self):
+        os.environ["USE"] = ""
+        rmatch = "dev-java/ant-core java-virtuals/jaf"
+        self.assertEquals(self.verman.filter_depend(self.example_dep_use), rmatch)
+
+    def test_filter_depend_use_unset(self):
+        del os.environ["USE"]
+        rmatch = self.example_dep_use
+        self.assertEquals(self.verman.filter_depend(self.example_dep_use), rmatch)
+
     def test_version_satisfies(self):
         vm = self.em.get_vm('sun-jdk-1.6')
         self.assertTrue(self.verman.version_satisfies('>=virtual/jdk-1.5', vm))


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2013-12-28 13:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-28 13:15 [gentoo-commits] proj/java-config:master commit in: src/java_config_2/, tests/testsuite/ Ralph Sennhauser

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox