# HG changeset patch # User sylvain.thenault@logilab.fr # Date 1237554071 -3600 # Node ID 43fa67acd9d0e68f256759f1e4c0856e780734df # Parent 1c24cde4bf728043812ee3bbe8a21eeca3bab54d one more test, but skipped in it may be a won't fix diff -r 1c24cde4bf72 -r 43fa67acd9d0 server/test/unittest_msplanner.py --- a/server/test/unittest_msplanner.py Fri Mar 20 12:51:39 2009 +0100 +++ b/server/test/unittest_msplanner.py Fri Mar 20 14:01:11 2009 +0100 @@ -1818,7 +1818,8 @@ )], {'x': 999999}) - def test_nonregr13(self): + def test_nonregr13_1(self): + # identity wrapped into exists self._test('Any B,U,UL GROUPBY B,U,UL WHERE B created_by U?, B is File ' 'WITH U,UL BEING (Any U,UL WHERE ME eid %(x)s, (EXISTS(U identity ME) ' 'OR (EXISTS(U in_group G, G name IN("managers", "staff")))) ' @@ -1840,6 +1841,41 @@ {'U': 'table1.C0', 'UL': 'table1.C1'}, [])], {'x': self.session.user.eid}) + + def test_nonregr13_2(self): + # identity *not* wrapped into exists. + # + # XXX this test fail since in this case, in "U identity 5" U and 5 are + # from the same scope so constraints are applied (telling the U should + # come from the same source as user with eid 5). + # + # IMO this is normal, unless we introduce a special case for the + # identity relation. BUT I think it's better to leave it as is and to + # explain constraint propagation rules, and so why this should be + # wrapped in exists() is used in multi-source + self.skip('take a look at me if you wish') + self._test('Any B,U,UL GROUPBY B,U,UL WHERE B created_by U?, B is File ' + 'WITH U,UL BEING (Any U,UL WHERE ME eid %(x)s, (U identity ME ' + 'OR (EXISTS(U in_group G, G name IN("managers", "staff")))) ' + 'OR (EXISTS(U in_group H, ME in_group H, NOT H name "users")), U login UL, U is EUser)', + [('FetchStep', [('Any U,UL WHERE U login UL, U is EUser', + [{'U': 'EUser', 'UL': 'String'}])], + [self.ldap, self.system], None, + {'U': 'table0.C0', 'U.login': 'table0.C1', 'UL': 'table0.C1'}, + []), + ('FetchStep', [('Any U,UL WHERE ((U identity 5) OR (EXISTS(U in_group G, G name IN("managers", "staff"), G is EGroup))) OR (EXISTS(U in_group H, 5 in_group H, NOT H name "users", H is EGroup)), U login UL, U is EUser', + [{'G': 'EGroup', 'H': 'EGroup', 'U': 'EUser', 'UL': 'String'}])], + [self.system], + {'U': 'table0.C0', 'U.login': 'table0.C1', 'UL': 'table0.C1'}, + {'U': 'table1.C0', 'U.login': 'table1.C1', 'UL': 'table1.C1'}, + []), + ('OneFetchStep', [('Any B,U,UL GROUPBY B,U,UL WHERE B created_by U?, B is File', + [{'B': 'File', 'U': 'EUser', 'UL': 'String'}])], + None, None, [self.system], + {'U': 'table1.C0', 'UL': 'table1.C1'}, + [])], + {'x': self.session.user.eid}) + class MSPlannerTwoSameExternalSourcesTC(BasePlannerTC): """test planner related feature on a 3-sources repository: