Add test cases for SRC_URI validation.
authorZac Medico <zmedico@gentoo.org>
Sat, 20 Sep 2008 08:47:29 +0000 (08:47 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 20 Sep 2008 08:47:29 +0000 (08:47 -0000)
svn path=/main/trunk/; revision=11524

pym/portage/dbapi/porttree.py
pym/portage/tests/dep/test_src_uri.py [new file with mode: 0644]

index feade6fc8a2ecbc5d71650cffb6bfffe75e28708..95455182c2e3c9b49713707ca90455631fca7325 100644 (file)
@@ -63,6 +63,11 @@ def _src_uri_validate(cpv, eapi, src_uri):
                                        "supported with EAPI='%s'") % (cpv, eapi))
                        operator = x
                        continue
+               if operator is not None:
+                       if "/" in x:
+                               raise portage.exception.InvalidDependString(
+                                       ("getFetchMap(): '%s' SRC_URI '/' character in " + \
+                                       "file name: '%s'") % (cpv, x))
                uri = None
                operator = None
 
@@ -548,11 +553,6 @@ class portdbapi(dbapi):
                                if myuris:
                                        continue
                        if token == "->":
-                               if eapi in ("0", "1"):
-                                       raise portage.exception.InvalidDependString(
-                                               ("getFetchMap(): '%s' SRC_URI arrows are not " + \
-                                               "supported with EAPI='%s'") % (mypkg, eapi))
-
                                operator = token
                                continue
                        if operator is None:
@@ -563,10 +563,7 @@ class portdbapi(dbapi):
                                                "name: '%s'") % (mypkg, uri))
                        else:
                                distfile = token
-                               if "/" in distfile:
-                                       raise portage.exception.InvalidDependString(
-                                               ("getFetchMap(): '%s' SRC_URI '/' character in " + \
-                                               "file name: '%s'") % (mypkg, distfile))
+
                        uri_set = uri_map.get(distfile)
                        if uri_set is None:
                                uri_set = set()
diff --git a/pym/portage/tests/dep/test_src_uri.py b/pym/portage/tests/dep/test_src_uri.py
new file mode 100644 (file)
index 0000000..3b9f080
--- /dev/null
@@ -0,0 +1,31 @@
+# Copyright 2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+from portage.tests import TestCase
+from portage.dep import paren_reduce
+from portage.dbapi.porttree import _src_uri_validate
+from portage.exception import InvalidDependString
+
+class SrcUri(TestCase):
+
+       def testSrcUri(self):
+
+               tests = [
+                       ( "0", "http://foo/bar -> blah.tbz2"                     , False ),
+                       ( "1", "http://foo/bar -> blah.tbz2"                     , False ),
+                       ( "2", "http://foo/bar -> blah.tbz2"                     , True  ),
+                       ( "2", "foo? ( http://foo/bar -> blah.tbz2 )"            , True  ),
+                       ( "2", "-> http://foo/bar blah.tbz2 )"                   , False ),
+                       ( "2", "http://foo/bar ->"                               , False ),
+                       ( "2", "foo? ( http://foo/bar -> ) blah.tbz2"            , False ),
+                       ( "2", "http://foo/bar -> foo/blah.tbz2"                 , False ),
+               ]
+
+               for eapi, src_uri, valid in tests:
+                       try:
+                               _src_uri_validate("cat/pkg-1", eapi, paren_reduce(src_uri))
+                       except InvalidDependString:
+                               self.assertEqual(valid, False)
+                       else:
+                               self.assertEqual(valid, True)