← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~cjwatson/launchpad:factory-proxy-distroarchseriesfilter into launchpad:master

 

Colin Watson has proposed merging ~cjwatson/launchpad:factory-proxy-distroarchseriesfilter into launchpad:master.

Commit message:
Return proxied objects from makeDistroArchSeriesFilter

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/434622

`LaunchpadObjectFactory` issues `UnproxiedFactoryMethodWarning` when its methods return objects not wrapped in a security proxy, since that tends to result in tests that are less accurate simulations of production.

This required tightening up a few tests.
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:factory-proxy-distroarchseriesfilter into launchpad:master.
diff --git a/lib/lp/soyuz/tests/test_distroarchseriesfilter.py b/lib/lp/soyuz/tests/test_distroarchseriesfilter.py
index d456828..2f11751 100644
--- a/lib/lp/soyuz/tests/test_distroarchseriesfilter.py
+++ b/lib/lp/soyuz/tests/test_distroarchseriesfilter.py
@@ -14,7 +14,7 @@ from lp.soyuz.interfaces.distroarchseriesfilter import (
     IDistroArchSeriesFilter,
     IDistroArchSeriesFilterSet,
 )
-from lp.testing import TestCaseWithFactory, person_logged_in
+from lp.testing import TestCaseWithFactory, admin_logged_in, person_logged_in
 from lp.testing.layers import DatabaseFunctionalLayer, ZopelessDatabaseLayer
 
 
@@ -25,7 +25,8 @@ class TestDistroArchSeriesFilter(TestCaseWithFactory):
     def test_implements_interfaces(self):
         # DistroArchSeriesFilter implements IDistroArchSeriesFilter.
         dasf = self.factory.makeDistroArchSeriesFilter()
-        self.assertProvides(dasf, IDistroArchSeriesFilter)
+        with admin_logged_in():
+            self.assertProvides(dasf, IDistroArchSeriesFilter)
 
     def test___repr__(self):
         # `DistroArchSeriesFilter` objects have an informative __repr__.
@@ -42,7 +43,8 @@ class TestDistroArchSeriesFilter(TestCaseWithFactory):
         dasf = self.factory.makeDistroArchSeriesFilter(
             sense=DistroArchSeriesFilterSense.INCLUDE
         )
-        dasf.packageset.add(spns[:2])
+        with admin_logged_in():
+            dasf.packageset.add(spns[:2])
         self.assertTrue(dasf.isSourceIncluded(spns[0]))
         self.assertTrue(dasf.isSourceIncluded(spns[1]))
         self.assertFalse(dasf.isSourceIncluded(spns[2]))
@@ -54,7 +56,8 @@ class TestDistroArchSeriesFilter(TestCaseWithFactory):
         dasf = self.factory.makeDistroArchSeriesFilter(
             sense=DistroArchSeriesFilterSense.EXCLUDE
         )
-        dasf.packageset.add(spns[:2])
+        with admin_logged_in():
+            dasf.packageset.add(spns[:2])
         self.assertFalse(dasf.isSourceIncluded(spns[0]))
         self.assertFalse(dasf.isSourceIncluded(spns[1]))
         self.assertTrue(dasf.isSourceIncluded(spns[2]))
diff --git a/lib/lp/testing/factory.py b/lib/lp/testing/factory.py
index b95c374..a67916a 100644
--- a/lib/lp/testing/factory.py
+++ b/lib/lp/testing/factory.py
@@ -3602,8 +3602,10 @@ class LaunchpadObjectFactory(ObjectFactory):
         # processor to go with it.
         if architecturetag is None:
             architecturetag = self.getUniqueString("arch")
-        return distroseries.newArch(
-            architecturetag, processor, official, owner, enabled
+        return ProxyFactory(
+            distroseries.newArch(
+                architecturetag, processor, official, owner, enabled
+            )
         )
 
     def makeBuildableDistroArchSeries(