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