
    qi                     F    d dl Z d dlZd dlZd dlmZ d Zd Zd Zd Zd Z	y)    N)
filestringc                     | dz  }|j                          |dz  }|j                  d       t        t        |      t        |            }|dk(  sJ y)z/filestring should read files inside allowed_dirallowedzexample.txtzhello worldallowed_dirN)mkdir
write_textr   str)tmp_pathr   foutputs       S/opt/pipecat/venv/lib/python3.12/site-packages/nltk/test/test_filestring_sandbox.pytest_reads_allowed_filer   	   sQ    Y&Km#ALLAC,<=F]"""    c                    | dz  }|j                          | dz  }|j                  d       t        |dz  dz        }t        j                  t
              5  t        |t        |             ddd       y# 1 sw Y   yxY w)z.filestring should block ../ traversal attemptsr   z
secret.txt	topsecretz..r   N)r   r	   r
   pytestraisesPermissionErrorr   )r   r   secrettraversal_paths       r   test_rejects_parent_traversalr      sq    "GMMO$F
k" 4,67N		' =>s7|<= = =s   A66A?c                 v   | dz  }|j                          | dz  }|j                  d       |dz  }	 |j                  |       t        j                  t              5  t        t        |      t        |             ddd       y# t        t        f$ r t        j                  d       Y hw xY w# 1 sw Y   yxY w)z<filestring should block symlink pointing outside allowed_dirr   zoutside.txtzhidden-datazlink.txtz/Symlink creation not supported on this platformr   N)r   r	   
symlink_toOSErrorNotImplementedErrorr   skipr   r   r   r
   )r   r   outsidelinks       r   test_rejects_symlink_escaper    $   s    "GMMO&G}%ZDG  
	' 83t9#g,78 8 () GEFG8 8s   B  B/$B,+B,/B8c                  N    t        j                  d      } t        |       dk(  sJ y)zBfilestring should maintain legacy behavior for stream-like objectszstream-dataN)ioStringIOr   )streams    r    test_preserves_file_like_objectsr%   8   s#    [['Ff...r   c                     | dz  }|j                          |dz  }|j                  d       t        t        |      t        |            }t	        |t              sJ d|v sJ y)z=filestring should tolerate decoding errors when reading filesr   z
latin1.txts   cafr   cafN)r   write_bytesr   r
   
isinstance)r   r   r   r   s       r   test_encoding_fallbackr*   >   s[    "GMMO,AMM*ACL9Ffc"""F??r   )
r"   osr   	nltk.utilr   r   r   r    r%   r*    r   r   <module>r.      s*    	 	   	#=8(/
r   