File: //lib/python3.10/test/support/__pycache__/os_helper.cpython-310.pyc
o
    E�h�M  �                	   @   s  d dl Zd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
ejdkr0dZndZd�
ee�� �Zed ZejdkrMd dlZe�de�ZdZejd	kre�� jd
kr~ed Zz	e�e�� � W n	 eyq   Y n1w edee�� f � dZn#ejdkr�z	d
�e�� � W n ey�   ed�e�� d� ZY nw 	 dZdD ]Zze�e�e��ekr�e�W n	 ey�   Y q�w eZ e� � Z!dZ"dD ]Zz	e�e�� � W q� ey�   e�e�e Z"Y  nw er�ee Z#ndZ#e#p�eZ$dd� Z%da&dd� Z'dd� Z(da)dd� Z*dd� Z+dd� Z,ej�-d��r.dGd!d"�Z.d#d$� Z/d%d&� Z0d'd(� Z1d)d*� Z2nej,Z/ej3Z0d+d(� Z1d,d*� Z2d-d.� Z3d/d0� Z4ej5dHd1d2��Z6ej5dGd3d4��Z7ej5dId6d7��Z8d8d9� Z9ej5d:d;� �Z:d<d=� Z;G d>d?� d?�Z<d@dA� Z=e>edB��r�ej5dCdD� �Z?G dEdF� dFej@jA�ZBdS )J�    N�javaz$testz@testz	{}_{}_tmpu   -àòɘŁğ�darwin�NFD�nt�   u   -共Ł♡ͣ�ztWARNING: The filename %r CAN be encoded by the filesystem encoding (%s). Unicode filename tests may not be effective�   �s   -��surrogateescape� )�   æu   İu   Łu   φu   Кu   אu   ،u   تu   ก�    u   €)s   �w�r   s   ���s   �s   ��c                  C   s8   t td�} z
| �� W | ��  tt� S | ��  tt� w )z`
    Create an invalid file descriptor by opening and closing a file and return
    its fd.
    �wb)�open�TESTFN�fileno�close�unlink��file� r   �-/usr/lib/python3.10/test/support/os_helper.py�make_bad_fd�   s   
�
r   c               
   C   s^   t d urt S td } z
t�t| � d}W n tttfy%   d}Y |a |S w t�| � |a |S )N�can_symlinkTF)�_can_symlinkr   �os�symlink�OSError�NotImplementedError�AttributeError�remove)�symlink_path�canr   r   r   r   �   s   �
r   c                 C   �    t � }d}|r	| S t�|�| �S )z8Skip decorator for tests that require functional symlinkz*Requires functional symlink implementation)r   �unittest�skip��test�ok�msgr   r   r   �skip_unless_symlink�   �   r(   c            	   	   C   sL  dd l } td ur
tS ttd�sd}|a|S dd l}| �� }| j|d�\}}zsttd��D}z0t�	|dd� t�	|dd	� t�	|�
� dd� |�� }t�
d
|�}|d u pZt|�d��dk}W n tyg   d}Y nw W d   � n1 srw   Y  W tt� t|� t|� |a|S W tt� t|� t|� |a|S tt� t|� t|� w )
Nr   �setxattrF��dirr   s	   user.test�    s   trusted.foos   42z
2.6.(\d{1,2})�   �'