Tests: added test for Ruby default encoding.

This commit is contained in:
Andrei Zeliankou
2021-03-26 15:42:58 +00:00
parent 97b4de0d4a
commit c093ee7ec5
2 changed files with 55 additions and 0 deletions

View File

@@ -1,4 +1,5 @@
import re
import subprocess
import pytest
from unit.applications.lang.ruby import TestApplicationRuby
@@ -223,6 +224,52 @@ class TestRubyApplication(TestApplicationRuby):
self.wait_for_record(r'\[error\].+At exit called\.') is not None
), 'at exit'
def test_ruby_application_encoding(self):
self.load('encoding')
try:
locales = subprocess.check_output(
['locale', '-a'], stderr=subprocess.STDOUT,
).decode().split('\n')
except (FileNotFoundError, subprocess.CalledProcessError):
pytest.skip('require locale')
def get_locale(pattern):
return next(
(
l
for l in locales
if re.match(pattern, l.upper()) is not None
),
None,
)
utf8 = get_locale(r'.*UTF[-_]?8')
iso88591 = get_locale(r'.*ISO[-_]?8859[-_]?1')
def check_locale(enc):
assert 'success' in self.conf(
{"LC_CTYPE": enc}, '/config/applications/encoding/environment',
)
resp = self.get()
assert resp['status'] == 200, 'status'
enc_default = re.sub(r'[-_]', '', resp['headers']['X-Enc']).upper()
assert (
enc_default == re.sub(r'[-_]', '', enc.split('.')[-1]).upper()
)
if utf8:
check_locale(utf8)
if iso88591:
check_locale(iso88591)
if not utf8 and not iso88591:
pytest.skip('no available locales')
def test_ruby_application_header_custom(self):
self.load('header_custom')