Port password tests to Python 3

* load_template_source(): use io.open() with an encoding instead of
  open(), to have the same behaviour on Python 2 and Python 3
* assertRedirectsNoFollow(): remove an useless assertion on the
  response status code which is already tested a few lines below. The
  assertion used code/100 which returns a float on Python 3, whereas
  an int was expected.
* add_logout_reason(): don't encode reason to UTF-8 on Python 3
* tox.ini: add openstack_dashboard.dashboards.settings.password to
  Python 3.4

Partial-Implements: blueprint porting-python3
Change-Id: Iff8997917b5d812952150b2abe89ddd12deab0c0
This commit is contained in:
Victor Stinner 2015-08-28 16:56:03 +02:00
parent 8cd862767a
commit c63d7a6390
4 changed files with 7 additions and 5 deletions

View File

@ -14,6 +14,7 @@
Wrapper for loading templates from "templates" directories in panel modules. Wrapper for loading templates from "templates" directories in panel modules.
""" """
import io
import os import os
import django import django
@ -54,8 +55,8 @@ class TemplateLoader(tLoaderCls):
def load_template_source(self, template_name, template_dirs=None): def load_template_source(self, template_name, template_dirs=None):
for path in self.get_template_sources(template_name): for path in self.get_template_sources(template_name):
try: try:
with open(path) as file: with io.open(path, encoding=settings.FILE_CHARSET) as file:
return (file.read().decode(settings.FILE_CHARSET), path) return (file.read(), path)
except IOError: except IOError:
pass pass
raise TemplateDoesNotExist(template_name) raise TemplateDoesNotExist(template_name)

View File

@ -42,7 +42,9 @@ def add_logout_reason(request, response, reason):
# Store the translated string in the cookie # Store the translated string in the cookie
lang = translation.get_language_from_request(request) lang = translation.get_language_from_request(request)
with translation.override(lang): with translation.override(lang):
reason = six.text_type(reason).encode('utf-8') reason = six.text_type(reason)
if six.PY2:
reason = reason.encode('utf-8')
response.set_cookie('logout_reason', reason, max_age=10) response.set_cookie('logout_reason', reason, max_age=10)

View File

@ -227,8 +227,6 @@ class TestCase(horizon_helpers.TestCase):
Asserts that the given response issued a 302 redirect without Asserts that the given response issued a 302 redirect without
processing the view which is redirected to. processing the view which is redirected to.
""" """
assert (response.status_code / 100 == 3), \
"The response did not return a redirect."
self.assertEqual(response._headers.get('location', None), self.assertEqual(response._headers.get('location', None),
('Location', settings.TESTSERVER + expected_url)) ('Location', settings.TESTSERVER + expected_url))
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)

View File

@ -39,6 +39,7 @@ commands =
openstack_dashboard.dashboards.project.images.images.tests.CreateImageFormTests \ openstack_dashboard.dashboards.project.images.images.tests.CreateImageFormTests \
openstack_dashboard.dashboards.project.images.tests.ImagesAndSnapshotsUtilsTests \ openstack_dashboard.dashboards.project.images.tests.ImagesAndSnapshotsUtilsTests \
openstack_dashboard.dashboards.project.stacks.tests.TemplateFormTests \ openstack_dashboard.dashboards.project.stacks.tests.TemplateFormTests \
openstack_dashboard.dashboards.settings.password \
openstack_dashboard.test.api_tests.base_tests.APIDictWrapperTests \ openstack_dashboard.test.api_tests.base_tests.APIDictWrapperTests \
openstack_dashboard.test.api_tests.base_tests.APIResourceWrapperTests \ openstack_dashboard.test.api_tests.base_tests.APIResourceWrapperTests \
openstack_dashboard.test.api_tests.base_tests.ApiHelperTests \ openstack_dashboard.test.api_tests.base_tests.ApiHelperTests \