python3: celery now handle text (#40288)

This commit is contained in:
Nicolas Roche 2020-02-29 13:20:49 +01:00
parent cf4d3d4a46
commit 59b3228dcb
3 changed files with 9 additions and 5 deletions

View File

@ -10,6 +10,7 @@ import tempfile
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError
from django.core.management import call_command, get_commands
from django.utils.encoding import force_text
from django.utils.six.moves.urllib import parse as urlparse
from tenant_schemas.utils import tenant_context
@ -26,7 +27,7 @@ def replace_file(path, content):
fd, temp = tempfile.mkstemp(dir=dirname,
prefix='.tmp-'+os.path.basename(path)+'-')
f = os.fdopen(fd, 'w')
f.write(content)
f.write(force_text(content))
f.flush()
os.fsync(f.fileno())
f.close()

View File

@ -23,6 +23,7 @@ import os
import subprocess
import sys
from django.utils.encoding import force_bytes
from django.utils.six.moves.urllib import parse as urlparse
from . import settings
@ -80,7 +81,7 @@ class BaseService(object):
cmd = self.service_manage_cmd + ' hobo_deploy ' + self.base_url + ' -'
cmd_process = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = cmd_process.communicate(input=json.dumps(environment))
stdout, stderr = cmd_process.communicate(input=force_bytes(json.dumps(environment)))
if cmd_process.returncode != 0:
raise RuntimeError('command "%s" failed: %r %r' % (cmd, stdout, stderr))
@ -103,7 +104,7 @@ class BaseService(object):
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except OSError:
return
stdout, stderr = cmd_process.communicate(input=json.dumps(data))
stdout, stderr = cmd_process.communicate(input=force_bytes(json.dumps(data)))
if cmd_process.returncode != 0:
raise RuntimeError('command "%s" failed: %r %r' % (cmd, stdout, stderr))

View File

@ -6,6 +6,8 @@ import os
import pytest
import six
from django.utils.encoding import force_text
from hobo.agent.worker.services import deploy, notify
from hobo.agent.worker import settings
@ -102,7 +104,7 @@ def test_deploy(mocked_subprocess, mocked_exists):
mock_calls = mocked_communicate.mock_calls
assert len(mock_calls) == 4
for i in range(0, len(mock_calls)):
assert json.loads(mock_calls[0][2]['input']) == ENVIRONMENT
assert json.loads(force_text(mock_calls[0][2]['input'])) == ENVIRONMENT
mocked_opened.returncode = 1
with pytest.raises(RuntimeError, match='failed: '):
@ -147,7 +149,7 @@ def test_notify(mocked_subprocess, mocked_listdir, mocked_exists):
# notification sent
mock_calls = mocked_communicate.mock_calls
assert len(mock_calls) == 1
assert json.loads(mock_calls[0][2]['input'])['objects']['data'][0]['uuid'] == '12345'
assert json.loads(force_text(mock_calls[0][2]['input']))['objects']['data'][0]['uuid'] == '12345'
mocked_opened.returncode = 1
with pytest.raises(RuntimeError, match='failed: '):