[tor-commits] [stem/master] Ensure the 'compare_flags' test gives reliable results.

atagar at torproject.org atagar at torproject.org
Thu Jul 9 15:35:27 UTC 2015

commit 1b7b1369579e04292221b2bfce6ad4b3d3c85d2e
Author: cypherpunks <cypherpunks at torproject.org>
Date:   Thu Jul 9 16:10:06 2015 +0200

    Ensure the 'compare_flags' test gives reliable results.
    The call to queries.items() causes the issue by returning an unordered set of
    key/value pairs. When the call returns the queries in an unexpected order, the
    mocked Query.run() function assigns the network status documents in the wrong
    order to the authorities. Using an ordered dictionary fixes the problem.
    This commit closes ticket 16299.
    Other small changes are a PEP8 fix, a grammar fix, and the use of
    assertItemsEqual instead of assertEquals. According to the Python
    documentation [0], assertItemsEqual is the Python 2.7 equivalent of
    assertCountEqual in Python 3.
    [0] https://docs.python.org/2.7/library/unittest.html#unittest.TestCase.assertItemsEqual
 docs/_static/example/compare_flags.py |   11 ++++++++---
 test/unit/tutorial_examples.py        |    2 +-
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/docs/_static/example/compare_flags.py b/docs/_static/example/compare_flags.py
index 1043af1..df317a8 100644
--- a/docs/_static/example/compare_flags.py
+++ b/docs/_static/example/compare_flags.py
@@ -1,9 +1,14 @@
+from collections import OrderedDict
 from stem.descriptor import DocumentHandler, remote
 # Query all authority votes asynchronously.
-downloader = remote.DescriptorDownloader(document_handler = DocumentHandler.DOCUMENT)
-queries = {}
+downloader = remote.DescriptorDownloader(document_handler=DocumentHandler.DOCUMENT)
+# An ordered dictionary ensures queries are finished in the order they were
+# added.
+queries = OrderedDict()
 for name, authority in remote.get_authorities().items():
   if authority.v3ident is None:
@@ -23,7 +28,7 @@ all_fingerprints = set()
 for vote in votes.values():
-# Finally, compare moria1's votes to maatuska.
+# Finally, compare moria1's votes to maatuska's votes.
 for fingerprint in all_fingerprints:
   moria1_vote = votes['moria1'].routers.get(fingerprint)
diff --git a/test/unit/tutorial_examples.py b/test/unit/tutorial_examples.py
index c102c1a..a8382a3 100644
--- a/test/unit/tutorial_examples.py
+++ b/test/unit/tutorial_examples.py
@@ -140,7 +140,7 @@ class TestTutorialExamples(unittest.TestCase):
     if stem.prereq.is_python_3():
       self.assertCountEqual(expected.splitlines(), actual.splitlines())
-      self.assertEquals(sorted(expected.splitlines()), sorted(actual.splitlines()))
+      self.assertItemsEqual(expected.splitlines(), actual.splitlines())
   @patch('sys.stdout', new_callable = StringIO)
   @patch('stem.control.Controller.from_port', spec = Controller)

More information about the tor-commits mailing list