File 0001-Use-testtools-for-better-Python-2.6-compatibility.patch of Package openstack-heat-cfntools

From b4720babb9cb532481eda734c8b28bf18ba755c3 Mon Sep 17 00:00:00 2001
From: Dirk Mueller <dirk@dmllr.de>
Date: Mon, 29 Apr 2013 19:11:36 +0200
Subject: [PATCH] Use testtools for better Python 2.6 compatibility

Testsuite uses assertDictEqual and a few others
which do not exist for Python 2.6. Use testtools
instead which works for Python < 2.7. I did not
find a good replacement for assertRaisesRegexp, so
I added a dummy implementation instead.

Change-Id: I7c6cba7c032a721f2ade0055066b9ddfac6a35c9
---
 heat_cfntools/tests/test_cfn_helper.py | 49 +++++++++++++++++++++++++---------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/heat_cfntools/tests/test_cfn_helper.py b/heat_cfntools/tests/test_cfn_helper.py
index aad782b..7aec3db 100644
--- a/heat_cfntools/tests/test_cfn_helper.py
+++ b/heat_cfntools/tests/test_cfn_helper.py
@@ -18,6 +18,7 @@ import boto.cloudformation as cfn
 import json
 import mox
 import os
+import sys
 import subprocess
 import tempfile
 import testtools
@@ -26,6 +27,28 @@ import testtools.matchers as ttm
 from heat_cfntools.cfntools import cfn_helper
 
 
+class BaseCfnTests(testtools.TestCase):
+    """ Base Class for all Tests, providing Python 2.6 compatibility """
+
+if tuple(sys.version_info)[0:2] < (2, 7):
+
+    # 2.6 doesn't have assertRaisesRegexp so make sure that it exists
+    class AdjustedBaseCfnTests(BaseCfnTests):
+        def assertRaisesRegexp(self, exception, regexp, cfn, *args, **kwds):
+            import re
+            try:
+                cfn(*args)
+            except exception as e:
+                print e.message
+                print regexp
+                self.assertTrue(e.message and re.match(regexp, e.message))
+
+            else:
+                self.assertFalse('No Exception thrown')
+
+    BaseCfnTests = AdjustedBaseCfnTests
+
+
 class FakePOpen():
     def __init__(self, stdout='', stderr='', returncode=0):
         self.returncode = returncode
@@ -39,7 +62,7 @@ class FakePOpen():
         pass
 
 
-class MockPopenTestCase(testtools.TestCase):
+class MockPopenTestCase(BaseCfnTests):
 
     def mock_cmd_run(self, command, cwd=None, env=None):
         return subprocess.Popen(
@@ -407,12 +430,12 @@ interval=120''' % fcreds.name)
             open(main_conf.name),
             open(hooks_conf.name)])
         unique_resources = mainconfig.unique_resources_get()
-        self.assertSequenceEqual([
+        self.assertThat([
             'resource2',
             'resource1',
             'resource3',
             'resource'
-        ], unique_resources)
+        ], ttm.Equals(unique_resources))
 
         hooks = mainconfig.hooks
         self.assertEqual(
@@ -493,7 +516,7 @@ class TestCfnHelper(testtools.TestCase):
                 fcreds.write(file_contents)
                 fcreds.flush()
                 creds = cfn_helper.parse_creds_file(fcreds.name)
-                self.assertDictEqual(creds_match, creds)
+                self.assertThat(creds_match, ttm.Equals(creds))
         parse_creds_test(
             'AWSAccessKeyId=foo\nAWSSecretKey=bar\n',
             {'AWSAccessKeyId': 'foo', 'AWSSecretKey': 'bar'}
@@ -531,13 +554,13 @@ class TestMetadataRetrieve(testtools.TestCase):
                 last_path=last_file.name)
 
             self.assertThat(last_file.name, ttm.FileContains(md_str))
-            self.assertDictEqual(md_data, md._metadata)
+            self.assertThat(md_data, ttm.Equals(md._metadata))
 
         md = cfn_helper.Metadata('teststack', None)
         md.retrieve(
             default_path=default_file.name,
             last_path=last_file.name)
-        self.assertDictEqual(md_data, md._metadata)
+        self.assertThat(md_data, ttm.Equals(md._metadata))
 
     def test_metadata_retrieve_none(self):
 
@@ -563,11 +586,11 @@ class TestMetadataRetrieve(testtools.TestCase):
 
         md = cfn_helper.Metadata('teststack', None)
         md.retrieve(meta_str=md_str, last_path=last_file.name)
-        self.assertDictEqual(md_data, md._metadata)
+        self.assertThat(md_data, ttm.Equals(md._metadata))
 
         md = cfn_helper.Metadata('teststack', None)
         md.retrieve(meta_str=md_data, last_path=last_file.name)
-        self.assertDictEqual(md_data, md._metadata)
+        self.assertThat(md_data, ttm.Equals(md._metadata))
         self.assertEqual(md_str, str(md))
 
     def test_metadata_creates_cache(self):
@@ -605,10 +628,10 @@ class TestMetadataRetrieve(testtools.TestCase):
         md = cfn_helper.Metadata('teststack', None)
         md.retrieve(meta_str=md_data, last_path=last_file.name)
 
-        self.assertDictEqual(md_data, md._metadata)
+        self.assertThat(md_data, ttm.Equals(md._metadata))
         self.assertTrue(md._is_valid_metadata())
-        self.assertDictEqual(
-            md_data['AWS::CloudFormation::Init'], md._metadata)
+        self.assertThat(
+            md_data['AWS::CloudFormation::Init'], ttm.Equals(md._metadata))
 
     def test_remote_metadata(self):
 
@@ -637,7 +660,7 @@ class TestMetadataRetrieve(testtools.TestCase):
                 access_key='foo',
                 secret_key='bar')
             md.retrieve(last_path=last_file.name)
-            self.assertDictEqual(md_data, md._metadata)
+            self.assertThat(md_data, ttm.Equals(md._metadata))
 
             with tempfile.NamedTemporaryFile(mode='w') as fcreds:
                 fcreds.write('AWSAccessKeyId=foo\nAWSSecretKey=bar\n')
@@ -645,7 +668,7 @@ class TestMetadataRetrieve(testtools.TestCase):
                 md = cfn_helper.Metadata(
                     'teststack', None, credentials_file=fcreds.name)
                 md.retrieve(last_path=last_file.name)
-            self.assertDictEqual(md_data, md._metadata)
+            self.assertThat(md_data, ttm.Equals(md._metadata))
 
             m.VerifyAll()
         finally:
-- 
1.8.1.4

openSUSE Build Service is sponsored by