Please find attached a patch to make urlutils' unit test only run the
hashlib test if hashlib is installed.  Right now it always runs the
test, and fails when hashlib isn't installed - despite the fact that
hashlib isn't a dependency (actually it's not mentioned in INSTALL at all.)

Joe
From 85b4c526c929696997b5831234651b99d2d1cbaa Mon Sep 17 00:00:00 2001
From: Joe Blaylock <[email protected]>
Date: Wed, 4 May 2011 15:25:01 -0700
Subject: [PATCH] Urlutils: only unit test testable code

* Causes hashlib unit tests to silently skip running rather than to fail.
---
 modules/miscutil/lib/urlutils_tests.py |  106 ++++++++++++++++----------------
 1 files changed, 52 insertions(+), 54 deletions(-)

diff --git a/modules/miscutil/lib/urlutils_tests.py b/modules/miscutil/lib/urlutils_tests.py
index f33d5ad..daa54ec 100644
--- a/modules/miscutil/lib/urlutils_tests.py
+++ b/modules/miscutil/lib/urlutils_tests.py
@@ -84,60 +84,58 @@ class TestUrls(unittest.TestCase):
                                                  'b': ('str', 2)}),
                          "?b%26=2%3D&amp;%3A=%3F%26&amp;b=2")
 
-    def test_signed_aws_request_creation(self):
-        """urlutils - test creation of signed AWS requests"""
-
-        if not HASHLIB_IMPORTED:
-            self.fail("SKIPPED: Hashlib not available, test skipped.")
-
-        signed_aws_request_url = create_AWS_request_url("http://webservices.amazon.com/onca/xml";,
-                                                        {'AWSAccessKeyId': '00000000000000000000',
-                                                         'Service': 'AWSECommerceService',
-                                                         'Operation': 'ItemLookup',
-                                                         'ItemId': '0679722769',
-                                                         'ResponseGroup': 'ItemAttributes,Offers,Images,Reviews',
-                                                         'Version': '2009-01-06'},
-                                                        "1234567890",
-                                                        _timestamp="2009-01-01T12:00:00Z")
-
-        # Are we at least acccessing correct base url?
-        self.assert_(signed_aws_request_url.startswith("http://webservices.amazon.com/onca/xml";))
-
-        # Check that parameters with special characters (, :) get correctly
-        # encoded/decoded
-        ## Note: using parse_qs() url-decodes the string
-        self.assertEqual(parse_qs(signed_aws_request_url)["ResponseGroup"],
-                         ['ItemAttributes,Offers,Images,Reviews'])
-        self.assert_('ItemAttributes%2COffers%2CImages%2CReviews' \
-                     in signed_aws_request_url)
-
-        self.assertEqual(parse_qs(signed_aws_request_url)["Timestamp"],
-                         ['2009-01-01T12:00:00Z'])
-
-        # Check signature exists and is correct
-        self.assertEqual(parse_qs(signed_aws_request_url)["Signature"],
-                         ['Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg='])
-        self.assert_('Nace%2BU3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg%3D&Operation' \
-                     in signed_aws_request_url)
-
-        # Continute with an additional request
-        signed_aws_request_url_2 = \
-                                 create_AWS_request_url("http://ecs.amazonaws.co.uk/onca/xml";,
-                                                        {'AWSAccessKeyId': '00000000000000000000',
-                                                         'Actor': 'Johnny Depp',
-                                                         'AssociateTag': 'mytag-20',
-                                                         'Operation': 'ItemSearch',
-                                                         'ResponseGroup': 'ItemAttributes,Offers,Images,Reviews,Variations',
-                                                         'SearchIndex': 'DVD',
-                                                         'Service': 'AWSECommerceService',
-                                                         'Sort': 'salesrank',
-                                                         'Version': '2009-01-01'},
-                                                        "1234567890",
-                                                        _timestamp="2009-01-01T12:00:00Z")
-        # Check signature exists and is correct
-        self.assertEqual(parse_qs(signed_aws_request_url_2)["Signature"],
-                         ['TuM6E5L9u/uNqOX09ET03BXVmHLVFfJIna5cxXuHxiU='])
-
+    if HASHLIB_IMPORTED:
+        def test_signed_aws_request_creation(self):
+            """urlutils - test creation of signed AWS requests"""
+    
+            signed_aws_request_url = create_AWS_request_url("http://webservices.amazon.com/onca/xml";,
+                                                            {'AWSAccessKeyId': '00000000000000000000',
+                                                             'Service': 'AWSECommerceService',
+                                                             'Operation': 'ItemLookup',
+                                                             'ItemId': '0679722769',
+                                                             'ResponseGroup': 'ItemAttributes,Offers,Images,Reviews',
+                                                             'Version': '2009-01-06'},
+                                                            "1234567890",
+                                                            _timestamp="2009-01-01T12:00:00Z")
+    
+            # Are we at least acccessing correct base url?
+            self.assert_(signed_aws_request_url.startswith("http://webservices.amazon.com/onca/xml";))
+    
+            # Check that parameters with special characters (, :) get correctly
+            # encoded/decoded
+            ## Note: using parse_qs() url-decodes the string
+            self.assertEqual(parse_qs(signed_aws_request_url)["ResponseGroup"],
+                             ['ItemAttributes,Offers,Images,Reviews'])
+            self.assert_('ItemAttributes%2COffers%2CImages%2CReviews' \
+                         in signed_aws_request_url)
+    
+            self.assertEqual(parse_qs(signed_aws_request_url)["Timestamp"],
+                             ['2009-01-01T12:00:00Z'])
+    
+            # Check signature exists and is correct
+            self.assertEqual(parse_qs(signed_aws_request_url)["Signature"],
+                             ['Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg='])
+            self.assert_('Nace%2BU3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg%3D&Operation' \
+                         in signed_aws_request_url)
+    
+            # Continute with an additional request
+            signed_aws_request_url_2 = \
+                                     create_AWS_request_url("http://ecs.amazonaws.co.uk/onca/xml";,
+                                                            {'AWSAccessKeyId': '00000000000000000000',
+                                                             'Actor': 'Johnny Depp',
+                                                             'AssociateTag': 'mytag-20',
+                                                             'Operation': 'ItemSearch',
+                                                             'ResponseGroup': 'ItemAttributes,Offers,Images,Reviews,Variations',
+                                                             'SearchIndex': 'DVD',
+                                                             'Service': 'AWSECommerceService',
+                                                             'Sort': 'salesrank',
+                                                             'Version': '2009-01-01'},
+                                                            "1234567890",
+                                                            _timestamp="2009-01-01T12:00:00Z")
+            # Check signature exists and is correct
+            self.assertEqual(parse_qs(signed_aws_request_url_2)["Signature"],
+                             ['TuM6E5L9u/uNqOX09ET03BXVmHLVFfJIna5cxXuHxiU='])
+    
     def test_same_urls_p(self):
         """urlutils - test checking URLs equality"""
         self.assertEqual(same_urls_p(CFG_SITE_URL + '?a=b&c=d&e=f',
-- 
1.7.4.1

Reply via email to