# HG changeset patch # User Julien Cristau # Date 1423761907 -3600 # Node ID 6ec03928257f21855c640983a4e2ceb1d212a298 # Parent 495efb844048163de8591d481fb2359dff14aaf9 [sobjects/test] Fix dependency on predictable hashing Fix test under python -R by ignoring url query parameter ordering. Related to #4959402. diff -r 495efb844048 -r 6ec03928257f sobjects/test/unittest_cwxmlparser.py --- a/sobjects/test/unittest_cwxmlparser.py Thu Feb 12 18:13:00 2015 +0100 +++ b/sobjects/test/unittest_cwxmlparser.py Thu Feb 12 18:25:07 2015 +0100 @@ -17,6 +17,7 @@ # with CubicWeb. If not, see . from datetime import datetime +from urlparse import urlsplit, parse_qsl from cubicweb.devtools.testlib import CubicWebTC from cubicweb.sobjects.cwxmlparser import CWEntityXMLParser @@ -133,6 +134,16 @@ """ test_db_id = 'xmlparser' + def assertURLEquiv(self, first, second): + # ignore ordering differences in query params + parsed_first = urlsplit(first) + parsed_second = urlsplit(second) + self.assertEqual(parsed_first.scheme, parsed_second.scheme) + self.assertEqual(parsed_first.netloc, parsed_second.netloc) + self.assertEqual(parsed_first.path, parsed_second.path) + self.assertEqual(parsed_first.fragment, parsed_second.fragment) + self.assertCountEqual(parse_qsl(parsed_first.query), parse_qsl(parsed_second.query)) + @classmethod def pre_setup_database(cls, cnx, config): myfeed = cnx.create_entity('CWSource', name=u'myfeed', type=u'datafeed', @@ -161,16 +172,16 @@ dfsource = self.repo.sources_by_uri['myfeed'] with self.admin_access.repo_cnx() as cnx: parser = dfsource._get_parser(cnx) - self.assertEqual(parser.complete_url('http://www.cubicweb.org/CWUser'), - 'http://www.cubicweb.org/CWUser?relation=tags-object&relation=in_group-subject&relation=in_state-subject&relation=use_email-subject') - self.assertEqual(parser.complete_url('http://www.cubicweb.org/cwuser'), - 'http://www.cubicweb.org/cwuser?relation=tags-object&relation=in_group-subject&relation=in_state-subject&relation=use_email-subject') - self.assertEqual(parser.complete_url('http://www.cubicweb.org/cwuser?vid=rdf&relation=hop'), - 'http://www.cubicweb.org/cwuser?relation=hop&relation=tags-object&relation=in_group-subject&relation=in_state-subject&relation=use_email-subject&vid=rdf') - self.assertEqual(parser.complete_url('http://www.cubicweb.org/?rql=cwuser&vid=rdf&relation=hop'), - 'http://www.cubicweb.org/?rql=cwuser&relation=hop&vid=rdf') - self.assertEqual(parser.complete_url('http://www.cubicweb.org/?rql=cwuser&relation=hop'), - 'http://www.cubicweb.org/?rql=cwuser&relation=hop') + self.assertURLEquiv(parser.complete_url('http://www.cubicweb.org/CWUser'), + 'http://www.cubicweb.org/CWUser?relation=tags-object&relation=in_group-subject&relation=in_state-subject&relation=use_email-subject') + self.assertURLEquiv(parser.complete_url('http://www.cubicweb.org/cwuser'), + 'http://www.cubicweb.org/cwuser?relation=tags-object&relation=in_group-subject&relation=in_state-subject&relation=use_email-subject') + self.assertURLEquiv(parser.complete_url('http://www.cubicweb.org/cwuser?vid=rdf&relation=hop'), + 'http://www.cubicweb.org/cwuser?relation=hop&relation=tags-object&relation=in_group-subject&relation=in_state-subject&relation=use_email-subject&vid=rdf') + self.assertURLEquiv(parser.complete_url('http://www.cubicweb.org/?rql=cwuser&vid=rdf&relation=hop'), + 'http://www.cubicweb.org/?rql=cwuser&relation=hop&vid=rdf') + self.assertURLEquiv(parser.complete_url('http://www.cubicweb.org/?rql=cwuser&relation=hop'), + 'http://www.cubicweb.org/?rql=cwuser&relation=hop') def test_actions(self):