Your IP : 216.73.216.213


Current Path : /opt/alt/python38/lib64/python3.8/test/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/__pycache__/test_gettext.cpython-38.opt-1.pyc

U

i�f���@s|ddlZddlZddlZddlZddlZddlmZdZdZdZ	dZ
dZej�
dd	�Zej�
ed
�Zej�
ed�Zej�
ed�Zej�
ed
�Zej�
ed�ZGdd�dej�ZdZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGd d!�d!e�ZGd"d#�d#ej�Z Gd$d%�d%e�Z!Gd&d'�d'ej�Z"e#d(k�rxe�$�dS))�N)�supports=3hIElQAAAAAJAAAAHAAAAGQAAAAAAAAArAAAAAAAAACsAAAAFQAAAK0AAAAjAAAAwwAAAKEAAADn
AAAAMAAAAIkBAAAHAAAAugEAABYAAADCAQAAHAAAANkBAAALAAAA9gEAAEIBAAACAgAAFgAAAEUD
AAAeAAAAXAMAAKEAAAB7AwAAMgAAAB0EAAAFAAAAUAQAABsAAABWBAAAIQAAAHIEAAAJAAAAlAQA
AABSYXltb25kIEx1eHVyeSBZYWNoLXQAVGhlcmUgaXMgJXMgZmlsZQBUaGVyZSBhcmUgJXMgZmls
ZXMAVGhpcyBtb2R1bGUgcHJvdmlkZXMgaW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIGxvY2FsaXph
dGlvbgpzdXBwb3J0IGZvciB5b3VyIFB5dGhvbiBwcm9ncmFtcyBieSBwcm92aWRpbmcgYW4gaW50
ZXJmYWNlIHRvIHRoZSBHTlUKZ2V0dGV4dCBtZXNzYWdlIGNhdGFsb2cgbGlicmFyeS4AV2l0aCBj
b250ZXh0BFRoZXJlIGlzICVzIGZpbGUAVGhlcmUgYXJlICVzIGZpbGVzAG11bGx1c2sAbXkgY29u
dGV4dARudWRnZSBudWRnZQBteSBvdGhlciBjb250ZXh0BG51ZGdlIG51ZGdlAG51ZGdlIG51ZGdl
AFByb2plY3QtSWQtVmVyc2lvbjogMi4wClBPLVJldmlzaW9uLURhdGU6IDIwMDMtMDQtMTEgMTQ6
MzItMDQwMApMYXN0LVRyYW5zbGF0b3I6IEouIERhdmlkIEliYW5leiA8ai1kYXZpZEBub29zLmZy
PgpMYW5ndWFnZS1UZWFtOiBYWCA8cHl0aG9uLWRldkBweXRob24ub3JnPgpNSU1FLVZlcnNpb246
IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4NTktMQpDb250ZW50
LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CkdlbmVyYXRlZC1CeTogcHlnZXR0ZXh0LnB5IDEuMQpQ
bHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uIT0xOwoAVGhyb2F0d29iYmxlciBNYW5n
cm92ZQBIYXkgJXMgZmljaGVybwBIYXkgJXMgZmljaGVyb3MAR3V2ZiB6YnFoeXIgY2ViaXZxcmYg
dmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3ZiYQpmaGNjYmVnIHNiZSBsYmhlIENs
Z3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVzbnByIGdiIGd1ciBUQUgKdHJnZ3Jr
ZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4ASGF5ICVzIGZpY2hlcm8gKGNvbnRleHQpAEhheSAl
cyBmaWNoZXJvcyAoY29udGV4dCkAYmFjb24Ad2luayB3aW5rIChpbiAibXkgY29udGV4dCIpAHdp
bmsgd2luayAoaW4gIm15IG90aGVyIGNvbnRleHQiKQB3aW5rIHdpbmsA
s3hIElQAABQAGAAAAHAAAAEwAAAALAAAAfAAAAAAAAACoAAAAFQAAAKkAAAAjAAAAvwAAAKEAAADj
AAAABwAAAIUBAAALAAAAjQEAAEUBAACZAQAAFgAAAN8CAAAeAAAA9gIAAKEAAAAVAwAABQAAALcD
AAAJAAAAvQMAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABQAAAAYAAAACAAAAAFJh
eW1vbmQgTHV4dXJ5IFlhY2gtdABUaGVyZSBpcyAlcyBmaWxlAFRoZXJlIGFyZSAlcyBmaWxlcwBU
aGlzIG1vZHVsZSBwcm92aWRlcyBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgbG9jYWxpemF0aW9u
CnN1cHBvcnQgZm9yIHlvdXIgUHl0aG9uIHByb2dyYW1zIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZh
Y2UgdG8gdGhlIEdOVQpnZXR0ZXh0IG1lc3NhZ2UgY2F0YWxvZyBsaWJyYXJ5LgBtdWxsdXNrAG51
ZGdlIG51ZGdlAFByb2plY3QtSWQtVmVyc2lvbjogMi4wClBPLVJldmlzaW9uLURhdGU6IDIwMDAt
MDgtMjkgMTI6MTktMDQ6MDAKTGFzdC1UcmFuc2xhdG9yOiBKLiBEYXZpZCBJYsOhw7FleiA8ai1k
YXZpZEBub29zLmZyPgpMYW5ndWFnZS1UZWFtOiBYWCA8cHl0aG9uLWRldkBweXRob24ub3JnPgpN
SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4
NTktMQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBub25lCkdlbmVyYXRlZC1CeTogcHlnZXR0
ZXh0LnB5IDEuMQpQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uIT0xOwoAVGhyb2F0
d29iYmxlciBNYW5ncm92ZQBIYXkgJXMgZmljaGVybwBIYXkgJXMgZmljaGVyb3MAR3V2ZiB6YnFo
eXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3ZiYQpmaGNjYmVn
IHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVzbnByIGdiIGd1
ciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4AYmFjb24Ad2luayB3aW5rAA==
s3hIElQcAAAAGAAAAHAAAAEwAAAALAAAAfAAAAAAAAACoAAAAFQAAAKkAAAAjAAAAvwAAAKEAAADj
AAAABwAAAIUBAAALAAAAjQEAAEUBAACZAQAAFgAAAN8CAAAeAAAA9gIAAKEAAAAVAwAABQAAALcD
AAAJAAAAvQMAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABQAAAAYAAAACAAAAAFJh
eW1vbmQgTHV4dXJ5IFlhY2gtdABUaGVyZSBpcyAlcyBmaWxlAFRoZXJlIGFyZSAlcyBmaWxlcwBU
aGlzIG1vZHVsZSBwcm92aWRlcyBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgbG9jYWxpemF0aW9u
CnN1cHBvcnQgZm9yIHlvdXIgUHl0aG9uIHByb2dyYW1zIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZh
Y2UgdG8gdGhlIEdOVQpnZXR0ZXh0IG1lc3NhZ2UgY2F0YWxvZyBsaWJyYXJ5LgBtdWxsdXNrAG51
ZGdlIG51ZGdlAFByb2plY3QtSWQtVmVyc2lvbjogMi4wClBPLVJldmlzaW9uLURhdGU6IDIwMDAt
MDgtMjkgMTI6MTktMDQ6MDAKTGFzdC1UcmFuc2xhdG9yOiBKLiBEYXZpZCBJYsOhw7FleiA8ai1k
YXZpZEBub29zLmZyPgpMYW5ndWFnZS1UZWFtOiBYWCA8cHl0aG9uLWRldkBweXRob24ub3JnPgpN
SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4
NTktMQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBub25lCkdlbmVyYXRlZC1CeTogcHlnZXR0
ZXh0LnB5IDEuMQpQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uIT0xOwoAVGhyb2F0
d29iYmxlciBNYW5ncm92ZQBIYXkgJXMgZmljaGVybwBIYXkgJXMgZmljaGVyb3MAR3V2ZiB6YnFo
eXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3ZiYQpmaGNjYmVn
IHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVzbnByIGdiIGd1
ciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4AYmFjb24Ad2luayB3aW5rAA==
s3hIElQAAAAADAAAAHAAAADQAAAAAAAAAAAAAAAAAAABMAAAABAAAAE0AAAAQAAAAUgAAAA8BAABj
AAAABAAAAHMBAAAWAAAAeAEAAABhYsOeAG15Y29udGV4dMOeBGFiw54AUHJvamVjdC1JZC1WZXJz
aW9uOiAyLjAKUE8tUmV2aXNpb24tRGF0ZTogMjAwMy0wNC0xMSAxMjo0Mi0wNDAwCkxhc3QtVHJh
bnNsYXRvcjogQmFycnkgQS4gV0Fyc2F3IDxiYXJyeUBweXRob24ub3JnPgpMYW5ndWFnZS1UZWFt
OiBYWCA8cHl0aG9uLWRldkBweXRob24ub3JnPgpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5
cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog
N2JpdApHZW5lcmF0ZWQtQnk6IG1hbnVhbGx5CgDCpHl6AMKkeXogKGNvbnRleHQgdmVyc2lvbikA
sL3hIElQAAAAABAAAAHAAAACQAAAADAAAALAAAAAAAAAA4AAAAeAEAADkAAAABAAAAAAAAAAAAAAAA
UHJvamVjdC1JZC1WZXJzaW9uOiBObyBQcm9qZWN0IDAuMApQT1QtQ3JlYXRpb24tRGF0ZTogV2Vk
IERlYyAxMSAwNzo0NDoxNSAyMDAyClBPLVJldmlzaW9uLURhdGU6IDIwMDItMDgtMTQgMDE6MTg6
NTgrMDA6MDAKTGFzdC1UcmFuc2xhdG9yOiBKb2huIERvZSA8amRvZUBleGFtcGxlLmNvbT4KSmFu
ZSBGb29iYXIgPGpmb29iYXJAZXhhbXBsZS5jb20+Ckxhbmd1YWdlLVRlYW06IHh4IDx4eEBleGFt
cGxlLmNvbT4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy
c2V0PWlzby04ODU5LTE1CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFi
bGUKR2VuZXJhdGVkLUJ5OiBweWdldHRleHQucHkgMS4zCgA=
�xx�LC_MESSAGESz
gettext.mozgettext_bad_major_version.mozgettext_bad_minor_version.mozugettext.mozmetadata.moc@seZdZdd�Zdd�ZdS)�GettextBaseTestc	Cs�tj�t�st�t�ttd��}|�t�	t
��W5QRXttd��}|�t�	t��W5QRXtt
d��}|�t�	t��W5QRXttd��}|�t�	t��W5QRXttd��}|�t�	t��W5QRXt��|_d|jd<tj��dS)N�wbrZLANGUAGE)�os�path�isdir�	LOCALEDIR�makedirs�open�MOFILE�write�base64�decodebytes�GNU_MO_DATA�MOFILE_BAD_MAJOR_VERSION�GNU_MO_DATA_BAD_MAJOR_VERSION�MOFILE_BAD_MINOR_VERSION�GNU_MO_DATA_BAD_MINOR_VERSION�UMOFILE�UMO_DATA�MMOFILE�MMO_DATArZEnvironmentVarGuard�env�gettext�
_translations�clear��self�fp�r!�6/opt/alt/python38/lib64/python3.8/test/test_gettext.py�setUpws


zGettextBaseTest.setUpcCs(|j��|`t�tj�t�d�dS)Nr)r�__exit__rZrmtreerr�splitr
�rr!r!r"�tearDown�s
zGettextBaseTest.tearDownN)�__name__�
__module__�__qualname__r#r'r!r!r!r"rvsrs�3hIElQAAAAABAAAAHAAAACQAAAAAAAAAAAAAAAAAAAAsAAAAggAAAC0AAAAAUGx1cmFsLUZvcm1z
OiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7CiMtIy0jLSMtIyAgbWVzc2FnZXMucG8gKEVk
WCBTdHVkaW8pICAjLSMtIy0jLSMKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVU
Ri04CgA=
c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�GettextTestCase1cCs0t�|�tj|_t|_tjd|jdgd�dS)Nr�pgettext��names)	rr#r�curdir�	localedirr
�mofiler�installr&r!r!r"r#�s
zGettextTestCase1.setUpcCsB|j}|td�d�|td�d�|td�d�|td�d�dS�NZ	albatross�mullusk�baconzRaymond Luxury Yach-tzThroatwobbler Mangrove�nudge nudge�	wink wink��assertEqual�_�r�eqr!r!r"�test_some_translations�s
z'GettextTestCase1.test_some_translationscCs*|j}|tdd�d�|tdd�d�dS�N�
my contextr6�wink wink (in "my context")�my other context�!wink wink (in "my other context"))r9r,r;r!r!r"�#test_some_translations_with_context�s
�
�z4GettextTestCase1.test_some_translations_with_contextcCsB|j}|td�d�|td�d�|td�d�|td�d�dSr3r8r;r!r!r"�test_double_quotes�s
z#GettextTestCase1.test_double_quotescCsB|j}|td�d�|td�d�|td�d�|td�d�dSr3r8r;r!r!r"�test_triple_single_quotes�s
z*GettextTestCase1.test_triple_single_quotescCsB|j}|td�d�|td�d�|td�d�|td�d�dSr3r8r;r!r!r"�test_triple_double_quotes�s
z*GettextTestCase1.test_triple_double_quotescCs|j}|td�d�dS�Nz�This module provides internationalization and localization
support for your Python programs by providing an interface to the GNU
gettext message catalog library.z�Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba
fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH
trggrkg zrffntr pngnybt yvoenel.r8r;r!r!r"�test_multiline_strings�s�z'GettextTestCase1.test_multiline_stringsc	Cs�|j}t|jd��}t�|�}W5QRX|��|td�d�|��|td�d�ddl}|jddgd	�|t|j�||j|j�|t|j�|`|`dS)
N�rbr6r7r4r5rr�lgettextr-)	r9rr1r�GNUTranslationsr2r:�builtinsrJ)rr<r �trLr!r!r"�test_the_alternative_interface�sz/GettextTestCase1.test_the_alternative_interfaceN)r(r)r*r#r=rCrDrErFrHrNr!r!r!r"r+�s
r+c@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�GettextTestCase2cCs6t�|�tj|_t�d|j�t�d�tj|_dS�Nr)	rr#rr/r0r�bindtextdomain�
textdomainr:r&r!r!r"r#�s


zGettextTestCase2.setUpcCs|�t�d�|j�dSrP)r9rrQr0r&r!r!r"�test_bindtextdomain�sz$GettextTestCase2.test_bindtextdomaincCs|�t��d�dSrP)r9rrRr&r!r!r"�test_textdomain�sz GettextTestCase2.test_textdomainc
Csjttd��V}|�t��}t�|�W5QRX|j}|�|jd�|�|j	d�|�|j
t�W5QRXdS)NrIrzBad version number 5)rr�assertRaises�OSErrorrrK�	exceptionr9�errno�strerror�filename)rr �cmrWr!r!r"�test_bad_major_version�sz'GettextTestCase2.test_bad_major_versionc	Cs$ttd��}t�|�W5QRXdS�NrI)rrrrKrr!r!r"�test_bad_minor_version�sz'GettextTestCase2.test_bad_minor_versioncCsJ|j}||�d�d�||�d�d�||�d�d�||�d�d�dSr3r8r;r!r!r"r=s
z'GettextTestCase2.test_some_translationscCs.|j}|t�dd�d�|t�dd�d�dSr>)r9rr,r;r!r!r"rCs��z4GettextTestCase2.test_some_translations_with_contextcCs2|j}|t�ddd�d�|t�ddd�d�dS)Nrr?r6r@rArB)r9rZ	dpgettextr;r!r!r"�.test_some_translations_with_context_and_domains��z?GettextTestCase2.test_some_translations_with_context_and_domaincCsJ|j}||�d�d�||�d�d�||�d�d�||�d�d�dSr3r8r;r!r!r"rDs
z#GettextTestCase2.test_double_quotescCsJ|j}||�d�d�||�d�d�||�d�d�||�d�d�dSr3r8r;r!r!r"rEs
z*GettextTestCase2.test_triple_single_quotescCsJ|j}||�d�d�||�d�d�||�d�d�||�d�d�dSr3r8r;r!r!r"rF&s
z*GettextTestCase2.test_triple_double_quotescCs|j}||�d�d�dSrGr8r;r!r!r"rH.s
�z'GettextTestCase2.test_multiline_stringsN)r(r)r*r#rSrTr\r^r=rCr_rDrErFrHr!r!r!r"rO�s	
rOc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3S)4�PluralFormsTestCasecCst�|�t|_dS�N�rr#r
r1r&r!r!r"r#:s
zPluralFormsTestCase.setUpcCs:|j}t�ddd�}||d�t�ddd�}||d�dS)N�There is %s file�There are %s files��Hay %s fichero��Hay %s ficheros)r9r�ngettext�rr<�xr!r!r"�test_plural_forms1>s

z&PluralFormsTestCase.test_plural_forms1cCs>|j}t�dddd�}||d�t�dddd�}||d�dS)N�With contextrcrdre�Hay %s fichero (context)rg�Hay %s ficheros (context))r9r�	npgettextrjr!r!r"�test_plural_context_forms1Es�
�z.PluralFormsTestCase.test_plural_context_forms1c	Cs\|j}t|jd��}t�|�}W5QRX|�ddd�}||d�|�ddd�}||d�dS)NrIrcrdrerfrgrh)r9rr1rrKri�rr<r rMrkr!r!r"�test_plural_forms2Ns
z&PluralFormsTestCase.test_plural_forms2c	Cs`|j}t|jd��}t�|�}W5QRX|�dddd�}||d�|�dddd�}||d�dS)	NrIrmrcrdrernrgro)r9rr1rrKrprrr!r!r"�test_plural_context_forms2Ws�
�z.PluralFormsTestCase.test_plural_context_forms2cs:|j}t�d��d��fdd�td�D��}||d�dS)N�0�csg|]}t�|���qSr!��str��.0rk��fr!r"�
<listcomp>gsz/PluralFormsTestCase.test_ja.<locals>.<listcomp>��Z�00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000�r9r�c2py�join�range�rr<�sr!r{r"�test_jads
zPluralFormsTestCase.test_jacs:|j}t�d��d��fdd�td�D��}||d�dS)N�n != 1rvcsg|]}t�|���qSr!rwryr{r!r"r}msz/PluralFormsTestCase.test_de.<locals>.<listcomp>r~Z�10111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111rr�r!r{r"�test_dejs
zPluralFormsTestCase.test_decs:|j}t�d��d��fdd�td�D��}||d�dS)Nzn>1rvcsg|]}t�|���qSr!rwryr{r!r"r}ssz/PluralFormsTestCase.test_fr.<locals>.<listcomp>r~Z�00111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111rr�r!r{r"�test_frps
zPluralFormsTestCase.test_frcs:|j}t�d��d��fdd�td�D��}||d�dS)Nz)n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2rvcsg|]}t�|���qSr!rwryr{r!r"r}ysz/PluralFormsTestCase.test_lv.<locals>.<listcomp>r~Z�20111111111111111111101111111110111111111011111111101111111110111111111011111111101111111110111111111011111111111111111110111111111011111111101111111110111111111011111111101111111110111111111011111111rr�r!r{r"�test_lvvs
zPluralFormsTestCase.test_lvcs:|j}t�d��d��fdd�td�D��}||d�dS)Nzn==1 ? 0 : n==2 ? 1 : 2rvcsg|]}t�|���qSr!rwryr{r!r"r}sz/PluralFormsTestCase.test_gd.<locals>.<listcomp>r~��20122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222rr�r!r{r"�test_gd|s
zPluralFormsTestCase.test_gdcs:|j}t�d��d��fdd�td�D��}||d�dS)Nzn==1 ? 0 : (n==2 ? 1 : 2)rvcsg|]}t�|���qSr!rwryr{r!r"r}�sz0PluralFormsTestCase.test_gd2.<locals>.<listcomp>r~r�rr�r!r{r"�test_gd2�s
zPluralFormsTestCase.test_gd2cs:|j}t�d��d��fdd�td�D��}||d�dS)Nz6n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2rvcsg|]}t�|���qSr!rwryr{r!r"r}�sz/PluralFormsTestCase.test_ro.<locals>.<listcomp>r~Z�10111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222rr�r!r{r"�test_ro�s
zPluralFormsTestCase.test_rocs:|j}t�d��d��fdd�td�D��}||d�dS)NzEn%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2rvcsg|]}t�|���qSr!rwryr{r!r"r}�sz/PluralFormsTestCase.test_lt.<locals>.<listcomp>r~Z�20111111112222222222201111111120111111112011111111201111111120111111112011111111201111111120111111112011111111222222222220111111112011111111201111111120111111112011111111201111111120111111112011111111rr�r!r{r"�test_lt�s
zPluralFormsTestCase.test_ltcs:|j}t�d��d��fdd�td�D��}||d�dS)NzPn%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2rvcsg|]}t�|���qSr!rwryr{r!r"r}�sz/PluralFormsTestCase.test_ru.<locals>.<listcomp>r~Z�20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222rr�r!r{r"�test_ru�s
zPluralFormsTestCase.test_rucs:|j}t�d��d��fdd�td�D��}||d�dS)Nz#(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2rvcsg|]}t�|���qSr!rwryr{r!r"r}�sz/PluralFormsTestCase.test_cs.<locals>.<listcomp>r~Z�20111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222rr�r!r{r"�test_cs�s
zPluralFormsTestCase.test_cscs:|j}t�d��d��fdd�td�D��}||d�dS)Nz@n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2rvcsg|]}t�|���qSr!rwryr{r!r"r}�sz/PluralFormsTestCase.test_pl.<locals>.<listcomp>r~Z�20111222222222222222221112222222111222222211122222221112222222111222222211122222221112222222111222222211122222222222222222111222222211122222221112222222111222222211122222221112222222111222222211122222rr�r!r{r"�test_pl�s
zPluralFormsTestCase.test_plcs:|j}t�d��d��fdd�td�D��}||d�dS)Nz:n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3rvcsg|]}t�|���qSr!rwryr{r!r"r}�sz/PluralFormsTestCase.test_sl.<locals>.<listcomp>r~Z�30122333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333012233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333rr�r!r{r"�test_sl�s
zPluralFormsTestCase.test_slcs:|j}t�d��d��fdd�td�D��}||d�dS)NzNn==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5rvcsg|]}t�|���qSr!rwryr{r!r"r}�sz/PluralFormsTestCase.test_ar.<locals>.<listcomp>r~Z�01233333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445553333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444rr�r!r{r"�test_ar�s
zPluralFormsTestCase.test_arcCs�|j}|ttjd�|ttjd�|ttjd�|ttjddd�|�t�d�d�d	�|ttjd
�|ttjddddd�|�t�d
�d�d�dS)Nzos.chmod('/etc/passwd',0777)z"(eval(foo) && ""zf"{os.system('sh')}"zn+i'�nz�n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+nre�ez�((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((n))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))�(�)z)((((((((((((((((((((n)))))))))))))))))))))rU�
ValueErrorrr�r9)rZraisesr!r!r"�
test_security�sz!PluralFormsTestCase.test_securitycs�t�d��|�d��fdd�td�D��d�t�d��|�d��fdd�td�D��d	�t�d
��|�d��fdd�td�D��d�t�d��|�d��fd
d�td�D��d�dS)Nzn == n == nrvc3s|]}t�|��VqdSrarwryr{r!r"�	<genexpr>�sz>PluralFormsTestCase.test_chained_comparison.<locals>.<genexpr>�Z010z
1 < n == nc3s|]}t�|��VqdSrarwryr{r!r"r��sZ100z
n == n < 2c3s|]}t�|��VqdSrarwryr{r!r"r��sz	0 < n < 2c3s|]}t�|��VqdSrarwryr{r!r"r��sZ111)rr�r9r�r�r&r!r{r"�test_chained_comparison�s
$
$
$
z+PluralFormsTestCase.test_chained_comparisoncCs|�t�d�d�d�dS)NZ0123re�{�r9rr�r&r!r!r"�test_decimal_number�sz'PluralFormsTestCase.test_decimal_numbercCsPddddddddd	d
ddd
ddg}|D]$}|�t��t�|�W5QRXq&dS)Nzx>1z(n>1zn>1)z
42**42**42Z0xaz1.0Z1e2zn>0x1z+nz-nzn()zn(1)z1+Znnzn n)rUr�rr�)rZinvalid_expressions�exprr!r!r"�test_invalid_syntax�s&�z'PluralFormsTestCase.test_invalid_syntaxcCs\|�t�d�d�d�|�t�d�d�d�|�t�d�d�d�|�t�d�d�d�dS)Nz	n?1?2:3:4r�rergz	n?1:3?4:5r�r&r!r!r"�test_nested_condition_operator�sz2PluralFormsTestCase.test_nested_condition_operatorcCs\t�d�}|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�t|d�dS)	Nz2/n*3re�rgr�r���i����)rr�r9rU�ZeroDivisionError�rr|r!r!r"�
test_division�s
z!PluralFormsTestCase.test_divisionc	Cs�t�d�}|�|d�d�|�|d�d�|�t��|�|d�d�W5QRX|�t��|�|d�d�W5QRX|�t��|�|d�d�W5QRX|�t|d�|�t|d	�|�t|g�|�t|t��dS)
Nr�rerrgg�?g@g�������?�2�2)rr�r9�assertWarns�DeprecationWarningrU�	TypeError�objectr�r!r!r"�test_plural_number�s
z&PluralFormsTestCase.test_plural_numberN)r(r)r*r#rlrqrsrtr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r!r!r!r"r`9s2		
	r`c@sjeZdZdd�Zejdd��Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�ZdS)�LGettextTestCasecCst�|�t|_dSrarbr&r!r!r"r#�s
zLGettextTestCase.setUpc	cs*|�td|�d���dVW5QRXdS)N�^z\(\) is deprecated)�assertWarnsRegexr�)r�namer!r!r"�assertDeprecated�s
�z!LGettextTestCase.assertDeprecatedc	Cs�tj}tj}|�d��|�|d�d�W5QRX|�d��|�|d�d�W5QRX|�d��|�|dd�d�W5QRX|�d��|�|dd�d�W5QRXdS)NrJr4�bacon�spam�spam�	ldgettextr)rrJr�r�r9)rrJr�r!r!r"�
test_lgettextszLGettextTestCase.test_lgettextc	Csxt|jd��}t�|�}W5QRX|j}|�d��|�|d�d�W5QRX|�d��|�|d�d�W5QRXdS)NrIrJr4r�r�r�)rr1rrKrJr�r9�rr rMrJr!r!r"�test_lgettext_2sz LGettextTestCase.test_lgettext_2cCs8tj}tj}|�d��t�d�}W5QRXz�|�d��t�dd�W5QRX|�d��|�|d�d�d��W5QRX|�d��|�|d�d�d��W5QRX|�d��|�|dd�d�d��W5QRX|�d��|�|dd�d�d��W5QRXW5tjd=|�d��t�d|�W5QRXXdS)	N�bind_textdomain_codesetr�utf-16rJr4r5r�r�)rrJr�r�r��_localecodesetsr9�encode)rrJr��
saved_codesetr!r!r"�%test_lgettext_bind_textdomain_codesets$  "&z6LGettextTestCase.test_lgettext_bind_textdomain_codesetc	Cs�t|jd��}t�|�}W5QRX|j}|�d��|�d�W5QRX|�d��|�|d�d�d��W5QRX|�d��|�|d�d�d��W5QRXdS)NrI�set_output_charsetr�rJr4r5r�)	rr1rrKrJr�r�r9r�r�r!r!r"�test_lgettext_output_encoding-s z.LGettextTestCase.test_lgettext_output_encodingc	Cs�tj}tj}|�d��|ddd�}W5QRX|�|d�|�d��|ddd�}W5QRX|�|d�|�d��|dd	d�}W5QRX|�|d
�|�d��|dd	d�}W5QRX|�|d�|�d��|d
ddd�}W5QRX|�|d�|�d��|d
ddd�}W5QRX|�|d�|�d��|d
dd	d�}W5QRX|�|d
�|�d��|d
dd	d�}W5QRX|�|d�dS)N�	lngettextrcrdre�Hay %s ficherorg�Hay %s ficheros�There is %s directory�There are %s directories�There is %s directory�There are %s directories�
ldngettextr)rr�r�r�r9)rr�r�rkr!r!r"�test_lngettext8s4zLGettextTestCase.test_lngettextc	Cs�t|jd��}t�|�}W5QRX|j}|�d��|ddd�}W5QRX|�|d�|�d��|ddd�}W5QRX|�|d�|�d��|d	d
d�}W5QRX|�|d�|�d��|d	d
d�}W5QRX|�|d�dS)
NrIr�rcrdrer�rgr�r�r�r�r�)rr1rrKr�r�r9�rr rMr�rkr!r!r"�test_lngettext_2Tsz!LGettextTestCase.test_lngettext_2cCs.tj}tj}|�d��t�d�}W5QRX�z�|�d��t�dd�W5QRX|�d��|ddd�}W5QRX|�|d�d��|�d��|ddd	�}W5QRX|�|d
�d��|�d��|ddd�}W5QRX|�|d�d��|�d��|ddd	�}W5QRX|�|d�d��|�d
��|dddd�}W5QRX|�|d�d��|�d
��|dddd	�}W5QRX|�|d
�d��|�d
��|dddd�}W5QRX|�|d�d��|�d
��|dddd	�}W5QRX|�|d�d��W5tjd=|�d��t�d|�W5QRXXdS)Nr�rr�r�rcrdrerfrgrhr�r�r�)rr�r�r�r�r�r9r�)rr�r�r�rkr!r!r"�&test_lngettext_bind_textdomain_codesetesDz7LGettextTestCase.test_lngettext_bind_textdomain_codesetc	Cst|jd��}t�|�}W5QRX|j}|�d��|�d�W5QRX|�d��|ddd�}W5QRX|�|d�d��|�d��|ddd	�}W5QRX|�|d
�d��|�d��|ddd�}W5QRX|�|d�d��|�d��|ddd	�}W5QRX|�|d�d��dS)
NrIr�r�r�rcrdrerfrgrhr�r�)	rr1rrKr�r�r�r9r�r�r!r!r"�test_lngettext_output_encoding�s"z/LGettextTestCase.test_lngettext_output_encodingc	Cslt|jd��}t�|�}W5QRX|�d��|�d�W5QRX|�d��|�|��d�W5QRXdS)NrIr�r��output_charset)rr1rrKr�r�r9r��rr rMr!r!r"�test_output_encoding�sz%LGettextTestCase.test_output_encodingN)r(r)r*r#�
contextlib�contextmanagerr�r�r�r�r�r�r�r�r�r�r!r!r!r"r��s
	%r�c@seZdZdd�Zdd�ZdS)�GNUTranslationParsingTestc	CsJttd��}|�t�t��W5QRXttd��}t�|�}W5QRXdS)NrrI)rr
rrr�GNU_MO_DATA_ISSUE_17898rrKr�r!r!r"�!test_plural_form_error_issue17898�sz;GNUTranslationParsingTest.test_plural_form_error_issue17898c	Cs^ttd��}|�t�t��W5QRXttd��$}t�|�}|�|�	�dd�W5QRXdS)zuChecks that comments like:

            #-#-#-#-#  messages.po (EdX Studio)  #-#-#-#-#

        are ignored.
        rrIzplural-formsznplurals=2; plural=(n != 1);N)
rr
rrrr�rrKr9�infor�r!r!r"�*test_ignore_comments_in_headers_issue36239�s

zDGNUTranslationParsingTest.test_ignore_comments_in_headers_issue36239N)r(r)r*r�r�r!r!r!r"r��sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�UnicodeTranslationsTestc	CsDt�|�ttd��}t�|�|_W5QRX|jj|_|jj|_dSr])	rr#rrrrKrMr:r,rr!r!r"r#�s


zUnicodeTranslationsTest.setUpcCs|�|�d�t�dS)Nrv)ZassertIsInstancer:rxr&r!r!r"�test_unicode_msgid�sz*UnicodeTranslationsTest.test_unicode_msgidcCs|�|�d�d�dS)N�abÞu¤yzr8r&r!r!r"�test_unicode_msgstr�sz+UnicodeTranslationsTest.test_unicode_msgstrcCs,|�dd�}|�t|t��|�|d�dS)NumycontextÞr�u¤yz (context version))r,�
assertTrue�
isinstancerxr9�rrMr!r!r"�test_unicode_context_msgstr�sz3UnicodeTranslationsTest.test_unicode_context_msgstrN)r(r)r*r#r�r�r�r!r!r!r"r��sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�UnicodeTranslationsPluralTestc	CsDt�|�ttd��}t�|�|_W5QRX|jj|_|jj|_dSr])	rr#rr
rrKrMrirprr!r!r"r#�s


z#UnicodeTranslationsPluralTest.setUpcCs:|j}|t|�ddd�t��|t|�ddd�t��dS�Nrvrerg)r�r�rirx�r�unlessr!r!r"r��sz0UnicodeTranslationsPluralTest.test_unicode_msgidcCs>|j}|t|�dddd�t��|t|�dddd�t��dSr�)r�r�rprxr�r!r!r"�test_unicode_context_msgid�sz8UnicodeTranslationsPluralTest.test_unicode_context_msgidcCsj|j}|j}|�ddd�}|t|t��||d�|t|t��|�ddd�}|t|t��||d�dS)Nrcrdrerf�rh)r9r�rir�rx�rr<r�rMr!r!r"r��s
z1UnicodeTranslationsPluralTest.test_unicode_msgstrcCs`|j}|j}|�dddd�}|t|t��||d�|�dddd�}|t|t��||d�dS)Nrmrcrdrernr�ro)r9r�rpr�rxr�r!r!r"� test_unicode_msgstr_with_context�s �
�z>UnicodeTranslationsPluralTest.test_unicode_msgstr_with_contextN)r(r)r*r#r�r�r�r�r!r!r!r"r��s
r�c@seZdZdd�Zdd�ZdS)�WeirdMetadataTestc	CsLt�|�ttd��.}zt�|�|_Wn|���YnXW5QRXdSr])rr#rrrrKrMr'rr!r!r"r#�s
zWeirdMetadataTest.setUpcCs.|j��}|�t|�d�|�|dd�dS)N�	zlast-translatorz=John Doe <jdoe@example.com>
Jane Foobar <jfoobar@example.com>)rMr�r9�len)rr�r!r!r"�test_weird_metadatas


�z%WeirdMetadataTest.test_weird_metadataN)r(r)r*r#r�r!r!r!r"r��s	r�c@seZdZdd�ZdS)�DummyGNUTranslationscCsdS)N�foor!r&r!r!r"r�szDummyGNUTranslations.fooN)r(r)r*r�r!r!r!r"r�sr�c@seZdZdd�ZdS)�GettextCacheTestCasec	Cstj|_t|_|�ttj�d�t�	d|j�}|�ttj�d�tj	d|jt
d�}|�ttj�d�|�|jt
�tj	d|jt
d�}|�ttj�d�|�|jt
�|�t
d��tj	d|jt
dd�}W5QRX|�ttj�d�|�|jt
�|�t
��|�|��d�W5QRXdS)	Nrrre)�class_rgzparameter codesetr�)r�Zcodeset)rr/r0r
r1r9r�rrZtranslationr��	__class__r�r�r�r�r�r!r!r"�
test_caches0
�
�
�zGettextCacheTestCase.test_cacheN)r(r)r*r�r!r!r!r"r�sr�c@seZdZdd�ZdS)�MiscTestCasecCsddh}tj|t|d�dS)Nr�ZENOENT)�	blacklist)rZcheck__all__r)rr�r!r!r"�test__all__5szMiscTestCase.test__all__N)r(r)r*r�r!r!r!r"r�4sr��__main__)%rrr�rZunittestZtestrrrrrrrr�r
r
rrrrZTestCaserr�r+rOr`r�r�r�r�r�rKr�r�r�r(�mainr!r!r!r"�<module>sF	
MX@/*$