Tests: added test for Ruby default encoding.
This commit is contained in:
8
test/ruby/encoding/config.ru
Normal file
8
test/ruby/encoding/config.ru
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
app = Proc.new do |env|
|
||||||
|
['200', {
|
||||||
|
'Content-Length' => '0',
|
||||||
|
'X-Enc' => Encoding.default_external.to_s,
|
||||||
|
}, ['']]
|
||||||
|
end
|
||||||
|
|
||||||
|
run app
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import re
|
import re
|
||||||
|
import subprocess
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from unit.applications.lang.ruby import TestApplicationRuby
|
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
|
self.wait_for_record(r'\[error\].+At exit called\.') is not None
|
||||||
), 'at exit'
|
), '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):
|
def test_ruby_application_header_custom(self):
|
||||||
self.load('header_custom')
|
self.load('header_custom')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user