18231 pkgrecv traceback for packages with require-any dependency when using -r
authorBart Smaalders <Bart.Smaalders@Oracle.COM>
Tue, 03 May 2011 16:55:10 -0700
changeset 2324 75c4c6c9265b
parent 2323 3171b0efc406
child 2325 39ae727e734e
18231 pkgrecv traceback for packages with require-any dependency when using -r
src/pull.py
src/tests/cli/t_pkgrecv.py
--- a/src/pull.py	Tue May 03 15:33:01 2011 +0100
+++ b/src/pull.py	Tue May 03 16:55:10 2011 -0700
@@ -253,9 +253,10 @@
 
         m = get_manifest(pfmri, xport_cfg)
         for a in m.gen_actions_by_type("depend"):
-                new_fmri = expand_fmri(a.attrs["fmri"])
-                if new_fmri and new_fmri not in s:
-                        _get_dependencies(s, new_fmri, xport_cfg, tracker)
+                for fmri_str in a.attrlist("fmri"):
+                        new_fmri = expand_fmri(fmri_str)
+                        if new_fmri and new_fmri not in s:
+                                _get_dependencies(s, new_fmri, xport_cfg, tracker)
         return s
 
 def add_hashes_to_multi(mfst, multi):
--- a/src/tests/cli/t_pkgrecv.py	Tue May 03 15:33:01 2011 +0100
+++ b/src/tests/cli/t_pkgrecv.py	Tue May 03 16:55:10 2011 -0700
@@ -56,9 +56,20 @@
 
         tree10 = """
             open [email protected],5.11-0
+            add depend type=require-any [email protected] [email protected]
             close 
         """
 
+        leaf10 = """
+            open [email protected],5.11-0
+            close
+        """
+
+        branch10 = """
+            open [email protected],5.11-0
+            close
+        """
+
         amber10 = """
             open [email protected],5.11-0
             add depend fmri=pkg:/[email protected] type=require
@@ -129,7 +140,7 @@
                 # and scheme after that.
                 time.sleep(1)
                 self.published.extend(self.pkgsend_bulk(self.durl1,
-                    (self.bronze20, self.tree10, self.scheme10)))
+                    (self.bronze20, self.tree10, self.branch10, self.leaf10, self.scheme10)))
 
                 self.dpath2 = self.dcs[2].get_repodir()
                 self.durl2 = self.dcs[2].get_depot_url()
@@ -180,10 +191,13 @@
                 # The latest version of amber and bronze should be listed
                 # (sans publisher prefix currently).
                 amber = self.published[1]
-                scheme = self.published[6]
+                scheme = self.published[8]
                 bronze = self.published[4]
                 tree = self.published[5]
-                expected = "\n".join((amber, bronze, scheme, tree)) + "\n"
+                branch = self.published[6]
+                leaf = self.published[7]
+
+                expected = "\n".join((amber, branch, bronze, leaf, scheme, tree)) + "\n"
                 self.assertEqualDiff(expected, output)
 
         def test_1_recv_pkgsend(self):